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-11 20:41:56 +0200
commit4a3681423cf6bcc2c0b3f931d3b3ad6d3ef86c93 (patch)
tree1fdf22808c382b163c7675add085ddff2684f449 /src
parent813e6639a1d0f69a840e5ea6b26ee7b1e9adb296 (diff)
downloadayatana-indicator-session-personal/sunweaver/mate-lockdown-support.tar.gz
ayatana-indicator-session-personal/sunweaver/mate-lockdown-support.tar.bz2
ayatana-indicator-session-personal/sunweaver/mate-lockdown-support.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 6884b73..d901820 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",