#define GUM_ATTR_UID "uid"
#define GUM_ATTR_ICON "icon"
#define GUM_ATTR_PASSWORD "secret"
-#define GUM_LIST_USERTYPE "normal"
+#define GUM_LIST_USERTYPE_NORMAL "normal"
+#define GUM_LIST_USERTYPE_ADMIN "admin"
#define ADDRESS_BUF_MAX 128
#define USER_SWITCH_TLM_SEAT_ID "seat0"
struct datamgr_item *di;
char *name, *icon;
gchar **strv;
+ uid_t uid, user_uid;
int i;
service = gum_user_service_create_sync(FALSE);
return false;
}
- strv = _append_string(NULL, GUM_LIST_USERTYPE);
+ strv = _append_string(NULL, GUM_LIST_USERTYPE_NORMAL);
+ strv = _append_string(strv, GUM_LIST_USERTYPE_ADMIN);
ulist = gum_user_service_get_user_list_sync(service,
(const gchar *const *)strv);
g_strfreev(strv);
return false;
}
+ user_uid = getuid();
for (i = 0; i < g_list_length(ulist); i++) {
user = g_list_nth_data(ulist, i);
if (!user)
continue;
g_object_get(G_OBJECT(user), GUM_ATTR_NAME, &name,
- GUM_ATTR_ICON, &icon,
+ GUM_ATTR_ICON, &icon, GUM_ATTR_UID, &uid,
GUM_ATTR_USERTYPE, &type, NULL);
+ if (uid == user_uid)
+ continue;
+
di = _pack_user(name, icon, icon, ITEM_SELECT_ACTION_SWITCH,
NULL, type);
if (!di)