我有一臺運行Web服務器的觸摸屏信息亭。如果屏幕在一段時間內未觸摸,我想要顯示幻燈片。爲此我有以下腳本。在啓動時啓動自定義屏幕保護程序的行爲與手動啓動屏幕保護程序的行爲不同
#!/bin/sh
# Wanted trigger timeout in milliseconds.
IDLE_TIME=$((15*1000))
# Sequence to execute when timeout triggers.
trigger_cmd() {
DISPLAY=:0 feh -ZXYrzFD 10 /home/pi/screensaver/img --zoom fill &
echo '"pkill -n feh; pkill -n xbindkeys"'>/home/pi/screensaver/xbindkeys.temp
echo "b:1">>/home/pi/screensaver/xbindkeys.temp
DISPLAY=:0 xbindkeys -n -f /home/pi/screensaver/xbindkeys.temp
sudo rm /home/pi/screensaver/xbindkeys.temp
}
sleep_time=$IDLE_TIME
triggered=false
# ceil() instead of floor()
while sleep $(((sleep_time+999)/1000)); do
idle=$(DISPLAY=:0 xprintidle)
if [ $idle -gt $IDLE_TIME ]; then
if ! $triggered; then
trigger_cmd
triggered=true
sleep_time=$IDLE_TIME
fi
else
triggered=false
# Give 100 ms buffer to avoid frantic loops shortly before triggers.
sleep_time=$((IDLE_TIME-idle+100))
fi
done
我用xprintidle
查看屏幕已經閒置的時長。 xbindkeys
部分用於在觸摸屏幕時查殺feh
。當我手動啓動腳本時,我可以通過觸摸屏幕關閉幻燈片,並在給定的空閒時間後重新打開。當我通過init.d
中的腳本啓動腳本時,我必須在屏幕再次打開幻燈片之前觸摸屏幕兩次,如果您只觸摸屏幕一次,將永不再重新打開幻燈片。
init.d
中的腳本只是以用戶pi的身份啓動上面的腳本。
有人可以幫我找出爲什麼在啓動時啓動腳本顯然會導致腳本需要兩次點擊而不是一次啓動空閒計時器?
有多少用戶登錄? – tijko
只有pi用戶登錄 – kaascroissant