aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Gabriel <mike.gabriel@das-netzwerkteam.de>2023-09-15 12:46:24 +0200
committerMihai Moldovan <ionic@ionic.de>2023-09-15 19:10:43 +0200
commit8dfc61bf04dfc5e5977a5dd7aa2981c8fd609b3b (patch)
tree3b76f06fc4f856b35698a98b2b28b19d764fe093 /src
parent6c027e74fe2fdd1f750f6e2bdf9936cc0794de6e (diff)
downloadarctica-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.vala31
-rw-r--r--src/settings.vala2
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";