Kioszknak használt Raspberry pi-on képernyővédő/DPMS letiltása

Fórumok

Sziasztok!

Egy Raspberry pi-t szeretnénk használni arra, hogy meghajtson egy időjáráskijelző képernyőt. A program maga /etc/rc.local-ból van meghívva, xinit-tel. Van valami ötletetek, hogy lehetne letiltani a 10 percenként bekapcsoló képernyővédőt? Az .xinitrc-be tett xset parancsokkal nem jártunk sikerrel.

Hozzászólások

És mi ez a képernyővédő? Például xscreensaver? Mert akkor meg lehet nézni, mi indítja el, s mondani neki, hogy ne tegye, vagy picit gányabb megoldás, hogy utólag ki kell nyírni a process-t. Vagy, ha már fut, lehet kommunikálni is vele az xscreensaver-command paranccsal.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Mit értünk saját alatt? Nem hinném, hogy ez a hardware-ben lenne így. Nézd meg az energiagazdálkodást. Ugyan nem Raspberry pi, de sima desktop gépen eléggé az szokott történni, amit szeretnék. Xfce-t használok, energiagazdálkodás ki van kapcsolva, nem is kapcsol, ki a monitor.

Ha nem jut jobb eszedbe, további gányolásként esetleg csináld azt, hogy az xte paranccsal behazudsz néha billentyűnyomást meg elengedést, s így nem hagyod elaludni. Az xte parancsot az xautomation csomag tartalmazza. Legalább is Fedorán. Fedora csomagok egyébként hivatalosan támogatottak ARM-re.

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Én úgy tudom, hogy amit írtam, Openboxtól függetlenül működik (és valóban működik, mivel használom is), de az xset-et azért kellett .xsessions-ből indítanom, hogy az X már fusson, amikor ez kapcsolódni szeretne hozzá.
Szimplán rc.local-ból indítva valószínűleg ezért nem volt hatása a kérdezőnél, tehát ez is egy lényeges pont. :)

Szia!

Erre lesz szükséged:
xset -dpms; xset s off

Működik, tesztelve (mármint én is belefutottam már, és ez lett a megoldás). :)
Mondjuk nálam Openbox van alatta és a user .xsession-jába került, innen működik legalábbis.

Próbáltuk azt is, ez volt mind a user, mind a root .xsession-jében:
/usr/bin/xset -dpms
/usr/bin/xset s off # don't activate screensaver
/usr/bin/xset s noblank # don't blank the video device

de nem működött. Esetleg xorg.conf-ot próbálok meg még hegeszteni alá, hátha...

Bocs a hosszú szünetért, most sikerült csak visszajutni a vashoz. Ha xinittel hívok egy terminált, abból az xset nem ad semmi hibát, működik rendesen a dolog. A programot így hívom meg:
/usr/bin/xinit /bin/su -l pi -c /usr/bin/python
.py -- :0
Így a root .xinitrc-je kell meghívódjon, amiben ez van:

/usr/bin/xset -dpms
/usr/bin/xset dpms force off
/usr/bin/xset s off # don't activate screensaver
/usr/bin/xset s noblank # don't blank the video device

(bár a userében is ugyanez van a békesség kedvéért)

Én így raktam össze a rendszert:

- lightdm indul, ez pedig automatikusan belépteti a user-t /nem jelenik meg a képernyőn erre vonatkozóan semmi/
- user .xsession-ból futtatja az "xset s off" és "xset -dpms"-t, majd elindítja az openbox-ot az ablakkezelés miatt, végül egy másik programot.

Openbox nem befolyásolja a lényeget, az más miatt kell - ezt elhagyva sem kapcsol le a monitor.

Tehát ilyen formában tökéletesen működik a dolog - szerintem te is tegyél fel egy Display Managert rá, és jó lesz.

Amikor xinit-ből el is indul a programod, nem tudod mögé tenni az xset beállításait?
...tehát mondjuk "programod &" és "xset ..." formában, esetleg egy sleep-et közbeiktatva?

Másik oldalról megközelítve, tehát ahogy fent írtam, display managerből:
Az egérkurzor eltüntetése pl. ezzel megoldható: "unclutter -idle 0"
...vagy ha nem is nullát, de néhány másodpercet megadva neki az egérkurzor eltűnik szépen.

...persze shiftet is nyomogathatsz scriptből, de csak el lehet indítani azt az xset-et is...


echo "int main(){return 0;}" > xscreensaver.c
gcc -o xscreensaver xscreensaver.c
su -c "cp xscreensaver /usr/bin"