diff options
author | Sean Davis <bluesabre@users.noreply.github.com> | 2022-07-26 05:40:42 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-26 05:40:42 -0400 |
commit | 288e8834f15493afb81d51b51835b7e419b10b9f (patch) | |
tree | 0d5c1b4f89ad562fb4cd3f479e7b9172c44fb1f6 /src/lightdm-gtk-greeter.c | |
parent | e0988e3f1ccb7522933eae8318956b26b97085b8 (diff) | |
parent | 4ef6f40887df9b4200b4535884c967eaac461dd7 (diff) | |
download | lightdm-gtk-greeter-git-288e8834f15493afb81d51b51835b7e419b10b9f.tar.gz |
Merge pull request #122 from kbucheli/default_session
allow to configure a default session manager
Diffstat (limited to 'src/lightdm-gtk-greeter.c')
-rw-r--r-- | src/lightdm-gtk-greeter.c | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/src/lightdm-gtk-greeter.c b/src/lightdm-gtk-greeter.c index 0504ea0..555aa96 100644 --- a/src/lightdm-gtk-greeter.c +++ b/src/lightdm-gtk-greeter.c @@ -1002,6 +1002,7 @@ static void set_session (const gchar *session) { gchar *last_session = NULL; + gchar *greeter_default_session = NULL; GList *sessions = lightdm_get_sessions (); /* Validation */ @@ -1015,16 +1016,23 @@ set_session (const gchar *session) else { /* default */ - const gchar* default_session = lightdm_greeter_get_default_session_hint (greeter); - if (g_strcmp0 (session, default_session) != 0 && - is_valid_session (sessions, default_session)) - session = default_session; - /* first in the sessions list */ - else if (sessions) - session = lightdm_session_get_key (sessions->data); - /* give up */ + greeter_default_session = config_get_string (NULL, CONFIG_KEY_DEFAULT_SESSION, NULL); + if (greeter_default_session && g_strcmp0 (session, greeter_default_session) != 0 && + is_valid_session (sessions, greeter_default_session)) + session = greeter_default_session; else - session = NULL; + { + const gchar* default_session = lightdm_greeter_get_default_session_hint (greeter); + if (g_strcmp0 (session, default_session) != 0 && + is_valid_session (sessions, default_session)) + session = default_session; + /* first in the sessions list */ + else if (sessions) + session = lightdm_session_get_key (sessions->data); + /* give up */ + else + session = NULL; + } } } @@ -1060,6 +1068,7 @@ set_session (const gchar *session) g_free (current_session); current_session = g_strdup (session); g_free (last_session); + g_free (greeter_default_session); } void @@ -2390,7 +2399,7 @@ set_displayed_user (LightDMGreeter *ldm, const gchar *username) else { set_language (lightdm_language_get_code (lightdm_get_language ())); - set_session (lightdm_greeter_get_default_session_hint (ldm)); + set_session (NULL); } gtk_widget_set_tooltip_text (GTK_WIDGET (user_combo), user_tooltip); start_authentication (username); |