Esto se pretende como un reemplazo de Daemon de gestión inactiva de Sway. Lo uso como una herramienta para comprender el paso de mensajes de óxido y la gestión del estado. Su objetivo es tener los siguientes objetivos:
Ahora lo estoy usando como un reemplazo para cualquier demonio de AC y Battery Power, ya que puedo ejecutar tareas con él.
Hasta que se agregue el embalaje, puede instalar SleepKatcher con carga.
cargo install --git https://github.com/fishman/sleepwatcher-rs
Sleepwatcher-RS usa env_logger . Puede habilitar el registro configurando la variable de entorno RUST_LOG :
RUST_LOG=debug sleepwatcher-rs
La configuración predeterminada se escribe en ~/.config/sleepwatcher-rs/idle_config.lua en inicio si la carpeta y el archivo aún no existen.
Lua está configurado para ser sandboxed, por lo que no se pueden usar funciones de biblioteca y solo se pueden usar funciones expuestas dentro del óxido.
Distinción importante entre Helpers:run y Helpers:run_once . run_once verificará si un proceso de ese nombre ya se está ejecutando y no genera uno nuevo en ese caso. Esto puede ser útil, cuando un casillero de pantalla puede crear condiciones de carrera si se generan dos veces.
Originalmente quería recargar la configuración cada vez que el adaptador de CA se encienda y sale, pero debido al problema del tiempo de espera que se describe a continuación, puede verificar el estado on_battery en las funciones.
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 crea un controlador de tiempo de espera inactivo de Wayland. Utiliza el protocolo ext-idle-notify-v1 . No es (todavía) posible crear funciones de devolución de llamada, por lo que las llamadas de función se realizan especificando el nombre de la función.
PrepareSleep , LockScreen , UnlockScreen , son señales DBUS de org.freedesktop.logind.manager y org.freedesktop.logind.session .
~/.config/sleepwatcher-rs/idle_config.lua se cambia. Sin embargo, debido a una razón desconocida, el primer disparador después de la recarga aún sigue el tiempo de espera anterior y, por lo tanto, el siguiente disparador es igual al resto del tiempo de espera anterior+la nueva configuración de tiempo de espera.