Blame SOURCES/fix-language-chooser.patch

9fa8e4
From 2d6d95e4e90fae014fc5615ab39fe64ba49d9a29 Mon Sep 17 00:00:00 2001
9fa8e4
From: Ray Strode <rstrode@redhat.com>
9fa8e4
Date: Thu, 21 Jan 2016 10:27:58 -0500
9fa8e4
Subject: [PATCH] session: make sure greeter is GNOME session even if gnome
9fa8e4
 isn't installed
9fa8e4
9fa8e4
We figure out the XDG_CURRENT_DESKTOP by looking at the session that's
9fa8e4
use for login.  For the greeter, we don't use a session, at all, but
9fa8e4
instead a directly specified program.  Still, we're determining the
9fa8e4
XDG_CURRENT_DESKTOP for the greeter based on what default session
9fa8e4
gets picked.  On KDE only setups, the greeter will get marked as
9fa8e4
a KDE session which will prevent gnome-settings-daemon from starting
9fa8e4
properly.
9fa8e4
9fa8e4
This commit changes the code so that greeter sessions, don't rely
9fa8e4
on the default session desktop file.
9fa8e4
9fa8e4
https://bugzilla.gnome.org/show_bug.cgi?id=760943
9fa8e4
---
9fa8e4
 daemon/gdm-session.c | 24 +++++++++++++++---------
9fa8e4
 1 file changed, 15 insertions(+), 9 deletions(-)
9fa8e4
9fa8e4
diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c
9fa8e4
index 647db86..ae94999 100644
9fa8e4
--- a/daemon/gdm-session.c
9fa8e4
+++ b/daemon/gdm-session.c
9fa8e4
@@ -2502,60 +2502,64 @@ get_session_name (GdmSession *self)
9fa8e4
 
9fa8e4
         return get_default_session_name (self);
9fa8e4
 }
9fa8e4
 
9fa8e4
 static char *
9fa8e4
 get_session_command (GdmSession *self)
9fa8e4
 {
9fa8e4
         gboolean    res;
9fa8e4
         char       *command;
9fa8e4
         const char *session_name;
9fa8e4
 
9fa8e4
         session_name = get_session_name (self);
9fa8e4
 
9fa8e4
         command = NULL;
9fa8e4
         res = get_session_command_for_name (session_name, &command);
9fa8e4
         if (! res) {
9fa8e4
                 g_critical ("Cannot find a command for specified session: %s", session_name);
9fa8e4
                 exit (1);
9fa8e4
         }
9fa8e4
 
9fa8e4
         return command;
9fa8e4
 }
9fa8e4
 
9fa8e4
 static gchar *
9fa8e4
 get_session_desktop_names (GdmSession *self)
9fa8e4
 {
9fa8e4
         gchar *filename;
9fa8e4
         GKeyFile *keyfile;
9fa8e4
         gchar *desktop_names = NULL;
9fa8e4
 
9fa8e4
+        if (self->priv->selected_program != NULL) {
9fa8e4
+                return g_strdup ("GNOME-Greeter:GNOME");
9fa8e4
+        }
9fa8e4
+
9fa8e4
         filename = g_strdup_printf ("%s.desktop", get_session_name (self));
9fa8e4
         keyfile = load_key_file_for_file (filename, NULL);
9fa8e4
         if (keyfile != NULL) {
9fa8e4
               gchar **names;
9fa8e4
 
9fa8e4
               names = g_key_file_get_string_list (keyfile, G_KEY_FILE_DESKTOP_GROUP,
9fa8e4
                                                   "DesktopNames", NULL, NULL);
9fa8e4
               if (names != NULL) {
9fa8e4
                       desktop_names = g_strjoinv (":", names);
9fa8e4
 
9fa8e4
                       g_strfreev (names);
9fa8e4
               }
9fa8e4
         }
9fa8e4
 
9fa8e4
         g_key_file_free (keyfile);
9fa8e4
         g_free (filename);
9fa8e4
         return desktop_names;
9fa8e4
 }
9fa8e4
 
9fa8e4
 void
9fa8e4
 gdm_session_set_environment_variable (GdmSession *self,
9fa8e4
                                       const char *key,
9fa8e4
                                       const char *value)
