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
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?
:)
Nem egyszerűbb egy shell scriptbe egy exit 0-t írni? De nem az xscreensaver fut... :)
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE