summaryrefslogtreecommitdiff
path: root/daemon/gdm-session.c
diff options
context:
space:
mode:
authorRay Strode <rstrode@redhat.com>2016-01-21 10:27:58 -0500
committerRay Strode <rstrode@redhat.com>2016-01-21 10:30:34 -0500
commit7a84ef5a1d97fb1ca4ce39958c64abf1ce9e2485 (patch)
treece6e1c150784da70644137fa1acb92a0f54da57b /daemon/gdm-session.c
parentbf76dfbf377cb7e4c64cd35895982a6845f1e32b (diff)
downloadgdm-7a84ef5a1d97fb1ca4ce39958c64abf1ce9e2485.tar.gz
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
Diffstat (limited to 'daemon/gdm-session.c')
-rw-r--r--daemon/gdm-session.c24
1 files changed, 15 insertions, 9 deletions
diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c
index 4765a6b5..218ee784 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) {