From f5f819ead1453ef1b817f843890686a5685632cf Mon Sep 17 00:00:00 2001 From: Mike Gabriel Date: Tue, 28 May 2024 15:37:12 +0200 Subject: Add user filter to greeter's user list. --- data/org.ArcticaProject.arctica-greeter.gschema.xml | 8 ++++++++ src/settings.vala | 2 ++ src/user-list.vala | 14 ++++++++++++++ 3 files changed, 24 insertions(+) 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 @@ [] List of usernames that are hidden until a special key combination is hit. + + [] + List of usernames that are to be shown in the userlist only. + + + false + Always filter-out users not listed in user-filter even if user-filter is empty. + [] List of groups that users must be part of to be shown (empty list shows all users). 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; -- cgit v1.2.3