[gdm] session: make sure greeter is GNOME session even if gnome isn't installed



commit 7a84ef5a1d97fb1ca4ce39958c64abf1ce9e2485
Author: Ray Strode <rstrode redhat com>
Date:   Thu Jan 21 10:27:58 2016 -0500

    session: make sure greeter is GNOME session even if gnome isn't installed
    
    We figure out the XDG_CURRENT_DESKTOP by looking at the session that's
    use for login.  For the greeter, we don't use a session, at all, but
    instead a directly specified program.  Still, we're determining the
    XDG_CURRENT_DESKTOP for the greeter based on what default session
    gets picked.  On KDE only setups, the greeter will get marked as
    a KDE session which will prevent gnome-settings-daemon from starting
    properly.
    
    This commit changes the code so that greeter sessions, don't rely
    on the default session desktop file.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=760943

 daemon/gdm-session.c |   24 +++++++++++++++---------
 1 files changed, 15 insertions(+), 9 deletions(-)
---
diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c
index 4765a6b..218ee78 100644
--- a/daemon/gdm-session.c
+++ b/daemon/gdm-session.c
@@ -2433,6 +2433,10 @@ get_session_desktop_names (GdmSession *self)
         GKeyFile *keyfile;
         gchar *desktop_names = NULL;
 
+        if (self->priv->selected_program != NULL) {
+                return g_strdup ("GNOME-Greeter:GNOME");
+        }
+
         filename = g_strdup_printf ("%s.desktop", get_session_name (self));
         g_debug ("GdmSession: getting desktop names for file '%s'", filename);
         keyfile = load_key_file_for_file (self, filename, NULL);
@@ -2497,15 +2501,17 @@ set_up_session_environment (GdmSession *self)
         gchar *desktop_names;
         char *locale;
 
-        gdm_session_set_environment_variable (self,
-                                              "GDMSESSION",
-                                              get_session_name (self));
-        gdm_session_set_environment_variable (self,
-                                              "DESKTOP_SESSION",
-                                              get_session_name (self));
-        gdm_session_set_environment_variable (self,
-                                              "XDG_SESSION_DESKTOP",
-                                              get_session_name (self));
+        if (self->priv->selected_program == NULL) {
+                gdm_session_set_environment_variable (self,
+                                                      "GDMSESSION",
+                                                      get_session_name (self));
+                gdm_session_set_environment_variable (self,
+                                                      "DESKTOP_SESSION",
+                                                      get_session_name (self));
+                gdm_session_set_environment_variable (self,
+                                                      "XDG_SESSION_DESKTOP",
+                                                      get_session_name (self));
+        }
 
         desktop_names = get_session_desktop_names (self);
         if (desktop_names != NULL) {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]