diff options
author | Mike Gabriel <mike.gabriel@das-netzwerkteam.de> | 2023-09-15 12:46:24 +0200 |
---|---|---|
committer | Mihai Moldovan <ionic@ionic.de> | 2023-09-15 19:10:43 +0200 |
commit | 8dfc61bf04dfc5e5977a5dd7aa2981c8fd609b3b (patch) | |
tree | 3b76f06fc4f856b35698a98b2b28b19d764fe093 /src | |
parent | 6c027e74fe2fdd1f750f6e2bdf9936cc0794de6e (diff) | |
download | arctica-greeter-8dfc61bf04dfc5e5977a5dd7aa2981c8fd609b3b.tar.gz arctica-greeter-8dfc61bf04dfc5e5977a5dd7aa2981c8fd609b3b.tar.bz2 arctica-greeter-8dfc61bf04dfc5e5977a5dd7aa2981c8fd609b3b.zip |
Introduce gsettings (list): includeonly-sessions, excluded-sessions.
Diffstat (limited to 'src')
-rw-r--r-- | src/arctica-greeter.vala | 31 | ||||
-rw-r--r-- | src/settings.vala | 2 |
2 files changed, 33 insertions, 0 deletions
diff --git a/src/arctica-greeter.vala b/src/arctica-greeter.vala index cacfdac..0aee212 100644 --- a/src/arctica-greeter.vala +++ b/src/arctica-greeter.vala @@ -254,8 +254,19 @@ public class ArcticaGreeter : Object sessions.append (preferred_session); } + var excluded_sessions = AGSettings.get_strv (AGSettings.KEY_EXCLUDED_SESSIONS); + var includeonly_sessions = AGSettings.get_strv (AGSettings.KEY_INCLUDEONLY_SESSIONS); + if (!AGSettings.get_boolean (AGSettings.KEY_HIDE_WAYLAND_SESSIONS)) { foreach (string session in sessions) { + if (includeonly_sessions.length > 0) { + if (!(session in includeonly_sessions)) { + continue; + } + } + else if (session in excluded_sessions) { + continue; + } var path = Path.build_filename ("/usr/share/wayland-sessions/", session.concat(".desktop"), null); if (FileUtils.test (path, FileTest.EXISTS)) { debug ("Using %s as default (Wayland) session.", session); @@ -266,6 +277,14 @@ public class ArcticaGreeter : Object if (!AGSettings.get_boolean (AGSettings.KEY_HIDE_X11_SESSIONS)) { foreach (string session in sessions) { + if (includeonly_sessions.length > 0) { + if (!(session in includeonly_sessions)) { + continue; + } + } + else if (session in excluded_sessions) { + continue; + } var path = Path.build_filename ("/usr/share/xsessions/", session.concat(".desktop"), null); if (FileUtils.test (path, FileTest.EXISTS)) { debug ("Using %s as default (X11) session.", session); @@ -283,6 +302,18 @@ public class ArcticaGreeter : Object /* Make sure the given session actually exists. Return it if it does. * otherwise, return the default session. */ + var excluded_sessions = AGSettings.get_strv (AGSettings.KEY_EXCLUDED_SESSIONS); + var includeonly_sessions = AGSettings.get_strv (AGSettings.KEY_INCLUDEONLY_SESSIONS); + + if (includeonly_sessions.length > 0) { + if (!(session in includeonly_sessions)) { + session = null; + } + } + else if (session in excluded_sessions) { + session = null; + } + if (session != null) { var xsessions_path = Path.build_filename ("/usr/share/xsessions/", session.concat(".desktop"), null); var wsessions_path = Path.build_filename ("/usr/share/wayland-sessions/", session.concat(".desktop"), null); diff --git a/src/settings.vala b/src/settings.vala index acef828..7c4bd84 100644 --- a/src/settings.vala +++ b/src/settings.vala @@ -73,6 +73,8 @@ public class AGSettings : Object public const string KEY_MENUBAR_ALPHA = "menubar-alpha"; public const string KEY_HIDE_X11_SESSIONS = "hide-x11-sessions"; public const string KEY_HIDE_WAYLAND_SESSIONS = "hide-wayland-sessions"; + public const string KEY_INCLUDEONLY_SESSIONS = "includeonly-sessions"; + public const string KEY_EXCLUDED_SESSIONS = "excluded-sessions"; public const string KEY_SHUTDOWN_DIALOG_TIMEOUT = "shutdown-dialog-timeout"; public const string KEY_PREFERRED_SESSIONS = "preferred-sessions"; |