summaryrefslogtreecommitdiff
path: root/raveos-gnome-theme/raveos-gnome-idle-blank
diff options
context:
space:
mode:
Diffstat (limited to 'raveos-gnome-theme/raveos-gnome-idle-blank')
-rw-r--r--raveos-gnome-theme/raveos-gnome-idle-blank23
1 files changed, 23 insertions, 0 deletions
diff --git a/raveos-gnome-theme/raveos-gnome-idle-blank b/raveos-gnome-theme/raveos-gnome-idle-blank
index 06ee224..44425f9 100644
--- a/raveos-gnome-theme/raveos-gnome-idle-blank
+++ b/raveos-gnome-theme/raveos-gnome-idle-blank
@@ -11,6 +11,9 @@ DISPLAY_BUS = "org.gnome.Mutter.DisplayConfig"
DISPLAY_PATH = "/org/gnome/Mutter/DisplayConfig"
IDLE_BUS = "org.gnome.Mutter.IdleMonitor"
IDLE_PATH = "/org/gnome/Mutter/IdleMonitor/Core"
+SESSION_BUS = "org.gnome.SessionManager"
+SESSION_PATH = "/org/gnome/SessionManager"
+IDLE_INHIBIT_FLAG = 8
POLL_MS = 2000
WAKE_MS = 1500
@@ -33,6 +36,24 @@ def name_has_owner(bus, name):
return False
+def is_idle_inhibited(bus):
+ try:
+ res = bus.call_sync(
+ SESSION_BUS,
+ SESSION_PATH,
+ SESSION_BUS,
+ "IsInhibited",
+ GLib.Variant("(u)", (IDLE_INHIBIT_FLAG,)),
+ None,
+ Gio.DBusCallFlags.NONE,
+ 2000,
+ None,
+ )
+ return bool(res.unpack()[0])
+ except GLib.Error:
+ return False
+
+
def main():
if "GNOME" not in os.environ.get("XDG_CURRENT_DESKTOP", ""):
return 0
@@ -83,6 +104,8 @@ def main():
delay = settings.get_uint("idle-delay")
idle = get_idle_ms()
if delay > 0 and idle >= delay * 1000 and not state["off"]:
+ if is_idle_inhibited(bus):
+ return True
set_power(3)
state["off"] = True
elif state["off"] and idle < WAKE_MS: