[gnome-session/gnome-3-20] main: fix starting gnome session via startx
- From: Andreas Henriksson <ah src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-session/gnome-3-20] main: fix starting gnome session via startx
- Date: Thu, 31 Mar 2016 08:11:36 +0000 (UTC)
commit 2d2dcf3354701aa663d08e8337c608e245a9f2c1
Author: Andreas Henriksson <andreas fatal se>
Date: Wed Mar 30 18:49:15 2016 +0200
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 files 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");
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]