diff options
author | Ray Strode <rstrode@redhat.com> | 2016-01-21 10:27:58 -0500 |
---|---|---|
committer | Ray Strode <rstrode@redhat.com> | 2016-01-21 10:30:34 -0500 |
commit | 7a84ef5a1d97fb1ca4ce39958c64abf1ce9e2485 (patch) | |
tree | ce6e1c150784da70644137fa1acb92a0f54da57b | |
parent | bf76dfbf377cb7e4c64cd35895982a6845f1e32b (diff) | |
download | gdm-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
-rw-r--r-- | 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 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) { |