
私は 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
、この動作は示されなかったということです。理由についての説明をいただければ幸いです。