diff options
| author | Mike Gabriel <mike.gabriel@das-netzwerkteam.de> | 2025-06-21 16:16:10 +0200 |
|---|---|---|
| committer | Mike Gabriel <mike.gabriel@das-netzwerkteam.de> | 2026-06-11 20:41:56 +0200 |
| commit | 4a3681423cf6bcc2c0b3f931d3b3ad6d3ef86c93 (patch) | |
| tree | 1fdf22808c382b163c7675add085ddff2684f449 /src/backend-dbus | |
| parent | 813e6639a1d0f69a840e5ea6b26ee7b1e9adb296 (diff) | |
| download | ayatana-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/backend-dbus')
| -rw-r--r-- | src/backend-dbus/actions.c | 55 |
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", |
