aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data/org.ArcticaProject.arctica-greeter.gschema.xml8
-rw-r--r--src/settings.vala2
-rw-r--r--src/user-list.vala14
3 files changed, 24 insertions, 0 deletions
diff --git a/data/org.ArcticaProject.arctica-greeter.gschema.xml b/data/org.ArcticaProject.arctica-greeter.gschema.xml
index 67f8e83..56ef09b 100644
--- a/data/org.ArcticaProject.arctica-greeter.gschema.xml
+++ b/data/org.ArcticaProject.arctica-greeter.gschema.xml
@@ -174,6 +174,14 @@
<default>[]</default>
<summary>List of usernames that are hidden until a special key combination is hit.</summary>
</key>
+ <key name="user-filter" type="as">
+ <default>[]</default>
+ <summary>List of usernames that are to be shown in the userlist only.</summary>
+ </key>
+ <key name="user-filter-always" type="b">
+ <default>false</default>
+ <summary>Always filter-out users not listed in user-filter even if user-filter is empty.</summary>
+ </key>
<key name="group-filter" type="as">
<default>[]</default>
<summary>List of groups that users must be part of to be shown (empty list shows all users).</summary>
diff --git a/src/settings.vala b/src/settings.vala
index 7d1ce8f..6bdfe5d 100644
--- a/src/settings.vala
+++ b/src/settings.vala
@@ -56,6 +56,8 @@ public class AGSettings : Object
public const string KEY_PLAY_READY_SOUND = "play-ready-sound";
public const string KEY_INDICATORS = "indicators";
public const string KEY_HIDDEN_USERS = "hidden-users";
+ public const string KEY_USER_FILTER= "user-filter";
+ public const string KEY_USER_FILTER_ALWAYS = "user-filter-always";
public const string KEY_GROUP_FILTER = "group-filter";
public const string KEY_IDLE_TIMEOUT = "idle-timeout";
public const string KEY_ACTIVATE_NUMLOCK = "activate-numlock";
diff --git a/src/user-list.vala b/src/user-list.vala
index dee3850..3936768 100644
--- a/src/user-list.vala
+++ b/src/user-list.vala
@@ -1128,6 +1128,20 @@ public class UserList : GreeterList
return;
}
+ var user_filter = AGSettings.get_strv (AGSettings.KEY_USER_FILTER);
+ bool user_filter_always = AGSettings.get_boolean (AGSettings.KEY_USER_FILTER_ALWAYS);
+
+ if ((user_filter_always) || (user_filter.length != 0))
+ {
+ var match_found = false;
+ foreach (var username in user_filter)
+ if (username == user.name)
+ match_found = true;
+ // bail-out if user.name is not in user_filter
+ if (match_found == false)
+ return;
+ }
+
if (!filter_group (user.name))
return;