이것은 Sway의 유휴 관리 데몬을 대체하기위한 것입니다. Rust 메시지 통과 및 상태 관리를 이해하는 도구로 사용합니다. 다음과 같은 목표를 달성하는 것을 목표로합니다.
작업을 실행할 수 있기 때문에 이제 AC 및 배터리 전원 데몬의 대체물로 사용하고 있습니다.
포장이 추가 될 때까지화물을 사용하여 Sleepwatcher를 설치할 수 있습니다.
cargo install --git https://github.com/fishman/sleepwatcher-rs
SleepWatcher-Rs는 env_logger 사용합니다. RUST_LOG 환경 변수를 설정하여 로깅을 활성화 할 수 있습니다.
RUST_LOG=debug sleepwatcher-rs
기본 구성은 폴더와 파일이 아직 존재하지 않는 경우 시작시 ~/.config/sleepwatcher-rs/idle_config.lua 로 기록됩니다.
LUA는 샌드 박스로 구성되므로 라이브러리 기능을 사용할 수 없으며 녹 내부에 노출 된 기능 만 사용할 수 있습니다.
Helpers:run 와 Helpers:run_once . run_once 해당 이름의 프로세스가 이미 실행 중인지 확인하고 해당 이름에서 새로운 프로세스를 스폰하지 않을 것입니다. 화면 로커가 두 번 스폰되면 레이스 조건을 만들 수있는 경우 유용 할 수 있습니다.
원래 AC 어댑터가 연결 및 출입 될 때마다 구성을 다시로드하려고했지만 아래에 설명 된 시간 초과 문제로 인해 기능에서 on_battery 상태를 확인할 수 있습니다.
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 Wayland 유휴 시간 초과 처리기를 만듭니다. ext-idle-notify-v1 프로토콜을 사용합니다. 콜백 함수를 만들 수는 없으므로 함수 이름을 지정하여 기능 호출이 이루어집니다.
PrepareSleep , LockScreen , UnlockScreen 은 org.freedesktop.logind.manager 및 org.freedesktop.logind.session 의 dbus 신호입니다.
~/.config/sleepwatcher-rs/idle_config.lua 변경 될 때 구성을 자동으로 다시로드해야합니다. 그러나 알 수없는 이유로 Reload 이후의 첫 번째 트리거는 여전히 이전 타임 아웃을 따르고 다음 트리거는 이전 시간 초과의 나머지 부분+새로운 시간 초과 설정과 같습니다.