Beküldte 444tibi -
Fórum:
Mi tortenik akkor a rendszeren belul amikor a monitor visszater alvasbol? Lehet ezt detektalni, ha igen akkor hogyan?
Tehat nem piszkalom az egeret, se a billt, magara hagyom a gepet, a monitor a beallitott pl. 15 perc utan elmegy sleepbe, azaz bekövetkezik a "Kijelző kikapcsolása".
Megmozditom az egeret, a monitor visszakapcsol, ébred, es EZT a muveletet hogyan lehetne elcsipni es ezutan az alabbi parancsot lefuttatni? Vagyis akarhanyszor ha visszakapcsol a monitor, fusson le ez:
pactl set-card-profile 0 output:hdmi-stereo

elvileg próba csersznye...
Beküldte T.István -
Értékelés:
Elvileg KDE alatt a valahol nem tudom hol, de angolul Personalization>Notifications>Notifications>Screensaver
alatt lehet pl. üzeneteket megjeleníteni, vagy parancsokat megadni, de pontosan nem tudom, mert nem használok KDE-t. Illetve lehet egy ilyesmi szkripptel próbálkozni:
#!/bin/bash dbus-monitor --session "type='signal',interface='org.freedesktop.ScreenSaver'" | while read x; do case "$x" in *"boolean true"*) <Parancs ha fut a képernyővédő>;; *"boolean false"*) pactl set-card-profile 0 output:hdmi-stereo;; esac doneegyes rendszereken a monitor vezérlő parancsok többször is lefutnek egymás után, ez 5 másodperces intervallumokban csak 1x működik:
#!/bin/bash screen_locked () { if [[ $firstrun == '' ]] || [[ $(expr $(date +%s) - $firstrun) -ge 5 ]] then screen_locked_core; firstrun=$(date +%s); fi } screen_locked_core () { echo locked } dbus-monitor --session "type='signal',interface='org.freedesktop.ScreenSaver'" | while read x; do case "$x" in *"boolean true"*) <Parancs ha fut a képernyővédő>;; # *"boolean false"*) pactl set-card-profile 0 output:hdmi-stereo;; esac doneelvileg próba csersznye...
Beküldte 444tibi -
Értékelés:
A "ScreenSaver" az a képernyővédő? Ami mindenféle mintákat rajzol a képernyőre? Ha igen, akkor nem jó, én azt nem használom hanem 10 perc tétlenség után kikapcsol a monitor.
https://mega.nz/file/xph10QKI#85RNxyg163u7T_1mnYx6z8stXqAATFohxmVguGnyhvw
Itt valóban van egy lehetőség, hogy bizonyos eseménynél egy kiválasztott parancs lefusson, ezt egy másik lapon lehet beállítani de akkor fut le ha KIkapcsol a monitor. Én meg azt a valamit keresném amikor a rendszer BEkapcsolja.
Az a baj hogy egyáltalán gőzöm sincs, angolul hogyan is keressek erre, nem hnném hogy olyan gyakori kérdés ez hogy találatok ezreit hozná a kereső.
Xubuntu
Beküldte atime -
Értékelés:
Ha a nálad lévő rendszer egy Xubuntura telepitett Plasma, akkor elvileg ott az energiagazdálkodást az xfce4-power-manager végzi. Meg kellene nézni, hogy tényleg ő vagy esetleg valami más.
elvileg próba csersznye...
Beküldte T.István -
Értékelés:
Uhm, férleértetelk, bocs. Gondokodom a te eseteden, de koppan le a szemem, és annyira ásítozom, majd befalom a monitort. Most nem megyon a gondolkodás. Systemd init-re lehet még alapozni,ha jól tudom, a Xubuntu alatt ez van, de lehet, hogy tévedek.
van /usr/lib/systemd/ mappa? ez alatt létre kell hozni egy system-sleep nevű mappát.
ebbe beletenni egy skriptet, ami belül vahogy így néz ki:
#!/bin/bash if [ "${1}" == "pre" ]; then # <parancs elalvás előtt> elif [ "${1}" == "post" ]; then pactl set-card-profile 0 output:hdmi-stereo fivagy...
Beküldte T.István -
Értékelés:
Másik lehetőség a pm-utils, ennek a mappája /usr/lib/pm-utils/sleep.d
ebben a mappában van egy csomó elő gyártott skript, pl. van a 95led, aminek a feladata villogtatni a monitor led-jét, amikor alszik. Ezt mintának veheted, új szkriptet kell írni ebből kiindulva, ami kb. így néz ki:
#!/bin/sh [ -f /proc/acpi/ibm/led ] || exit $NA case "$1" in hibernate|suspend) # echo "7 blink" >/proc/acpi/ibm/led ;; thaw|resume) pactl set-card-profile 0 output:hdmi-stereo ;; *) exit $NA ;; esac exit 0ezt el kell menteni, úgy, hogy szám (96-99) legyen a fájlnév eleje, itt a szám azt jelenti, hogy hányadikként lesz lefuttatva, próba, cseresznye...
Xubuntu
Beküldte 444tibi -
Értékelés:
Ezt hogyan tudom megnézni?
Valamelyik logfájlba nem mentődik, mi történik akkor amikor visszakapcsolja a monitort?
Ez nem lehetne esetleg kiindulásnak jó valamire?
vagy...
Beküldte 444tibi -
Értékelés:
Aztaa, mik vannak, eről ledvillogtatásról pl. fogalmam sem volt.
Az hogyan történik amikor alvóba küldi a monitort?
Elveszi a háttérvilágítást, nullára, vagy a videokártyával csinál valamit, ez is igen érdekes téma. Legalábbis nekem.
Xubuntu
Beküldte atime -
Értékelés:
Ezt hogyan tudom megnézni? Terminálba: xfce4-power-manager-settings
Xubuntu
Beküldte 444tibi -
Értékelés:
Erre a válasz:
Az xfxe power manager nem fut. Elindítja most?
Én a Nem-re nyomtam.
Akkor a KDE manager fut gondolom..?
Mégegy. Van egy parancsikonom ami a
#!/bin/bash
sleep 2 && xset dpms force off
szkriptre mutat, erre kapcsolva kikapcsol a monitor. Sokszor használom, ha tudom hogy hoszabb időre magára hagyom a gépet.
Utána néztem ennek a DPMS-nek de nem lettem okosabb sajnos.
Ezt nem lehet figyelni, mit csinál ez?
Monitor bekapcsolása eseménynél mi történik pontosan?
Beküldte lala -
Értékelés:
Csak feltételezem hogy minderre azért lenne szükséged, mert alvásból visszatérés után
nincs hang - és ezzel a paranccsal hoznád vissza.
Ismered a megfelelő parancsot - nem lenne megoldás az ha csinálnál vele és egy a net.-ről
letöltött HDMI ikonnal egy indítót ? Ez ugyan nem hozná vissza automatikusan a hangot,
de egy kattintás elég lenne hozzá.
vagy...
Beküldte T.István -
Értékelés:
Az hogyan történik amikor alvóba küldi a monitort?
Elveszi a háttérvilágítást, nullára, vagy a videokártyával csinál valamit, ez is igen érdekes téma. Legalábbis nekem.
A lényeg, hogy vannak API-k. (Application Program Interface). Ezek rendszerenként eltérőek lehetnek, de van lehetőség lekérdezni, hogy mik állnak rendelkezésre. Az API-kat használva lehet lekérdezni, vezérelni. Ezt az oprendszer, driverek, programok végzik. A fent említett szkriptet meghívja a pm-utils, az lekérdezi a paraméterben átadott API állapotát, ha abban szerepel a "Hibernate" vagy "Suspend", akkor küld egy jelzést az ACPI processnek (annak az API-jára), hogy villogtassa a LED-et.
Monitor bekapcsolása eseménynél mi történik pontosan?
Beküldte 444tibi -
Értékelés:
Jelenleg pontosan így működik, ikon a panelen.
Csak, hogyismondjam, a szórakozós munkahelyi gépre sikerült egy Kubuntut feltennem, és eddig még nem söpört el a népharag, több évtizedes Wines múlttal rendelkező kollégáim egészen pozitív visszajelzésekett adtak és használják.
És van akinek ezt az egy kattintást is nehéz megmagyarázni.
Érdekes hogy ez egy teljesen más pc mint az enyém, mégis 10-ből 1x jelentkezik ugyanaz a hiba mint az enyémen.
Monitor visszajövet nem áll vissza hdmi-re a hang. Ezért keresgélek ezen a vonalon.
Nem nagy dolog de ugye a kihívás..
Amúgy láthatjátok hogy jó ideje semmi komoly nyavajgásom nincs pedig már 3 pc-n fut közvetlen közelembe az Ubi.
Ez a poszt is inkább unaloműzésből és némi agytréning miatt született.
Monitor bekapcsolása eseménynél mi történik pontosan?
Beküldte atime -
Értékelés:
Aha. Ez másik gép, semmiféle Xubuntu.
Monitor bekapcsolása eseménynél mi történik pontosan?
Beküldte 444tibi -
Értékelés:
Pontosan így van,
másik gép és Kubuntu, KDE felülettel telepítve.
Az én gépem meg először Xubuntu volt, és arra tettem a komplett KDE Plasmát.
Vagyis akkor ez KXubuntu mert tudok választani hogy XFCE vagy KDE felülettel induljon.
Monitor bekapcsolása eseménynél mi történik pontosan?
Beküldte 444tibi -
Értékelés:
Lehet nem jó úton járok,
addig eljutottam hogy a képernyő (monitor) állapotát így le lehet kérdezni:
tibi@TibiXubuntu:~$ xset -q |grep Monitor
Monitor is On
tibi@TibiXubuntu:~$ sleep 10 ; xset -q |grep Monitor
Monitor is Off
tibi@TibiXubuntu:~$
A sleep 10 azért hogy az enter lenyomása után el tudjam küldeni a monitort alvóba az xset dpms force off paranccsal.
És jól működik mert a sleep utáni grep kimenetbe ott a Monitor is Off.
Ezt lefuttatgatva mondjuk 10 másodpercenként, ha a kimenet Off akkor értelemszerűen semmit nem kell csinálni, de ha átvált ON-ba, akkor egyszer le kéne futni a pactl set-card-profile 0 output:hdmi-stereo parancsnak.
De csak 1x, és utána nyugalom, a következő Off-On váltásig.
Egyáltalán jó az elképzelésem, ha igen akkor viszont ennek a kivitelezése meghaladja a képességeimet.
Szerintem T.István is valami ilyesmi szkriptet csinált nekem csak az meg méginkább kínaiul van számomra.
Megoldva
Beküldte 444tibi -
Értékelés:
Nem saját fejből mert az nem ment, külső segítséggel elkészült a kis szkript ami a monitor ébredése után automatikusan visszakapcsolja a hdmi audiót.
#! /bin/bash function wait { sleep 10 } function monitor { xset q | grep -q "Monitor is On" } while true do while monitor do wait done while ! monitor do wait done pactl set-card-profile 0 output:hdmi-stereo done Ha valaki esetleg segítene értelmezni, hogyan is működik, azt nagyon megköszönném.Megoldva
Beküldte kimarite -
Értékelés:
Mármint, úgy „automatikusan”, ha megnyomsz egy elemet?
Vagy esetleg a crontab futtatja időközönként?
István nem mondta el, hogyan működik?
A wait és a monitor kifejezések a változók, behelyettesíthetőek később bárhova.
Amikor igaz (true) az xset kimenet, be lesz kapcsolva a HDMI stereo profil.
Megoldva
Beküldte 444tibi -
Értékelés:
István elkezdett magyarázni de tudod hogy erősen vannak korlátaim, azaz semmit nem értettem belőle, és Ő is azt írta hogy próba-cseresznye, azaz vagy működne vagy nem, és én meg a szkriptekkel kísérletezés napokig? nem menne, tudod hamar elfogy az erő belőlem.
Ezért feldobtam egy speciálisan szkriptekkel foglalkozó helyre a problémámat, szerencsére nem hajtottak el mint lámát és ott kaptam ezt a szkriptet. És működik.
Nem kell crontab mert ha 1x elindítom, akkor folyamatosan fut, ezt a feladatkezelőbe látom.
Halványan azt sejtem hogy 10 másodpercenként kekérdezi hogy a monitor épp on vagy off, és ez alapján fut le a végén lévő parancs minden monitor ébredésnél.
Megoldva
Beküldte T.István -
Értékelés:
akkor megpróbálom elmagyarázni:
#! /bin/bash <-kötelező bevezető, innen tudja a bash, hogy ez szkript, nem pedig a sült krumli receptje TXt-ben.
function wait <-függvény definiálása, a függvény neve WAIT.
{ <- nyitó karakter
sleep 10 <- a WAIT függvény tartalma / utasítás készlete, várakozik 10 időegységet
} <- záró karakter
function monitor <-függvény definiálása, a függvény neve MONITOR.
{<- nyitó karakter
xset q | grep -q "Monitor is On" <- a MONITOR függvény tartalma / utasítás készlete, lekérdezi a monitor állapotát, ami egy szöveg halmaz, ebben a szöveghalmazban grep-el keresi a "Monitor is On" sztringet, ha van találat, akkor lesz egy boolean érték is, aminek True az állapota, False, ha nincs találat.
}<- záró karakter
# // eddig tartott az u.n. definíciós szakasz, innen következik a végrehajtó szakasz
while true <-ciklus nyitás, a ciklus addig fut, amíg alábbi parancsok kimenetei igazak (True)
do < -csináld (az alábbiakat)
while monitor <- míg a Monitor függvény (fentebb definiálva) értéke igaz (True)
do <- csináld (az alábbiakat)
wait <- hajsd végre a wait függvényt (várakozz 10 időegységet)
done <- ennyi / kész (do / csinálás vége)
while ! monitor <- míg a Monitor függvény (fentebb definiálva) értéke hamis (False) #// megjegyzés: A felkiáltójel a negálás jele, azaz NOT a jelentése, tehát a parancs pontosan így szól: amíg a monitor függvény értéke NEM True
do <- csináld (az alábbiakat)
wait <- hajsd végre a wait függvényt (várakozz 10 időegységet)
done <- ennyi / kész (do / csinálás vége)
pactl set-card-profile 0 output:hdmi-stereo <- állítsd be a hangkimenetet a HDMI-re # -ez ugye a cikluson belül akkor fut le 10 időegységenként, ha a Monitor függyény értéke igaz.
done<- ennyi / kész (do / csinálás vége) - ez a legfelső While True záró parancsa.
Megoldva
Beküldte kimarite -
Értékelés:
A „function” kifejezést bash scriptben nem ismertem. Java scriptben találkoztam vele. Igen, akkor „wait” a várakozás, ami 10 másodperc, és ilyen időszakonként nézi a script, hogy a
parancsor kimenete-e a „Monitor is On”.
Ha igen (while true), azaz „igaz” (de korábban nem ez volt), akkor egyszer futtatja a parancsort:
Aztán fut tovább. A változást figyeli. A „Monitor is Off” -ról (vagy miről) a „Monitor is On” -ra.
Én ezen nem is gondolkodtam, annyira „elvoltatok”. :)
Megoldva
Beküldte kimarite -
Értékelés:
Tökéletes magyarázat. Tibi is érti szerintem.
Megoldva
Beküldte kimarite -
Értékelés:
Mondjuk annyiban nem jó a script, hogy folyamatosan futtatja a parancssort, ha „true”. Felesleges dolgot csinál.
Megoldva
Beküldte kimarite -
Értékelés:
Bár, ha úgy nézzük, ez nem nagy baj.
Mert, ha figyeltetnénk a hang beállítást, az is egy plusz lépés lenne.
Megoldva
Beküldte T.István -
Értékelés:
Mondjuk annyiban nem jó a script, hogy folyamatosan futtatja a parancssort, ha „true”. Felesleges dolgot csinál.
Igen, ez így meredeknek tűnik, de az egész rendszer (számítógépes rendszer) így működik, azaz gyakorlatilag ebből áll a működés lényege. Folyamtosan fut kismillió lekérdezés, USB portok állapota valami 5-20 ms időközönként (van-e valami bedugva), PCI alrendszer állapota, meg minden, az óra, az időzítés, klikk (egér) és billentyűzet (történ-e gomb lenyomása), minden őrült ciklusokból áll, amik folyamatosan figyelgetnek, lekérdeznek, és szabály szerint reagálnak. Ha egy parancsikon lenne az asztalon, amire klikkelve lefut a parancs, akkor is lenne egy folyamatos figyelés futtatása, ami azt figyeli, hogy klikkeltek-e a parancsikonon. Tehát az, hogy eseményvezérelt (ikonon klikkelés), vagy automatizált folyamatos futású job, az ebből a szempontból annyira nem tér el egymástól.
Lehetne a fenti kódba további eleganciát beletenni, hogy pl. egy változóval még figyelje, hogy volt-e az elöző ciklushoz képest változás, és csak akkor futtatná a hang átiránytását, de tulajdonképpen ez is csak további terhelést jelent, amit nyerünk a vámon, elveszítjük a réven. Jól van ez így, ahogy van.
Megoldva
Beküldte 444tibi -
Értékelés:
Igen megértettem, ez nem jelenti hogy egy hasonló feladatra megírnák egy ilyet de sokkal közelebb kerültem a működése megértéséhez mint a magyarázat előtt.
Nagy köszönettel tartozom Istvánnal a szájbarágós leírásért.
És az nekem is eszembe jutott hogy a monitor OFF alatt folyamatosan lefut a kimeneti parancs, viszont csináltam teszteket és nem így van.
Mivel el tudom küldeni a monitort alvóba, a set dpms force off paranccsal, erre van is egy ikonom a panelon, és visszatérésnél láttam többször hogy nem folyamatosan triggereli a pulseaudiót hogy hdmi-re álljon a hanem a monitor visszajövet után láttam pár másodperccel hogy akkor kapcsol visza hdmi-re.
A szkript alapján nem tudom ez hogyan működik de működik.
Vagy csak véletlen lenne, de 8-10x teszteltem.
Bátorkodtam a szkript írójától magyarázatot kérni, készségesen válaszolt, és ezt írta:
"Ugye van 2 függvény, a wait az simán vár 10 másodpercig, a monitor pedig lekérdezi a monitor állapotát. A főprogram először addig pörög amíg a monitor be van kapcsolva. Megnézi az állapotot, vár 10 másodpercet, megint megnézi és így tovább. Ha egyszer kikapcsoltnak látja a monitort átlép a második részbe ami hasonlóan működik de arra vár, hogy visszakapcsoljon a monitor. Ekkor lefut az általad adott parancs és kezdődik minden előlről."
Az utóbbit én sem találom pontosan a szkriptbe de valahogyan mégis így működik.
Bár ezek elvi síkú kérdések de szerintem nagyon érdekes téma, legalábbis nekem az.
Megoldva
Beküldte kimarite -
Értékelés:
Az utóbbit én sem találom pontosan a szkriptbe de valahogyan mégis így működik.
Mert utóbbi magyarázata:
Forrás:
https://linuxize.com/post/bash-while-loop/
És akkor ez így lenne (részlet):
Nekem úgy tűnt, így lenne jó.
A ! a nem, a false. Vagyis, amikor a monitor változó nem a „Monitor is On”, akkor ... (do)
Megoldva
Beküldte kimarite -
Értékelés:
Bár akkor is jó lehet, ha a második ellenőrzés után lép a parancssorra, mint a példád is mutatja.
Megoldva
Beküldte kimarite -
Értékelés:
Tévedtem. Minden úgy van, ahogy írja a tanácsadó. :)
(most volt időm belemélyedni)