Eltérő asztali környezetek eltérő mód kezelik az energia kezelési funkciókat. az egyik eltérs, hogy a média lejátszás közben alvó módba tudják, avagy nem tudják tenni a gépet. Nekem az ez elvárásom, hogy meghatározott idő után altasson, akkor is, ha egy filmet meg. Ezt nem feltétlen oldja meg a gyári, az asztali környezethez kapott program, így mást kellett keresnem. Ezt a témát járjuk körbe.
A xautolock egy egyszerű, de rendkívül hasznos Linuxos segédprogram, amely automatikusan zárolja a képernyőt, ha egy ideig nem történik semmilyen felhasználói aktivitás (egérmozgás vagy billentyűleütés). Különösen hasznos olyan asztali környezetekben, amelyek nem rendelkeznek beépített képernyőzár funkcióval, vagy ha valaki saját képernyővédő megoldást szeretne használni. Itt csak kiragadott és egyszerű példákat hozok, a teljes leírása itt található.
Bár leggyakrabban képernyőzárásra használják, de bármilyen más parancs is futtatható vele, azaz ha inaktív vagy, és nem használod a gépet ezzel a megoldással egy feltöltést, vagy egy nagyobb eszközigényű feladatot is elindíthatsz.
Főbb jellemzők
- Időzített zárolás: Megadott percek után zárolja a képernyőt.
- Tetszőleges zároló program: Alapból az xlock-ot használja, de bármilyen más program (pl. i3lock, physlock) is megadható.
- Értesítés zárolás előtt: Parancs futtatható a zárolás előtt, például értesítés küldése.
- Sarkok kezelése: A képernyő sarkaiban különféle műveletek rendelhetők el (pl. zárolás tiltása, azonnali zárolás).
- Alvó üzemmód detektálása: A -detectsleep opcióval a gép alvó módba lépését is figyelembe veszi.
- Kézi vezérlés: Parancssori kapcsolókkal azonnali zárolás, engedélyezés/letiltás, újraindítás stb.
Nem alap program, így a rendszerednek megfelelő csomagkezelővel rakd fel. Eddig mindegyik disztribúcióban ott volt, így nem jelent problémát.
Ami fontos: X11 teszteltem, de van esélye, hogy Wayland alatt is futni fog. Ezt nem teszteltem!
Alapvető működés
A xautolock figyeli az X11 kiszolgálót, és ha meghatározott ideig nem történik aktivitás, akkor elindít egy megadott parancsot - például egy képernyőzárót.
Tipikus használat:
xautolock -time 10 -locker "i3lock"
Ez a parancs azt jelenti, hogy ha 10 percig nincs aktivitás, akkor a rendszer elindítja az i3lock nevű képernyőzárót.
Ami fontos! Én ezt i3wm alatt használtam a legtöbbet, így sok példa erre vonatkozik, de simán át lehet írni az idézőjelek közti részt.
xautolock -time 20 -locker "systemctl suspend" &
Háttérben fut, és tíz perc után elindítja a systemctl suspend parancsot. Logikusan bármelyik systemctl kapcsolóval
Részletes példák
1. Alapértelmezett képernyőzáróval
xautolock -time 5 -locker "xscreensaver-command -lock"
Ez 5 perc inaktivitás után zárolja a képernyőt az xscreensaver segítségével.
2. Értesítés a zárolás előtt
xautolock -time 10 -locker "i3lock" -notify 30 -notifier "notify-send 'Képernyőzár 30 másodperc múlva...'"
Ez a beállítás 10 perc inaktivitás után zárolja a képernyőt, de 30 másodperccel korábban figyelmeztet egy értesítéssel, mielőtt az i3lock elindulna.
Hasznos, ha szól előtte, hogy mit tesz.
3. Kivétel kezelés: nolock
Ha valamilyen alkalmazás (pl. filmnézés, prezentáció) során nem szeretnénk, hogy a képernyő lezárjon, akkor a xautolock kikapcsolható egy fájl jelenléte alapján:
xautolock -time 10 -locker "i3lock" -killer "test -e /tmp/nolock"
Ha létezik a /tmp/nolock fájl, akkor nem történik zárolás. Hasznos például filmlejátszó szkriptekben:
touch /tmp/nolock vlc mymovie.mp4 rm /tmp/nolock
A fenti nolock megoldás szerintem kicsit felesleges, de ismerni nem árt, ha pld. olyan szkriptet írsz, aminek a futása alatt nem lenne ideális altatni a gépet. Simán a szkriptben létrehozod a zároló állományt, majd a végén törlöd azt.
4. Alkalmazásfigyelés (példa: ne zároljon, ha Zoom fut)
Ehhez külső szkriptre van szükség:
#!/bin/bash if pgrep zoom > /dev/null; then exit 1 else i3lock fi
Majd ezzel indítjuk a xautolock-ot:
xautolock -time 10 -locker "/path/to/script.sh"
Ezt is megadhatjuk egy parancsban:
xautolock -time 10 -locker "if ! pgrep zoom; then i3lock; fi" &
Hasznos opciók
- -detectsleep - automatikusan újraindítja az időzítőt felfüggesztés után
- -corners - beállítható, hogy az egér bizonyos sarokba húzásával megelőzhető vagy kiváltható a zárolás
Például:
xautolock -time 10 -locker "i3lock" -corners 00+- -cornerdelay 5
Ebben a példában:
- bal felső és jobb felső sarok: semmi különös (0)
- bal alsó sarok (+): azonnal zárol
- jobb alsó sarok (-): megakadályozza a zárolást
Hasznos kapcsoló lehet a -cornersize 20 ami a sarok méretét adja meg pixelben.
Én ezt az opciót nem használom.
Pár xautolock kapcsoló, a gyorsabb munkáért
Azonnali zárás parancssorból:
xautolock -locknow
Zárás letiltása ideiglenesen:
xautolock -disable xautolock -enable # Újraaktiválás
Az xautolock alapvetően egy időzítővel dolgozik, amely inaktivitás esetén egy megadott parancsot indít el. Ha azonban különböző időintervallumokon belül különböző akciókat szeretnél végrehajtatni, a lehetőségek korlátozottak, de van néhány megoldás:
Másodlagos időzítő: -killtime és -killer opciók
Az xautolock támogat egy másodlagos időzítőt, amely a képernyőzáró elindítása után egy újabb időzítés lejártával egy másik parancsot futtat le. Ez tipikusan például automatikus kijelentkeztetésre vagy gépleállításra használható.
xautolock -time 10 -locker "i3lock" -killtime 5 -killer "notify-send 'Kijelentkeztetés 5 perc múlva!'"
Ebben a példában:
- 10 perc tétlenség után elindul az i3lock.
- Ha a felhasználó nem jelentkezik vissza, 5 perc múlva lefut a notify-send parancs (vagy lehet akár kijelentkeztetés is, pl. pkill -KILL -u $USER)
Több időintervallumhoz több xautolock példány
Ha teljesen eltérő időzítéseket és akciókat szeretnél, futtathatsz több xautolock példányt különböző paraméterekkel, de ügyelj arra, hogy ezek ne zavarják egymást (pl. különböző locker vagy egyéb parancsokkal).
5 perc után értesítés:
xautolock -time 5 -locker "notify-send 'Figyelem! Mindjárt zárolás!'" &
10 perc után zárolás:
xautolock -time 10 -locker "i3lock" &
Az xautolock nem tud tetszőleges számú, egymástól független időzítőt és akciót kezelni egy példányon belül, de a fenti lehetőségekkel a legtöbb igény lefedhető.
Ha összetettebb megoldás a cél, akkor lehet szkripteket is írni.