From 5cdb241a736f682601318810300d632549f51cc475fb882316dbfdafa6655cc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Lie?= Date: Thu, 31 Mar 2016 15:59:11 +0000 Subject: [PATCH] Accepting request 382563 from home:fcrozat:branches:GNOME:Factory - 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 --- gnome-session.changes | 7 ++ gnome-session.spec | 3 + ...ix-starting-gnome-session-via-startx.patch | 66 +++++++++++++++++++ 3 files changed, 76 insertions(+) create mode 100644 main-fix-starting-gnome-session-via-startx.patch diff --git a/gnome-session.changes b/gnome-session.changes index b6bd95f..2976744 100644 --- a/gnome-session.changes +++ b/gnome-session.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Thu Mar 31 13:31:10 UTC 2016 - fcrozat@suse.com + +- Add main-fix-starting-gnome-session-via-startx.patch: fix + starting GNOME when using startx or old display managers + (bgo#764379). + ------------------------------------------------------------------- Sat Mar 26 23:31:16 UTC 2016 - zaitor@opensuse.org diff --git a/gnome-session.spec b/gnome-session.spec index f427d9d..81b82fb 100644 --- a/gnome-session.spec +++ b/gnome-session.spec @@ -28,6 +28,8 @@ Source1: gnome Source2: gnome.desktop # PATCH-FIX-UPSTREAM gnome-session-ice-auth-for-suid.patch hpj@novell.com -- Carries ICE auth over to other UIDs in this session using an env var. Patch0: gnome-session-ice-auth-for-suid.patch +# PATCH-FIX-UPSTREAM main-fix-starting-gnome-session-via-startx.patch bgo#764379 fcrozat@suse.com -- Fix starting gnome-session with old DM or startx +Patch1: main-fix-starting-gnome-session-via-startx.patch BuildRequires: fdupes BuildRequires: gnome-common BuildRequires: hicolor-icon-theme @@ -113,6 +115,7 @@ functional GNOME desktop. # Disabled, as it fails #translation-update-upstream %patch0 -p1 +%patch1 -p1 %build NOCONFIGURE=1 gnome-autogen.sh diff --git a/main-fix-starting-gnome-session-via-startx.patch b/main-fix-starting-gnome-session-via-startx.patch new file mode 100644 index 0000000..19780b0 --- /dev/null +++ b/main-fix-starting-gnome-session-via-startx.patch @@ -0,0 +1,66 @@ +From 2d2dcf3354701aa663d08e8337c608e245a9f2c1 Mon Sep 17 00:00:00 2001 +From: Andreas Henriksson +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 +