aboutsummaryrefslogtreecommitdiff
path: root/src/arctica-greeter.vala
diff options
context:
space:
mode:
authorMike Gabriel <mike.gabriel@das-netzwerkteam.de>2023-04-03 17:07:57 +0200
committerMike Gabriel <mike.gabriel@das-netzwerkteam.de>2023-04-03 17:07:57 +0200
commit2614224219792ae5baabb2e958ce768fdd4a7758 (patch)
tree20e6e0aaaacf4241e4eb85595a469db8d5419fad /src/arctica-greeter.vala
parentc9a2d903518d8d35e85437c5263e558992080cb1 (diff)
downloadarctica-greeter-2614224219792ae5baabb2e958ce768fdd4a7758.tar.gz
arctica-greeter-2614224219792ae5baabb2e958ce768fdd4a7758.tar.bz2
arctica-greeter-2614224219792ae5baabb2e958ce768fdd4a7758.zip
Add support for hiding X11 and/or Wayland sessions.
Diffstat (limited to 'src/arctica-greeter.vala')
-rw-r--r--src/arctica-greeter.vala47
1 files changed, 32 insertions, 15 deletions
diff --git a/src/arctica-greeter.vala b/src/arctica-greeter.vala
index 19e3b4d..c765151 100644
--- a/src/arctica-greeter.vala
+++ b/src/arctica-greeter.vala
@@ -223,19 +223,23 @@ public class ArcticaGreeter : Object
sessions.append ("cinnamon");
sessions.append ("lomiri");
- foreach (string session in sessions) {
- 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);
- return session;
+ if (!AGSettings.get_boolean (AGSettings.KEY_HIDE_WAYLAND_SESSIONS)) {
+ foreach (string session in sessions) {
+ 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);
+ return session;
+ }
}
}
- foreach (string session in sessions) {
- 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);
- return session;
+ if (!AGSettings.get_boolean (AGSettings.KEY_HIDE_X11_SESSIONS)) {
+ foreach (string session in sessions) {
+ 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);
+ return session;
+ }
}
}
@@ -243,21 +247,34 @@ public class ArcticaGreeter : Object
return greeter.default_session_hint;
}
- public string validate_session (string? session)
+ public string validate_session (string? session, bool? fallback = true)
{
/* Make sure the given session actually exists. Return it if it does.
* otherwise, return the default session.
*/
if (session != null) {
- var path = Path.build_filename ("/usr/share/xsessions/", session.concat(".desktop"), null);
- var waypath = Path.build_filename ("/usr/share/wayland-sessions/", session.concat(".desktop"), null);
- if (!FileUtils.test (path, FileTest.EXISTS) & !FileUtils.test (waypath, FileTest.EXISTS)) {
+ 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);
+
+ if (AGSettings.get_boolean (AGSettings.KEY_HIDE_WAYLAND_SESSIONS) &
+ FileUtils.test (wsessions_path, FileTest.EXISTS)) {
+ debug ("Wayland session hidden: '%s'", session);
+ session = null;
+ }
+ else if (AGSettings.get_boolean (AGSettings.KEY_HIDE_X11_SESSIONS) &
+ FileUtils.test (xsessions_path, FileTest.EXISTS)) {
+ debug ("X11 session hidden: '%s'", session);
+ session = null;
+ }
+ else if (!FileUtils.test (xsessions_path, FileTest.EXISTS) &
+ !FileUtils.test (wsessions_path, FileTest.EXISTS))
+ {
debug ("Invalid session: '%s'", session);
session = null;
}
}
- if (session == null) {
+ if ((fallback == true) & (session == null)) {
var default_session = get_default_session ();
debug ("Invalid session: '%s'. Using session '%s' instead.", session, default_session);
return default_session;