私は少し異なる方法でxautolockを使用します。画面をロックした後(i3lock
私の場合は使用されます)、一定期間活動がなければディスプレイを消すようにしたいと思います。アクティビティが検出され、画面がオンになってもコンピュータがロック解除されていない場合は、もう一度オフにしたいと思います。
これは私のスクリプトです。
/bin/bash
function lockfunc {
if [[ "$1" = -sleep ]]; then
i3lock -t -i $backgroundimg && xautolock -time 1 -locker 'xset s activate' &
while [[ $(pgrep -x i3lock) ]]; do # loop while computer is locked
echo $(date) '| i3lock running'
if [[ $(pgrep -x xautolock) ]]; then echo $(date) '| xautolock running'; fi
# if $(pgrep -x xautolock); then echo $(date) '| i3lock running'; fi
sleep 5
done
echo $(date) '| exit i3lock while loop'
xautolock -exit # stop xautolock when unlocked
else
i3lock -t -i $backgroundimg
fi
return 0}
lockfunc -sleep
この動作はほとんど効果がありますが、現在最大の問題は画面が(正確に)1分間消えた後、何も操作せずに再びオンになります。
行動スケジュール:
00:00 -> start the lockfunc
01:00 -> screen turns off
02:00 -> screen turns on
07:00 -> screen doesn't turn back off, stop test
上記のスクリプトのデバッグステートメントは、この間、実際echo
には何の変更も表示しません。 i3lockとxautolockは常に実行中です。
なぜこれが起こるのかご存知ですか?
答え1
変更xset s activate
- >xset dpms force off
成功しました。
xset s activate
奇妙なことは、外部を使用してもxautolock
この動作が表示されないことです。これはよく説明されています。理由の説明をいただきありがとうございます。