我使用 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
,它并没有表现出这种行为,这是很好解释的。任何有关原因的解释将不胜感激。