void Linuxの使用にはいくつかの問題があります。 zzzにスクリプトとしてslockを追加してみました。/etc/zzz.d/suspend/slock
#!/bin/sh
slock
奇妙な方法で動作します。呼び出すと、zzz
slockが発生し、パスワードを入力してロックが解除されるまで停止しません。スクリプトをに移動して/etc/zzz.d/resume/slock
再起動すると、ロック解除画面がしばらく点滅し、画面がロックされます。良くないけど大丈夫です。
しかし、別の問題があります。カバーを閉じるとラップトップは停止しますが、画面はまったくロックされません。私の考えにはこれと関連があると思いますacpid
。acpid
カバーを閉じてもノートブックを無効にするとノートブックが一時停止しないため、これは間違いなくacpid
責任があります。パッチを試してみましたが、/etc/acpi/handler.sh
次のようになります。
close)
# suspend-to-ram
logger "LID closed, suspending..."
slock
zzz
;;
open) logger "LID opened" ;;
*) logger "ACPI action undefined (LID): $2";;
とにかくslock
実行されません。私はzzz
それを取り除き、handler.sh
キャップを閉めても何も起こりません。つまり、実際にzzz
存在するときに実行されますが、zzz
何らかの理由でユーザースクリプトを実行しないことを意味します。私も両方をslock
(例:voidi3lock
handler.sh
ウィキペディア提案)zzz.d/resume
しかし同じです。私が何か間違っているのでしょうか、それともこの動作を引き起こす他の問題がありますか?
答え1
次のように問題を解決してください。
/etc/zzz.d/サスペンド/01
#!/bin/sh
doas -u ds xsecurelock &
sleep 2
/etc/doas.conf
permit persist :wheel
permit nopass root as ds cmd xsecurelock
permit nopass :wheel as root cmd zzz
permit nopass :wheel as root cmd ZZZ
permit nopass keepenv root as root
一時停止スクリプトでは、ルートに対して$ DISPLAYを定義してみることができますが、これを見つけるのはとても愚かです。
答え2
続行する前に、シェルはslockプロセスが停止するのを待つため、初期ソリューションは機能しません。最も単純な(しかし最善ではない)解決策は、プロセスを実行し続けるslock &
コマンドを作成することです。しかし、これがデバイスが停止する前にスロックの実行が完了するという保証はありません。
xss-lock
これを行うための「正しい」方法は、call slockを使用してxset
コマンドを使用して画面をロックすることです。どちらもVoidリポジトリにあります。xss-lock slock
xss-lock はロックに slock を使用するように設定されます。
これしなければならないxss-lockは通常の中断時に機能する必要があるため、追加のスクリプトなしで機能します。ただし、保留中のイベントには常にバグがあるため、xsetによる追加のアクティベーションは悪い考えではありません。
例は次/etc/zzz.d/suspend/slock
のとおりです。
#!/bin/sh
xset s activate
同様のスクリプトを対応する「回復」ファイルに配置できますが、画面をロックする前に画面のロックを解除する問題はまだ発生します。