Build the Panama Hyprland desktop

This commit is contained in:
Gabriel Brown
2026-08-17 10:32:55 -04:00
parent 67033f2a31
commit 5248883e4b
190 changed files with 18554 additions and 34 deletions
@@ -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);
}
}
}