9fa8e4
 {
9fa8e4
         g_return_if_fail (key != NULL);
9fa8e4
         g_return_if_fail (value != NULL);
9fa8e4
 
9fa8e4
         g_hash_table_replace (self->priv->environment,
9fa8e4
                               g_strdup (key),
9fa8e4
                               g_strdup (value));
9fa8e4
@@ -2565,69 +2569,71 @@ static void
9fa8e4
 set_up_session_language (GdmSession *self)
9fa8e4
 {
9fa8e4
         char **environment;
9fa8e4
         int i;
9fa8e4
         const char *value;
9fa8e4
 
9fa8e4
         environment = g_listenv ();
9fa8e4
         for (i = 0; environment[i] != NULL; i++) {
9fa8e4
                 if (strcmp (environment[i], "LANG") != 0 &&
9fa8e4
                     strcmp (environment[i], "LANGUAGE") != 0 &&
9fa8e4
                     !g_str_has_prefix (environment[i], "LC_")) {
9fa8e4
                     continue;
9fa8e4
                 }
9fa8e4
 
9fa8e4
                 value = g_getenv (environment[i]);
9fa8e4
 
9fa8e4
                 gdm_session_set_environment_variable (self,
9fa8e4
                                                       environment[i],
9fa8e4
                                                       value);
9fa8e4
         }
9fa8e4
         g_strfreev (environment);
9fa8e4
 }
9fa8e4
 
9fa8e4
 static void
9fa8e4
 set_up_session_environment (GdmSession *self)
9fa8e4
 {
9fa8e4
         GdmSessionDisplayMode display_mode;
9fa8e4
         gchar *desktop_names;
9fa8e4
         char *locale;
9fa8e4
 
9fa8e4
-        gdm_session_set_environment_variable (self,
9fa8e4
-                                              "GDMSESSION",
9fa8e4
-                                              get_session_name (self));
9fa8e4
-        gdm_session_set_environment_variable (self,
9fa8e4
-                                              "DESKTOP_SESSION",
9fa8e4
-                                              get_session_name (self));
9fa8e4
-        gdm_session_set_environment_variable (self,
9fa8e4
-                                              "XDG_SESSION_DESKTOP",
9fa8e4
-                                              get_session_name (self));
9fa8e4
+        if (self->priv->selected_program == NULL) {
9fa8e4
+                gdm_session_set_environment_variable (self,
9fa8e4
+                                                      "GDMSESSION",
9fa8e4
+                                                      get_session_name (self));
9fa8e4
+                gdm_session_set_environment_variable (self,
9fa8e4
+                                                      "DESKTOP_SESSION",
9fa8e4
+                                                      get_session_name (self));
9fa8e4
+                gdm_session_set_environment_variable (self,
9fa8e4
+                                                      "XDG_SESSION_DESKTOP",
9fa8e4
+                                                      get_session_name (self));
9fa8e4
+        }
9fa8e4
 
9fa8e4
         desktop_names = get_session_desktop_names (self);
9fa8e4
         if (desktop_names != NULL) {
9fa8e4
                 gdm_session_set_environment_variable (self, "XDG_CURRENT_DESKTOP", desktop_names);
9fa8e4
         }
9fa8e4
 
9fa8e4
         set_up_session_language (self);
9fa8e4
 
9fa8e4
         locale = g_strdup (get_default_language_name (self));
9fa8e4
 
9fa8e4
         if (locale != NULL && locale[0] != '\0') {
9fa8e4
                 gdm_session_set_environment_variable (self,
9fa8e4
                                                       "LANG",
9fa8e4
                                                       locale);
9fa8e4
                 gdm_session_set_environment_variable (self,
9fa8e4
                                                       "GDM_LANG",
9fa8e4
                                                       locale);
9fa8e4
         }
9fa8e4
 
9fa8e4
         g_free (locale);
9fa8e4
 
9fa8e4
         display_mode = gdm_session_get_display_mode (self);
9fa8e4
         if (display_mode == GDM_SESSION_DISPLAY_MODE_REUSE_VT) {
9fa8e4
                 gdm_session_set_environment_variable (self,
9fa8e4
                                                       "DISPLAY",
9fa8e4
                                                       self->priv->display_name);
9fa8e4
 
9fa8e4
                 if (self->priv->user_x11_authority_file != NULL) {
9fa8e4
                         gdm_session_set_environment_variable (self,
9fa8e4
                                                               "XAUTHORITY",
9fa8e4
-- 
9fa8e4
2.8.1
9fa8e4