aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMike Gabriel <mike.gabriel@das-netzwerkteam.de>2025-06-21 16:16:10 +0200
committerMike Gabriel <mike.gabriel@das-netzwerkteam.de>2026-06-16 10:30:24 +0200
commitb8302f57af3b280310a05a77471772b6025374cf (patch)
tree931bf79d6fdcfea59466fa5e2789ee9bc482fdf2 /src
parent1f500c31744406b122c3fee61edc8807ef731a4e (diff)
downloadayatana-indicator-session-b8302f57af3b280310a05a77471772b6025374cf.tar.gz
ayatana-indicator-session-b8302f57af3b280310a05a77471772b6025374cf.tar.bz2
ayatana-indicator-session-b8302f57af3b280310a05a77471772b6025374cf.zip
src/backend-dbus/actions.c: Fix MATE lockdown supportpersonal/sunweaver/mate-lockdown-support
Don't require org.gnome.desktop.lockdown gsettings to be set, honour org.mate.desktop.lockdown gsettings instead when running on MATE desktop. If not on MATE and not on GNOME (or similar) then don't check the lockdown settings at all.
Diffstat (limited to 'src')
-rw-r--r--src/backend-dbus/actions.c55
1 files changed, 42 insertions, 13 deletions
diff --git a/src/backend-dbus/actions.c b/src/backend-dbus/actions.c
index f5ddbc9..bc7d314 100644
--- a/src/backend-dbus/actions.c
+++ b/src/backend-dbus/actions.c
@@ -387,7 +387,12 @@ my_can_lock (IndicatorSessionActions * self)
{
priv_t * p = INDICATOR_SESSION_ACTIONS_DBUS(self)->priv;
- return !g_settings_get_boolean (p->lockdown_settings, "disable-lock-screen");
+ if (p->lockdown_settings)
+ {
+ return !g_settings_get_boolean (p->lockdown_settings, "disable-lock-screen");
+ }
+
+ return TRUE;
}
static gboolean
@@ -398,7 +403,7 @@ my_can_logout (IndicatorSessionActions * self)
if (g_settings_get_boolean (p->indicator_settings, "suppress-logout-menuitem"))
return FALSE;
- if (g_settings_get_boolean (p->lockdown_settings, "disable-log-out"))
+ if ((p->lockdown_settings) && (g_settings_get_boolean (p->lockdown_settings, "disable-log-out")))
return FALSE;
return TRUE;
@@ -430,8 +435,17 @@ my_can_switch (IndicatorSessionActions * self)
{
const priv_t * p = INDICATOR_SESSION_ACTIONS_DBUS(self)->priv;
- return p->seat_allows_activation
- && !g_settings_get_boolean (p->lockdown_settings, "disable-user-switching");
+ if ((p->lockdown_settings) && (g_settings_get_boolean (p->lockdown_settings, "disable-user-switching")))
+ {
+ return FALSE;
+ }
+
+ if (!p->seat_allows_activation)
+ {
+ return FALSE;
+ }
+
+ return TRUE;
}
static gboolean
@@ -1114,21 +1128,36 @@ static void
indicator_session_actions_dbus_init (IndicatorSessionActionsDbus * self)
{
priv_t * p;
- GSettings * s;
+ GSettings * s = NULL;
p = indicator_session_actions_dbus_get_instance_private (self);
p->cancellable = g_cancellable_new ();
p->seat_allows_activation = TRUE;
self->priv = p;
- s = g_settings_new ("org.gnome.desktop.lockdown");
- g_signal_connect_swapped (s, "changed::disable-lock-screen",
- G_CALLBACK(indicator_session_actions_notify_can_lock), self);
- g_signal_connect_swapped (s, "changed::disable-log-out",
- G_CALLBACK(indicator_session_actions_notify_can_logout), self);
- g_signal_connect_swapped (s, "changed::disable-user-switching",
- G_CALLBACK(indicator_session_actions_notify_can_switch), self);
- p->lockdown_settings = s;
+ if (ayatana_common_utils_is_gnome() || ayatana_common_utils_is_budgie())
+ {
+ s = g_settings_new ("org.gnome.desktop.lockdown");
+ }
+ else if (ayatana_common_utils_is_mate())
+ {
+ s = g_settings_new ("org.mate.desktop.lockdown");
+ }
+
+ if (s)
+ {
+ g_signal_connect_swapped (s, "changed::disable-lock-screen",
+ G_CALLBACK(indicator_session_actions_notify_can_lock), self);
+ g_signal_connect_swapped (s, "changed::disable-log-out",
+ G_CALLBACK(indicator_session_actions_notify_can_logout), self);
+ g_signal_connect_swapped (s, "changed::disable-user-switching",
+ G_CALLBACK(indicator_session_actions_notify_can_switch), self);
+ p->lockdown_settings = s;
+ }
+ else
+ {
+ p->lockdown_settings = NULL;
+ }
s = g_settings_new ("org.ayatana.indicator.session");
g_signal_connect_swapped (s, "changed::suppress-logout-restart-shutdown",