Ceci est destiné à remplacer le démon de gestion inactif de Sway. Je l'utilise comme un outil pour comprendre le passage des messages de la rouille et la gestion de l'État. Il vise à avoir les objectifs suivants:
Je l'utilise maintenant en remplacement de tout démon AC et de batterie, car je peux exécuter des tâches avec.
Une fois l'emballage ajouté, vous pouvez installer Sleepwatcher à l'aide de la cargaison.
cargo install --git https://github.com/fishman/sleepwatcher-rs
Sleepwatcher-RS utilise env_logger . Vous pouvez activer la journalisation en définissant la variable d'environnement RUST_LOG :
RUST_LOG=debug sleepwatcher-rs
La configuration par défaut est écrite sur ~/.config/sleepwatcher-rs/idle_config.lua au démarrage si le dossier et le fichier n'existent pas encore.
LUA est configuré pour être sableux, donc aucune fonction de bibliothèque ne peut être utilisée et seules les fonctions exposées à l'intérieur de la rouille ne peuvent être utilisées.
Distinction importante entre Helpers:run et Helpers:run_once . run_once vérifiera si un processus de ce nom est déjà en cours et n'en engendrera pas un nouveau dans ce cas. Cela peut être utile lorsqu'un casier d'écran peut créer des conditions de course si elle est engendrée deux fois.
À l'origine, je voulais recharger la configuration chaque fois que l'adaptateur AC est branché et sorti, mais en raison du problème de temps mort décrit ci-dessous, vous pouvez vérifier l'état on_battery dans les fonctions.
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 crée un gestionnaire de délai d'attente d'inactivité Wayland. Il utilise le protocole ext-idle-notify-v1 . Il n'est pas (encore) possible de créer des fonctions de rappel, donc les appels de fonction sont effectués en spécifiant le nom de la fonction.
PrepareSleep , LockScreen , UnlockScreen , sont des signaux DBUS de l' org.freedesktop.logind.manager et org.freedesktop.logind.session .
~/.config/sleepwatcher-rs/idle_config.lua est modifié. Cependant, pour une raison inconnue, le premier déclencheur après le rechargement suit toujours l'ancien délai d'expiration et le déclencheur suivant est donc égal au reste du délai d'attente + le nouveau paramètre de délai d'expiration.