From cda8f55109f51c477076c3a603d6c28dba247076 Mon Sep 17 00:00:00 2001 From: S4NKALP Date: Wed, 15 Jul 2026 09:03:08 +0545 Subject: [PATCH] feat!: rename inhibit_changed to inhibit-changed and add enable_timed method --- src/services/inhibit.py | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/src/services/inhibit.py b/src/services/inhibit.py index bf3a19c..15487ee 100644 --- a/src/services/inhibit.py +++ b/src/services/inhibit.py @@ -27,6 +27,7 @@ class InhibitService(Service): super().__init__(**kwargs) self._cookie: int | None = None self._proxy: Gio.DBusProxy | None = None + self._timer_source: int | None = None @Property(bool, "readable", default_value=False) def active(self) -> bool: @@ -69,16 +70,35 @@ class InhibitService(Service): ) if result is not None: self._cookie = result.unpack()[0] - self.emit("inhibit_changed", True) + self.emit("inhibit-changed", True) return True return False except Exception as e: logger.error(f"[InhibitService] Failed to inhibit: {e}") return False + def enable_timed(self, seconds: int) -> bool: + """Enable inhibition for *seconds*, then auto-disable.""" + self._cancel_timer() + if not self.enable(): + return False + self._timer_source = GLib.timeout_add_seconds(seconds, self._on_timer_done) + return True + + def _on_timer_done(self) -> bool: + self._timer_source = None + self.disable() + return False # remove the source + + def _cancel_timer(self) -> None: + if self._timer_source is not None: + GLib.source_remove(self._timer_source) + self._timer_source = None + def disable(self) -> bool: if not self.active: return True + self._cancel_timer() proxy = self._get_proxy() if proxy is None or self._cookie is None: return False @@ -91,7 +111,7 @@ class InhibitService(Service): None, ) self._cookie = None - self.emit("inhibit_changed", False) + self.emit("inhibit-changed", False) return True except Exception as e: logger.error(f"[InhibitService] Failed to uninhibit: {e}")