A válasz egyszerű! Írjunk egy bash szkriptet! Sokat gondolkodtam, mire végül rájöttem arra, hogy filmezés közben legjobb a processzor (CPU) terhelését mérni és ha a terhelés magasabb egy átlagos nyugalmi állapotban levő CPU terhelési értékétől, akkor a bash szkript 1 pixellel elmozdítja az egeret, majd visszaállítja, ezzel újraindítva az X grafikai szerver nyugalmi állapot számlálóját, ami méri, hogy mennyi idő maradt a számítógép alvó állapotba való helyezéséig (ugyanez igaz a monitor kikapcsolására is, hibernációra, azaz az Energiakezelő opciójaira).
Sajnos a bash nem tud parancsokat küldeni az X szervernek (amin az Xfce, MATE, Cinnamon felület is fut), ezért a következő csomagot kell telepíteni
sudo apt install xautomation
Ez a csomag tartalmazza az xte parancsot, ami szimulálni tudja az egér és a billentyűzet műveleteket. Így pl. meg tudjuk mozdítani az egeret egy pixelnyire:
xte 'mousermove 1 1'
Majd visszaállítani:
xte 'mousermove -1 -1'
Wayland-en nem hiszem, hogy működnek a fenti parancsok.
A CPU terhelésének kiszámítását nem taglalom részletesen, mert ez benne van a bash szkriptben, csak annyit, hogy a /proc/stat adatai alapján minden másodpercben kiszámolja a szkript a CPU terhelését és ezen értékek 1 perces átlagát ezrelékekben, majd ha a ez az érték magasabb egy megadott alapértéknél akkor megmozdítja az egérmutatót.
A cat /proc/stat a következőket adja:
cpu 7757438 883 1432948 10899182 7618 0 237391 0 0 0 cpu0 1954763 246 343614 10608611 7474 0 88845 0 0 0 cpu1 1975930 210 312963 97441 25 0 66092 0 0 0 cpu2 1824151 193 435734 96054 69 0 37003 0 0 0 cpu3 2002593 232 340637 97075 48 0 45450 0 0 0 ...
A bash szkript csak az első (cpu) sor összesített cpu magok adataival számol.
Tapasztalat útján arra jöttem rá, hogy ezrelékekben könnyebb számolni és precízebb CPU terhelési adatokat kapok, elkerülve ezzel a lebegőpontos (nem egész, tört számokkal) való műveleteket.
Továbbá meghatároztam, hogy a saját gépemen a CPU nyugalmi állapotának a terhelése átlagosan 15 ezrelék percenként, azaz 1,5%. Ennek dupláját, tehát 30 ezreléket használok mint határértéket a bash szkriptben, mert egy egyszerű offline zenelejátszás a háttérben nem eredményez kevesebb mint 40 ezrelékes CPU terhelést. Az offline/online rádiózás, zenehallgatás, filmezés, letöltések, fájl másolások, frissítések és egyéb intenzív folyamatok garantáltan meghaladják a CPU 30 ezrelékes leterhelését percenkénti átlagban.
Végső soron mindenki határozza meg a saját gépén levő Linuxon a CPU nyugalmi állapotának terhelését az alábbi bash szkript segítségével, majd változtasson a határértéken. A szkript kiírja a percenkénti átlagos terhelést ezrelékekben.
Majd ha a határérték meg van állapítva és ennek megfelelően módosítva a szkript, akkor egy tetszőleges nevű, pl. cputerh.sh fájlban kell elmenteni az alábbi bash szkriptet, majd sudo chmod +x ~/cputerh.sh. A fájlnak a felhasználó gyökérkönyvtárában (~) kell lennie, mert ott található a .bashrc amit megnyitunk, majd hozzáadjuk a végén a következő sort, elmentjük, hogy automatikusan fusson a bash szkriptünk rendszerindításkor a háttérben a szöveges kimenetének átirányításával a semmibe (null).
. ~/cputerh.sh >/dev/null &
Hogy fut-e a szkriptünk, megnézhetjük a jobs paranccsal, ami az alábbi választ kell hogy kiírja:
[1]+ Running . ~/cputerh.sh > /dev/null &
Végül is az alábbiakban található a teljes bash szkript, kommentekkel ellátva:
#!/bin/bash
#A másodperc számlálót 0-ra állítjuk
sleep_time=0
#Egy végtelen While-do (Ameddig valami, csináld) ciklust indítunk
while :; do
# Get the first line with aggregate of all CPUs
# Vegyük a /proc/stat táblázatának első vonalát, ami a CPU teljes terhelését mutatja
cpu_now=($(head -n1 /proc/stat))
# Get all columns but skip the first (which is the "cpu" string)
# Vegyük az összes oszlopot, de átugorjuk az elsőt, mert az nem tartalmaz adatot
cpu_sum="${cpu_now[@]:1}"
# Replace the column seperator (space) with +
# Az oszlop elválasztó üres helyeket + jellel helyettesítjük (összeadjuk az értékeket)
cpu_sum=$((${cpu_sum// /+}))
# Get the delta between two reads
#Vegyük a kettő leolvasott CPU terhelési érték különbségét (mostani mínusz előző)
cpu_delta=$((cpu_sum - cpu_last_sum))
# Get the idle time Delta
# Vegyük a CPU kettő leolvasott nyugalmi értékének különbségét (mostani mínusz előző)
cpu_idle=$((cpu_now[4]- cpu_last[4]))
# Calc time spent working
# Kiszámoljuk a CPU munkaidejét
cpu_used=$((cpu_delta - cpu_idle))
# Calc percentage
# Kiszámoljuk a CPU terhelését százalékban
cpu_usage=$((100 * cpu_used / cpu_delta))
# Keep this as last for our next read
# A jelenleg kiszámolt értékeket megvigyázzuk a következő ciklusra mint régi értékek
cpu_last=("${cpu_now[@]}")
cpu_last_sum=$cpu_sum
#Az alábbi kikommentelt vonal kiírja másodpercenként a CPU terhelését százalékban ha a # jelet eltávolítjuk
# echo -n " CPU $cpu_usage%"
# Minden kiszámolt CPU terhelési százalékot összeadunk és tárolunk 1 percig
cpu_all=$((cpu_all + cpu_usage))
#Ha a lefutott ciklusok száma elérte az 59-et, azaz 1 percet akkor:
if [ $sleep_time = 59 ]; then
#Kiszámoljuk a CPU 1 perces terhelési átlagát ezrelékekben és kiírjuk az echo paranccsal
cpu_avg=$((10 * cpu_all / sleep_time))
echo -n " -> 1perces CPU terhelési átlag: $cpu_avg‰ |"
#Ha a terhelési átlag nagyobb 30 ezreléknél (HATÁRÉRTÉK!), megmozgatjuk az egeret 1 pixellel, majd visszaállítjuk
if [ $cpu_avg -ge 30 ]; then
xte 'mousermove 1 1'
xte 'mousermove -1 -1'
echo "egérmozgás"
fi
#Nullára állítjuk az alábbi értékeket az újabb ciklusra
sleep_time=0
cpu_all=0
fi
# Wait a second before the next read
#Várunk 1 másodpercet
sleep 1
#Összeadjuk a másodperceket
sleep_time=$((sleep_time + 1))
#Itt a ciklus vége, indulhatunk újra
doneRemélem hasznosnak bizonyul ez a kis szkript és ha van benne hiba, nyugodtan lehet írni és javítom. Jó kisérletezést!

Hozzászólások
Cinnamon
Beküldte T.István -
Értékelés:
Cinnamon alatt nem megy alvóba a gép, képernyővédő sem indul, ha videós alkalmazás fut. Legalábbis VLC, meg OBS studio futtatásakor tuti. Egyik általam telepített gépen sem.
Caffeine-indicator
Beküldte csuhas32 -
Értékelés:
Én a Caffeine-indicator-t szoktam elindítani és aktiválni, ha arra van szükségem, hogy ne induljon el a képernyővédő, ne zároljon a fiók és kapcsoljon ki a kijelző. Deaktiválni is kézzel kell, ez is igaz, de nekem azért megfelel.
Cinnamon
Beküldte dmaraci90 -
Értékelés:
Nálam sajnos Linux Mint 20-as Xfce felületen, 5.4 LTS kernelel alvó állapotba megy a Lenovo Ideapad IAP320-as gépem filmnézés közben. Valami ACPI gond lehet, mert bootoláskor valamit kiír, de lényegtelen, mert ezzel a bash szkripttel megoldottam.