Dies ist als Ersatz von Sways Idle Management -Daemon von Sway gedacht. Ich benutze es als Werkzeug, um das Passieren von Rust -Nachrichten und das staatliche Management zu verstehen. Ziel ist es, die folgenden Ziele zu haben:
Ich benutze es jetzt als Ersatz für jeden Wechselstrom- und Batterie -Strom -Daemon, da ich Aufgaben damit ausführen kann.
Bis zur Verpackung addiert Sie SleepWatcher mit Fracht.
cargo install --git https://github.com/fishman/sleepwatcher-rs
SleepWatcher-Rs verwendet env_logger . Sie können die Protokollierung aktivieren, indem Sie die RUST_LOG -Umgebungsvariable festlegen:
RUST_LOG=debug sleepwatcher-rs
Die Standardkonfiguration wird zum Start in ~/.config/sleepwatcher-rs/idle_config.lua geschrieben, wenn der Ordner und die Datei noch nicht vorhanden sind.
LUA ist so konfiguriert, dass sie Sandboxen haben, sodass keine Bibliotheksfunktionen verwendet werden können und nur im Rost freigelegte Funktionen verwendet werden können.
Wichtige Unterscheidung zwischen Helpers:run und Helpers:run_once . run_once prüft, ob ein Prozess dieses Namens bereits ausgeführt wird, und in diesem Fall wird nicht eine neue erzeugen. Dies kann nützlich sein, wenn ein Bildschirmschließfach Rennbedingungen erzeugen kann, wenn sie zweimal hervorgebracht werden.
Ursprünglich wollte ich die Konfiguration neu laden, wenn der AC -Adapter ein- und ausgesteckt ist. Aufgrund des unten beschriebenen Timeout -Problems können Sie jedoch nach dem Status on_battery in Funktionen überprüfen.
Helpers : log ( " Loading idle_config.lua " )
function LockScreen ()
Helpers : log ( " Locking Screen " )
IdleNotifier : run_once ( " swaylock -f " )
end
function ScreenLockBattery ( event )
if event == " idled " and Helpers : on_battery () then
LockScreen ()
end
end
DbusHandler : PrepareSleep ( " LockScreen " )
DbusHandler : LockHandler ( " LockHandler " )
DbusHandler : UnlockHandler ( " UnlockHandler " )
IdleNotifier : get_notification ( 300 , " ScreenLockBattery " ) get_notification erstellt einen Wayland Idle Timeout -Handler. Es verwendet das ext-idle-notify-v1 Protokoll. Es ist nicht (noch) möglich, Rückruffunktionen zu erstellen, daher werden die Funktionsaufrufe erstellt, indem der Name der Funktion angegeben wird.
PrepareSleep , LockScreen , UnlockScreen , sind DBUS -Signale aus der org.freedesktop.logind.manager und org.freedesktop.logind.session .
~/.config/sleepwatcher-rs/idle_config.lua geändert wird. Aus einem unbekannten Grund folgt der erste Auslöser nach dem Nachladen jedoch immer noch dem alten Zeitüberschreitungen, und der nächste Auslöser entspricht daher dem Rest des vorherigen Timeout+der neuen Timeout -Einstellung.