From 25c0806553252ca15e1c9774266337d5d679edbc Mon Sep 17 00:00:00 2001 From: Jeremy Bicha Date: Mon, 18 Feb 2019 18:53:29 -0500 Subject: [PATCH] inhibitor: lock screen when lid is closed The screen should still lock when the lid is closed even if "Suspend when laptop lid is closed" is turned off. Closes: https://bugs.debian.org/919914 --- gnome-tweak-tool-lid-inhibitor | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/gnome-tweak-tool-lid-inhibitor b/gnome-tweak-tool-lid-inhibitor index f9d18db4..236d787c 100755 --- a/gnome-tweak-tool-lid-inhibitor +++ b/gnome-tweak-tool-lid-inhibitor @@ -7,12 +7,16 @@ gi.require_version("GLib", "2.0") from gi.repository import Gio, GLib +# declared in gnome-session/gsm-inhibitor-flag.h +GSM_INHIBITOR_FLAG_SUSPEND = 4; + def on_activate(app): if app._inhibitor: return app.hold() + # Inhibit logind's lid switch handling bus = Gio.bus_get_sync(Gio.BusType.SYSTEM, None) var, fdlist = bus.call_with_unix_fd_list_sync('org.freedesktop.login1', '/org/freedesktop/login1', @@ -20,12 +24,26 @@ def on_activate(app): 'Inhibit', GLib.Variant('(ssss)', ('handle-lid-switch', - 'gnome-tweak-tool-lid-inhibitor', + 'gnome-tweaks', 'user preference', 'block')), None, 0, -1, None, None) app._inhibitor = Gio.UnixInputStream(fd=fdlist.steal_fds()[var[0]]) + # Inhibit gnome-session's suspend handling + bus_session = Gio.bus_get_sync(Gio.BusType.SESSION, None) + bus_session.call_with_unix_fd_list_sync('org.gnome.SessionManager', + '/org/gnome/SessionManager', + 'org.gnome.SessionManager', + 'Inhibit', + GLib.Variant('(susu)', + ('gnome-tweaks', + 0, + 'user preference', + GSM_INHIBITOR_FLAG_SUSPEND)), + None, 0, -1, None, None) + + def on_quit_action(action, param, app): app.quit() -- GitLab