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

 ( vidak | 2014. április 12., szombat - 12:13 )

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ás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

É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

Az nem fut, úgyhogy nem valószínű. Legnagyobb eséllyel a monitor saját energiatakarékos megoldása lesz a ludas.

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

Annyi nehezítés van a dologban, hogy ablakkezelőt nem indítok hozzá, csak xinitet, úgyhogy az ablakkezelő energiagazdálkodását nem tudjuk állítani (persze lehet indítani ablakkezelőt is ha nagyon muszáj, de akkor meg más gondok jönnek elő :) )

Akkor viszont lehet, hogy X.org dokumentációt kell olvasni, szerintem ott lesz a kutya elásva.


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

Az xte az csakugyan ordas gányolás, ellenben úgy néz ki, működik :] Azért megpróbálom kulturáltabban is, de legalább van remény.

Azért nézd meg, amit VaZso írt lentebb, meg amiket én linkeltem. Ez utóbbi is az X szerver felől közelíti a kérdést.


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. :)

Lehet, nem segít, de kiindulásnak jó lehet:

https://wiki.archlinux.org/index.php/Display_Power_Management_Signaling

Meg persze nézném a Xorg.0.log file-t is.


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

https://bbs.archlinux.org/viewtopic.php?id=33497


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

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...

Ha próbaképpen indítasz egy terminált (a grafikus felületen, akár a programod helyett) és az alól, kézzel adod ki ezeket, milyen eredményre jutsz?

Hátha így működik (és az indítással van gond mégis), vagy kapsz egy hibaüzenetet rá.

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)

Ha jól értem, amit írsz, akkor amikor terminálból indítottad, működött. Igaz?

Tehát szimplán indítva most sem megy?
Esetleg megnézhetem valamikor, én konkrétan hogyan indítom.

Igen, ha xinit--xtermből indul, akkor rendben van, ha az .xinitrc hívja/hívná, akkor nem.

...és .xinitrc-ből más elindul? (akár egy touch ~/valami.tst működik?)

Jó ötlet, betettem egy touch-ot a root, a pi user, és az /etc/X11/xinit/xinitrc -be is, úgy néz ki egyik sem fut le.

É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.

Ez is opció, de ha xinitből indul a program, akkor nem jelenik meg az egérkurzor a monitoron (ami ez esetben jól jön), a python meg valamiért nem hajlandó sem odébb tenni, sem eltűntetni a kurzort. Cserébe legalább a crontabból nyomogatott shift remekül megy :D

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...

Jó ötlet, esetleg maga a python is hívhatná induláskor az xsetet, hátha bejön. Legközelebb, ha megint a vas mellett vagyok, megnézem :)

+1 ill.
xset dpms force off
is lehet.
Viszont ha nem csak X, konzolra váltás esetén külön öröm volt (Ubuntu 12) még kiirtani.. [ van a console-tools csomag (gondot okozott, leszedtük), vagy a favágó módszer (acpi off már a grubnak)].

Ez sem jött be. Beleírtam a biztonság kedvéért a root és a user .xinitrc-jébe is. (a program amúgy /usr/bin/xinit /bin/su -l pi -c 'program' -- :0 sorral indul...)
De legalább a tákolás működik...

Megpróbáltál egy grafikus terminálprogramot elindítani, és onnan megnézni, mit ír, vagy mit csinál az xset?

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

:)

Nem egyszerűbb egy shell scriptbe egy exit 0-t írni? De nem az xscreensaver fut... :)


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