client: require WAYLAND_DISPLAY to be set
authorDima Ryazanov <dima@gmail.com>
Thu, 13 Aug 2015 02:34:31 +0000 (19:34 -0700)
committerPekka Paalanen <pekka.paalanen@collabora.co.uk>
Fri, 14 Aug 2015 07:14:05 +0000 (10:14 +0300)
commitfb7e13021730d0a5516ecbd3712ea4235e05d24d
tree61caa1d4d04b7a99a8a5d5bd9a56ee1340d32600
parent441f9bb144efd561f0ac4bc4e672acc9703b5126
client: require WAYLAND_DISPLAY to be set

Although defaulting to wayland-0 seems convenient, it has an undesirable
side effect: clients may unintentionally connect to the wrong compositor.
Generally, it's safer to fail instead. Here's a real example:

In Fedora 22, Gtk+ prefers Wayland over X11, though the default session is still
a normal X11 Gnome session. When you launch a Gtk+ app, it will try Wayland,
fail, then try X11, and succesfully start up. That works fine.

Now suppose you launch Weston while running the Gnome session. Suddenly, all
of the Gtk+ apps launched from Gnome will show up inside Weston instead.
That's unexpected. There's also no good way to prevent that from happening
(other than perhaps setting WAYLAND_DISPLAY to an invalid value when launching
an app).

Not using wayland-0 as the default will solve that problem: an app launched
from the X11 Gnome session will use the X11 backend regardless of whether
there's a wayland compositor running at the same time.

Everything else should work as before. The compositor already sets
the WAYLAND_DISPLAY when starting the session, so the lack of the default value
should not make a difference to the user.

Signed-off-by: Dima Ryazanov <dima@gmail.com>
Acked-by: Pekka Paalanen <ppaalanen@gmail.com>
Acked-by: Giulio Camuffo <giuliocamuffo@gmail.com>
Acked-by: Daniel Stone <daniel@fooishbar.org>
Acked-by: Jasper St. Pierre <jstpierre@mecheye.net>
Reviewed-by: Ryo Munakata <ryomnktml@gmail.com>
[Pekka: dropped the wayland-server.c hunk, adjusted summary]

Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.co.uk>
doc/man/wl_display_connect.xml
doc/publican/sources/Protocol.xml
src/wayland-client.c