
我使用 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
雖然這種行為大部分都有效,但現在的大問題是螢幕關閉(剛好)一分鐘後,它會在沒有任何互動的情況下重新開啟。
行為時間表:
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
奇怪的是,當我使用external of時xautolock
,它並沒有表現出這種行為,這是很好解釋的。任何有關原因的解釋將不勝感激。