
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
이 동작을 보여주지 않았다는 것입니다. 이유에 대한 설명을 주시면 감사하겠습니다.