diff options
author | Konrad Bucheli <konrad.bucheli@psi.ch> | 2022-07-25 15:05:18 +0200 |
---|---|---|
committer | Konrad Bucheli <konrad.bucheli@psi.ch> | 2022-07-25 15:05:18 +0200 |
commit | 4ef6f40887df9b4200b4535884c967eaac461dd7 (patch) | |
tree | 0d5c1b4f89ad562fb4cd3f479e7b9172c44fb1f6 | |
parent | e0988e3f1ccb7522933eae8318956b26b97085b8 (diff) | |
download | lightdm-gtk-greeter-git-4ef6f40887df9b4200b4535884c967eaac461dd7.tar.gz |
allow to configure a default session manager
-rw-r--r-- | data/lightdm-gtk-greeter.conf | 3 | ||||
-rw-r--r-- | src/greeterconfiguration.h | 1 | ||||
-rw-r--r-- | src/lightdm-gtk-greeter.c | 29 |
3 files changed, 23 insertions, 10 deletions
diff --git a/data/lightdm-gtk-greeter.conf b/data/lightdm-gtk-greeter.conf index 2a20ef0..4b1637c 100644 --- a/data/lightdm-gtk-greeter.conf +++ b/data/lightdm-gtk-greeter.conf @@ -45,6 +45,9 @@ # allow-debugging = false|true ("false" by default) # screensaver-timeout = Timeout (in seconds) until the screen blanks when the greeter is called as lockscreen # +# Session: +# default-session = session manager to be started when none has been selected by the user and no one is set as last used (unset by default) +# # Template for per-monitor configuration: # [monitor: name] # background = overrides default value diff --git a/src/greeterconfiguration.h b/src/greeterconfiguration.h index 9e1b452..e45f889 100644 --- a/src/greeterconfiguration.h +++ b/src/greeterconfiguration.h @@ -16,6 +16,7 @@ #define CONFIG_GROUP_DEFAULT "greeter" #define CONFIG_KEY_INDICATORS "indicators" +#define CONFIG_KEY_DEFAULT_SESSION "default-session" #define CONFIG_KEY_DEBUGGING "allow-debugging" #define CONFIG_KEY_SCREENSAVER_TIMEOUT "screensaver-timeout" #define CONFIG_KEY_THEME "theme-name" 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); |