Build the Panama Hyprland desktop
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
pragma Singleton
|
||||
|
||||
// ─────────────────────────────────────────────────────────────────────────────
|
||||
// Idle inhibit — the replacement for the GNOME Caffeine extension.
|
||||
//
|
||||
// Implemented with systemd-inhibit rather than the Wayland idle-inhibit
|
||||
// protocol because the Wayland version is scoped to a surface (it would only
|
||||
// hold while some window of ours is mapped) and it cannot block *sleep*, only
|
||||
// the screensaver. A logind lock covers both, and outlives any UI.
|
||||
// ─────────────────────────────────────────────────────────────────────────────
|
||||
|
||||
import Quickshell
|
||||
import Quickshell.Io
|
||||
import QtQuick
|
||||
|
||||
Singleton {
|
||||
id: root
|
||||
|
||||
// Writable: the quick-settings tile and the bar indicator both bind to it.
|
||||
property bool enabled: false
|
||||
|
||||
function toggle(): void {
|
||||
root.enabled = !root.enabled;
|
||||
}
|
||||
|
||||
// `sleep infinity` is the process the lock is held *for*: systemd releases
|
||||
// the inhibitor when its child exits, so stopping this Process (SIGTERM)
|
||||
// is all that's needed to drop it.
|
||||
Process {
|
||||
command: ["systemd-inhibit", "--what=idle:sleep", "--mode=block", "--who=Panama", "--why=Caffeine", "sleep", "infinity"]
|
||||
running: root.enabled
|
||||
|
||||
onExited: (code, status) => {
|
||||
// Only interesting if it died while we still wanted the lock.
|
||||
if (root.enabled)
|
||||
console.warn("Caffeine: systemd-inhibit exited unexpectedly, code", code);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user