From 16ebf80713fe12f839e795acc7a6290d7bc0479e Mon Sep 17 00:00:00 2001 From: Nippy Date: Sun, 20 Sep 2026 19:29:48 +0200 Subject: gnome idle --- raveos-gnome-theme/.SRCINFO | 2 +- raveos-gnome-theme/PKGBUILD | 6 +- raveos-gnome-theme/raveos-gnome-idle-blank | 101 +++++++++++++++++++++++++++ raveos-gnome-theme/raveos-idle-blank.desktop | 8 +++ 4 files changed, 115 insertions(+), 2 deletions(-) create mode 100644 raveos-gnome-theme/raveos-gnome-idle-blank create mode 100644 raveos-gnome-theme/raveos-idle-blank.desktop diff --git a/raveos-gnome-theme/.SRCINFO b/raveos-gnome-theme/.SRCINFO index 54bcb97..a9dce51 100644 --- a/raveos-gnome-theme/.SRCINFO +++ b/raveos-gnome-theme/.SRCINFO @@ -1,7 +1,7 @@ pkgbase = raveos-gnome-theme pkgdesc = RaveOS GNOME theme payload and installer pkgver = 1.0.0 - pkgrel = 7 + pkgrel = 8 url = https://raveos.local install = raveos-gnome-theme.install arch = any diff --git a/raveos-gnome-theme/PKGBUILD b/raveos-gnome-theme/PKGBUILD index 9962104..ac75063 100644 --- a/raveos-gnome-theme/PKGBUILD +++ b/raveos-gnome-theme/PKGBUILD @@ -2,7 +2,7 @@ pkgname=raveos-gnome-theme pkgver=1.0.0 -pkgrel=7 +pkgrel=8 pkgdesc="RaveOS GNOME theme payload and installer" arch=('any') url="https://raveos.local" @@ -65,6 +65,10 @@ package() { install -Dm755 "${startdir}/raveos-gnome-apply.sh" \ "${pkgdir}/usr/lib/raveos-gnome-theme/auto-apply.sh" + install -Dm755 "${startdir}/raveos-gnome-idle-blank" \ + "${pkgdir}/usr/lib/raveos-gnome-theme/idle-blank" + install -Dm644 "${startdir}/raveos-idle-blank.desktop" \ + "${pkgdir}/etc/xdg/autostart/raveos-idle-blank.desktop" install -Dm644 "${startdir}/raveos-gnome-theme-apply.service" \ "${pkgdir}/usr/lib/systemd/system/raveos-gnome-theme-apply.service" } diff --git a/raveos-gnome-theme/raveos-gnome-idle-blank b/raveos-gnome-theme/raveos-gnome-idle-blank new file mode 100644 index 0000000..06ee224 --- /dev/null +++ b/raveos-gnome-theme/raveos-gnome-idle-blank @@ -0,0 +1,101 @@ +#!/usr/bin/env python3 +import os +import sys + +import gi + +gi.require_version("Gio", "2.0") +from gi.repository import Gio, GLib + +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" +POLL_MS = 2000 +WAKE_MS = 1500 + + +def name_has_owner(bus, name): + try: + res = bus.call_sync( + "org.freedesktop.DBus", + "/org/freedesktop/DBus", + "org.freedesktop.DBus", + "NameHasOwner", + GLib.Variant("(s)", (name,)), + 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 + + try: + bus = Gio.bus_get_sync(Gio.BusType.SESSION, None) + except GLib.Error: + return 0 + + if name_has_owner(bus, "org.gnome.Shell.ScreenShield"): + return 0 + + settings = Gio.Settings.new("org.gnome.desktop.session") + state = {"off": False} + + def set_power(mode): + bus.call_sync( + DISPLAY_BUS, + DISPLAY_PATH, + "org.freedesktop.DBus.Properties", + "Set", + GLib.Variant( + "(ssv)", + (DISPLAY_BUS, "PowerSaveMode", GLib.Variant("i", mode)), + ), + None, + Gio.DBusCallFlags.NONE, + 2000, + None, + ) + + def get_idle_ms(): + res = bus.call_sync( + IDLE_BUS, + IDLE_PATH, + IDLE_BUS, + "GetIdletime", + None, + None, + Gio.DBusCallFlags.NONE, + 2000, + None, + ) + return int(res.unpack()[0]) + + def tick(): + try: + delay = settings.get_uint("idle-delay") + idle = get_idle_ms() + if delay > 0 and idle >= delay * 1000 and not state["off"]: + set_power(3) + state["off"] = True + elif state["off"] and idle < WAKE_MS: + set_power(0) + state["off"] = False + except GLib.Error: + pass + return True + + GLib.timeout_add(POLL_MS, tick) + GLib.MainLoop().run() + return 0 + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/raveos-gnome-theme/raveos-idle-blank.desktop b/raveos-gnome-theme/raveos-idle-blank.desktop new file mode 100644 index 0000000..1475aa4 --- /dev/null +++ b/raveos-gnome-theme/raveos-idle-blank.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Type=Application +Name=RaveOS Idle Blank +Comment=Kikapcsolja a kijelzot idle eseten (SDDM-es GNOME-hoz) +Exec=/usr/lib/raveos-gnome-theme/idle-blank +Terminal=false +NoDisplay=true +X-GNOME-Autostart-enabled=true -- cgit v1.3