5cdb241a73
- Add main-fix-starting-gnome-session-via-startx.patch: fix starting GNOME when using startx or old display managers (bgo#764379). OBS-URL: https://build.opensuse.org/request/show/382563 OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/gnome-session?expand=0&rev=229
67 lines
2.6 KiB
Diff
67 lines
2.6 KiB
Diff
From 2d2dcf3354701aa663d08e8337c608e245a9f2c1 Mon Sep 17 00:00:00 2001
|
|
From: Andreas Henriksson <andreas@fatal.se>
|
|
Date: Wed, 30 Mar 2016 18:49:15 +0200
|
|
Subject: [PATCH] main: fix starting gnome session via startx
|
|
|
|
The changes related to gsm_util_setenv during 3.19.x seems to have
|
|
broken starting a gnome desktop the old fashioned way, eg. via startx.
|
|
|
|
The gnome.session required components has OnlyShowIn=GNOME; which
|
|
disqualifies them from being started unless XDG_CURRENT_DESKTOP is also
|
|
set to GNOME (by the gio utility function used to look up info).
|
|
|
|
Currently gnome-session already carries code to catch the case of
|
|
XDG_CURRENT_DESKTOP being unset and set it to GNOME as a fallback.
|
|
Unfortunately the changes to gsm_util_setenv seems to have made it only
|
|
set the values in the (dbus activated) child environment, rather than
|
|
the current environment which g_desktop_app_info_get_show_in is looking
|
|
at.
|
|
|
|
Make the fallback code set XDG_CURRENT_DESKTOP in both current
|
|
and child environment fixes it.
|
|
Also move the entire hunk of code before initializing gio to
|
|
prevent potential thread issues, now that is uses g_setenv.
|
|
|
|
https://bugzilla.gnome.org/show_bug.cgi?id=764379
|
|
---
|
|
gnome-session/main.c | 16 +++++++++-------
|
|
1 file changed, 9 insertions(+), 7 deletions(-)
|
|
|
|
diff --git a/gnome-session/main.c b/gnome-session/main.c
|
|
index 14b201b..9f3ca0f 100644
|
|
--- a/gnome-session/main.c
|
|
+++ b/gnome-session/main.c
|
|
@@ -292,6 +292,15 @@ main (int argc, char **argv)
|
|
gsm_util_init_error (TRUE, "%s", error->message);
|
|
}
|
|
|
|
+ /* From 3.14 GDM sets XDG_CURRENT_DESKTOP. For compatibility with
|
|
+ * older versions of GDM, other display managers, and startx,
|
|
+ * set a fallback value if we don't find it set.
|
|
+ */
|
|
+ if (g_getenv ("XDG_CURRENT_DESKTOP") == NULL) {
|
|
+ g_setenv("XDG_CURRENT_DESKTOP", "GNOME", TRUE);
|
|
+ gsm_util_setenv ("XDG_CURRENT_DESKTOP", "GNOME");
|
|
+ }
|
|
+
|
|
/* Make sure we initialize gio in a way that does not autostart any daemon */
|
|
initialize_gio ();
|
|
|
|
@@ -375,13 +384,6 @@ main (int argc, char **argv)
|
|
exit (1);
|
|
}
|
|
|
|
- /* From 3.14 GDM sets XDG_CURRENT_DESKTOP. For compatibility with
|
|
- * older versions of GDM, other display managers, and startx,
|
|
- * set a fallback value if we don't find it set.
|
|
- */
|
|
- if (g_getenv ("XDG_CURRENT_DESKTOP") == NULL)
|
|
- gsm_util_setenv ("XDG_CURRENT_DESKTOP", "GNOME");
|
|
-
|
|
/* Push locale variables to dbus-daemon */
|
|
maybe_push_env_var ("LC_TIME");
|
|
maybe_push_env_var ("LC_NUMERIC");
|
|
--
|
|
2.6.2
|
|
|