2016-04-02 19 views
0

başlamaktan daha farklı davranır. Ekrana belirli bir süre dokunulmamışsa bir slayt gösterisi göstermek istiyorum. Bu amaçla aşağıdaki betiğe sahibim. açılışta özel bir ekran koruyucu başlayarak elle Ben web sunucusu koşuyorum hangi bir dokunmatik kiosk var ekran koruyucu

#!/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 

Ben ekran boşta ne kadar süredir kontrol etmek xprintidle kullanın. xbindkeys parçası, ekrana dokunulduğunda feh'u öldürmek içindir. Komut dosyasını manuel olarak başlattığımda, ekrana bir kez dokunarak slayt gösterisini kapatabilir ve verilen boşta kalma süresinden sonra tekrar açılacaktır. Komut dosyasını init.d kod dosyasında başlattığımda, slayt gösterisini tekrar açmadan önce ekrana iki kez dokunmalıyım ve ekrana yalnızca bir kez dokunduğunuzda slayt gösterisini tekrar açmayacağım.
init.d komut dosyası basitçe kullanıcı pi yukarıdaki senaryoyu başlar. görünüşte komut boşta zamanlayıcı başlatmak için bir yerine iki tıklama gerektirecek neden olur açılışta komut başlayan neden

biri bana anlamaya yardımcı olabilir misiniz?

+0

Kaç kullanıcı giriş yaptı? – tijko

+0

sadece pi kullanıcı oturdu – kaascroissant

cevap

1

Dokunmatik ekran komut dosyasının büyük olasılıkla, DISPLAY ortam değişkeninin ayarlanmadan önce (yani kullanıcı pi giriş yapmamış olması gerekir) init.d tarafından çalıştırılmaktadır.

.bash_profile bu çalıştırmayı deneyin. Böylece tüm kullanıcı ortamı değişkenleriniz özellikle $DISPLAY olarak belirlenir ve komut dosyası oturum açıldığında bir kez çalışır.

+1

Bu çalıştı, teşekkürler! – kaascroissant

İlgili konular