Это предназначено как замена демона управления бездействием. Я использую его как инструмент для понимания передачи сообщений ржавчины и управления государством. Он направлен на то, чтобы иметь следующие цели:
Сейчас я использую его в качестве замены для любого демона переменного тока и батареи, так как я могу выполнять задачи вместе с ним.
Пока упаковка не будет добавлена, вы можете установить 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 проверит, уже работает ли процесс этого имени, и в этом случае не появится новое. Это может быть полезно, когда шкафчик экрана может создавать условия гонки, если его дважды появляются.
Первоначально я хотел перезагрузить конфигурацию всякий раз, когда адаптер переменного тока подключен к и выходу, но из -за проблемы с тайм -аутом, описанной ниже, вы можете проверить состояние 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 Idle Timeout. Он использует протокол ext-idle-notify-v1 . (Пока) не возможно создавать функции обратного вызова, поэтому вызовы функций выполняются путем указания имени функции.
PrepareSleep , LockScreen , UnlockScreen , являются сигналами DBU от org.freedesktop.logind.manager и org.freedesktop.logind.session .
~/.config/sleepwatcher-rs/idle_config.lua . Однако из -за неизвестной причины первый триггер после перезагрузки по -прежнему следует за старым тайм -аутом, а следующий триггер, следовательно, равен остальной части предыдущего тайм -аута+настройки нового тайм -аута.