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.
- 9604 megtekintés
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
- A hozzászóláshoz be kell jelentkezni
Az nem fut, úgyhogy nem valószínű. Legnagyobb eséllyel a monitor saját energiatakarékos megoldása lesz a ludas.
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
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ő :) )
- A hozzászóláshoz be kell jelentkezni
Akkor viszont lehet, hogy X.org dokumentációt kell olvasni, szerintem ott lesz a kutya elásva.
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
É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. :)
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
https://bbs.archlinux.org/viewtopic.php?id=33497
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
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...
- A hozzászóláshoz be kell jelentkezni
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á.
- A hozzászóláshoz be kell jelentkezni
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)
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
Igen, ha xinit--xtermből indul, akkor rendben van, ha az .xinitrc hívja/hívná, akkor nem.
- A hozzászóláshoz be kell jelentkezni
...és .xinitrc-ből más elindul? (akár egy touch ~/valami.tst működik?)
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
É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.
- A hozzászóláshoz be kell jelentkezni
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
- A hozzászóláshoz be kell jelentkezni
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...
- A hozzászóláshoz be kell jelentkezni
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 :)
- A hozzászóláshoz be kell jelentkezni
+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)].
- A hozzászóláshoz be kell jelentkezni
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...
- A hozzászóláshoz be kell jelentkezni
Megpróbáltál egy grafikus terminálprogramot elindítani, és onnan megnézni, mit ír, vagy mit csinál az xset?
- A hozzászóláshoz be kell jelentkezni
echo "int main(){return 0;}" > xscreensaver.c
gcc -o xscreensaver xscreensaver.c
su -c "cp xscreensaver /usr/bin"
- A hozzászóláshoz be kell jelentkezni
:)
- A hozzászóláshoz be kell jelentkezni
Nem egyszerűbb egy shell scriptbe egy exit 0-t írni? De nem az xscreensaver fut... :)
tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE
- A hozzászóláshoz be kell jelentkezni