これは、Swayのアイドル管理デーモンの代替として意図されています。私はそれを錆メッセージの合格と州の管理を理解するためのツールとして使用します。次の目標を持つことを目指しています。
タスクを実行できるため、ACおよびバッテリーパワーデーモンの代替品として使用しています。
パッケージが追加されるまで、貨物を使用してスリークウォッチャーを設置できます。
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 、その名前のプロセスが既に実行されているかどうかを確認し、その場合に新しい名前を生成しません。これは、スクリーンロッカーが2回出現した場合にレース条件を作成できる場合に役立つ場合があります。
もともとは、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 、ウェイランドのアイドルタイムアウトハンドラーを作成します。 ext-idle-notify-v1プロトコルを使用します。コールバック関数を作成することは(まだ)不可能であるため、関数の名前を指定することにより関数呼び出しが行われます。
PrepareSleep 、 LockScreen 、 UnlockScreenは、 org.freedesktop.logind.manager and org.freedesktop.logind.sessionのdbus信号です。
~/.config/sleepwatcher-rs/idle_config.luaが変更された場合、Configを自動的にリロードする必要があります。ただし、理由が不明な理由により、リロード後の最初のトリガーは古いタイムアウトに続き、次のトリガーは以前のタイムアウト+新しいタイムアウト設定の残りの部分と等しくなります。