diff --git a/src/core/meta-launch-context.c b/src/core/meta-launch-context.c index 984338c1b..8cc052452 100644 --- a/src/core/meta-launch-context.c +++ b/src/core/meta-launch-context.c @@ -114,7 +114,7 @@ meta_launch_context_constructed (GObject *object) G_OBJECT_CLASS (meta_launch_context_parent_class)->constructed (object); - x11_display = getenv ("DISPLAY"); + x11_display = meta_x11_get_display_name (); wayland_display = getenv ("WAYLAND_DISPLAY"); if (x11_display) diff --git a/src/x11/meta-x11-display-private.h b/src/x11/meta-x11-display-private.h index 3f545ce28..1b38e3c30 100644 --- a/src/x11/meta-x11-display-private.h +++ b/src/x11/meta-x11-display-private.h @@ -249,4 +249,6 @@ void meta_x11_display_set_input_focus (MetaX11Display *x11_display, Window xwindow, guint32 timestamp); +const gchar * meta_x11_get_display_name (void); + #endif /* META_X11_DISPLAY_PRIVATE_H */ diff --git a/src/x11/meta-x11-display.c b/src/x11/meta-x11-display.c index e9428e54d..def878d2c 100644 --- a/src/x11/meta-x11-display.c +++ b/src/x11/meta-x11-display.c @@ -988,6 +988,25 @@ meta_set_gnome_wm_keybindings (const char *wm_keybindings) gnome_wm_keybindings = wm_keybindings; } +const gchar * +meta_x11_get_display_name (void) +{ +#ifdef HAVE_WAYLAND + if (meta_is_wayland_compositor ()) + { + MetaWaylandCompositor *compositor; + + compositor = meta_wayland_compositor_get_default (); + + return meta_wayland_get_xwayland_display_name (compositor); + } + else +#endif + { + return g_getenv ("DISPLAY"); + } +} + gboolean meta_x11_init_gdk_display (GError **error) { @@ -996,7 +1015,7 @@ meta_x11_init_gdk_display (GError **error) const char *gdk_gl_env = NULL; Display *xdisplay; - xdisplay_name = g_getenv ("DISPLAY"); + xdisplay_name = meta_x11_get_display_name (); if (!xdisplay_name) { g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,