aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/org.ArcticaProject.arctica-greeter.gschema.xml4
-rw-r--r--src/arctica-greeter.vala38
-rw-r--r--src/settings.vala1
3 files changed, 32 insertions, 11 deletions
diff --git a/data/org.ArcticaProject.arctica-greeter.gschema.xml b/data/org.ArcticaProject.arctica-greeter.gschema.xml
index db00737..1607a59 100644
--- a/data/org.ArcticaProject.arctica-greeter.gschema.xml
+++ b/data/org.ArcticaProject.arctica-greeter.gschema.xml
@@ -203,6 +203,10 @@
<default>'Nightshade'</default>
<summary>Name of the onscreen keyboard theme (see /usr/share/onboard/themes/*.theme for available theme names).</summary>
</key>
+ <key name="hide-default-xsession" type="b">
+ <default>false</default>
+ <summary>Whether to hide the 'lightdm-xsession' default X11 session type.</summary>
+ </key>
<key name="hide-x11-sessions" type="b">
<default>false</default>
<summary>Whether to hide X11 sessions.</summary>
diff --git a/src/arctica-greeter.vala b/src/arctica-greeter.vala
index 0aee212..81f0045 100644
--- a/src/arctica-greeter.vala
+++ b/src/arctica-greeter.vala
@@ -246,7 +246,10 @@ public class ArcticaGreeter : Object
public string? get_default_session ()
{
var sessions = new List<string> ();
- sessions.append ("lightdm-xsession");
+ var hide_default_xsession = AGSettings.get_boolean (AGSettings.KEY_HIDE_DEFAULT_XSESSION);
+ if (!hide_default_xsession) {
+ sessions.append ("lightdm-xsession");
+ }
var preferred_sessions = AGSettings.get_strv (AGSettings.KEY_PREFERRED_SESSIONS);
@@ -305,30 +308,42 @@ public class ArcticaGreeter : Object
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)) {
+ if (includeonly_sessions.length > 0)
+ {
+ if (!(session in includeonly_sessions))
+ {
session = null;
}
}
- else if (session in excluded_sessions) {
+ else if (session in excluded_sessions)
+ {
session = null;
}
- if (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);
- if (AGSettings.get_boolean (AGSettings.KEY_HIDE_WAYLAND_SESSIONS) &
- FileUtils.test (wsessions_path, FileTest.EXISTS)) {
+ if ((session == "lightdm-xsession") &&
+ AGSettings.get_boolean (AGSettings.KEY_HIDE_DEFAULT_XSESSION))
+ {
+ debug ("default Xsession hidden: '%s'", session);
+ session = null;
+ }
+ else 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)) {
+ 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) &
+ else if (!FileUtils.test (xsessions_path, FileTest.EXISTS) &&
!FileUtils.test (wsessions_path, FileTest.EXISTS))
{
debug ("Invalid session: '%s'", session);
@@ -336,7 +351,8 @@ public class ArcticaGreeter : Object
}
}
- if ((fallback == true) & (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;
diff --git a/src/settings.vala b/src/settings.vala
index 7c4bd84..68ce674 100644
--- a/src/settings.vala
+++ b/src/settings.vala
@@ -71,6 +71,7 @@ public class AGSettings : Object
public const string KEY_FLATBUTTON_BORDERCOLOR = "flatbutton-bordercolor";
public const string KEY_ENABLE_HIDPI = "enable-hidpi";
public const string KEY_MENUBAR_ALPHA = "menubar-alpha";
+ public const string KEY_HIDE_DEFAULT_XSESSION = "hide-default-xsession";
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";