diff options
author | Dima Ryazanov <dima@gmail.com> | 2015-08-12 19:34:31 -0700 |
---|---|---|
committer | Pekka Paalanen <pekka.paalanen@collabora.co.uk> | 2015-08-14 10:14:05 +0300 |
commit | fb7e13021730d0a5516ecbd3712ea4235e05d24d (patch) | |
tree | 61caa1d4d04b7a99a8a5d5bd9a56ee1340d32600 /doc | |
parent | 441f9bb144efd561f0ac4bc4e672acc9703b5126 (diff) |
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>
Diffstat (limited to 'doc')
-rw-r--r-- | doc/man/wl_display_connect.xml | 5 | ||||
-rw-r--r-- | doc/publican/sources/Protocol.xml | 8 |
2 files changed, 6 insertions, 7 deletions
diff --git a/doc/man/wl_display_connect.xml b/doc/man/wl_display_connect.xml index 7e6e05c..ded3cbd 100644 --- a/doc/man/wl_display_connect.xml +++ b/doc/man/wl_display_connect.xml @@ -57,9 +57,8 @@ that was previously opened by a Wayland server. The server socket must be placed in <envar>XDG_RUNTIME_DIR</envar> for this function to find it. The <varname>name</varname> argument specifies the name of - the socket or <constant>NULL</constant> to use the default (which is - <constant>"wayland-0"</constant>). The environment variable - <envar>WAYLAND_DISPLAY</envar> replaces the default value. If + the socket or <constant>NULL</constant> to use the default + (which is the value of <envar>WAYLAND_DISPLAY</envar>). If <envar>WAYLAND_SOCKET</envar> is set, this function behaves like <function>wl_display_connect_to_fd</function> with the file-descriptor number taken from the environment variable.</para> diff --git a/doc/publican/sources/Protocol.xml b/doc/publican/sources/Protocol.xml index 477063b..9464953 100644 --- a/doc/publican/sources/Protocol.xml +++ b/doc/publican/sources/Protocol.xml @@ -60,10 +60,10 @@ <title>Wire Format</title> <para> The protocol is sent over a UNIX domain stream socket, where the endpoint - usually is named <systemitem class="service">wayland-0</systemitem> - (although it can be changed via <emphasis>WAYLAND_DISPLAY</emphasis> - in the environment). The protocol is message-based. A - message sent by a client to the server is called request. A message + name is determined by the <emphasis>WAYLAND_DISPLAY</emphasis> + environment variable. Its value will usually be + <systemitem class="service">wayland-0</systemitem>. The protocol is message-based. + A message sent by a client to the server is called request. A message from the server to a client is called event. Every message is structured as 32-bit words, values are represented in the host's byte-order. |