Jakiś czas temu pisałem jak blokować wygaszacz ekranu w SMplayer/Mplayer. Teraz przedstawiam skrypt, który będzie blokował wygaszacz przy każdej wybranej przez nas aplikacji.
Idea jest taka, aby nie podnosić się z fotela gdy oglądamy film, gramy na padzie, oglądamy slideshow ze zdjęć tylko po to aby ruszyć myszką i wyłączyć wygaszacza. Ale nie chcemy wyłączać wygaszacza w ogóle. I tu pomocą przychodzi nam skrypt.
#!/bin/bash
# XScreenSaver-Inhibiter #
# by QkiZ #
# www.qkiz.pl #
#CreativeCommons BY-NC-SA#
looptest=1 # zmienna do zapętlenia w nieskończoność
programy="mplayer,totem,mame" # lista aplikacji przy których xscreensaver ma przestać działać
while [ $looptest == 1 ]
do # pętla główna
ps -C $programy > /dev/null #sprawdź czy istnieje proces którejś z aplikacji
if [ $? == 0 ]
then # jeśli tak to...
if ps -C xscreensaver > /dev/null # sprawdź czy działa w pamięci wygaszacz
then # jeśli wygaszacz działa to go zamknij
xscreensaver-command -exit > /dev/null
fi
else # jeśli nie ma żadnej z aplikacji w pamięci
if ! ps -C xscreensaver > /dev/null # jeśli nie ma procesu wygaszacza
then
xscreensaver -no-splash & # uruchom wygaszacz
fi
fi
sleep 60 # za ile sekund ma pójść kolejne sprawdzenie
done
Osobiście używam i polecam wygaszacz ekranu XScreenSaver i do niego jest ten skrypt dostosowany. Jeśli ktoś chce to pewnie da radę go dostosować do Gnome-Screensaver. Jak widać w kodzie jest wszystko opisane co się dzieje. Całość opiera się na programie 'ps' z opcją drukowania informacji na temat wybranych procesów. Później jest sprawdzany exit code tego polecenia i na tym się opiera mechanizm decyzji o tym co zrobić dalej. Jeśli w pamięci pojawi się choć jeden z podanych procesów, automatycznie przy kolejnym cyklu sprawdzania wygaszacz zostanie wyłączony. Gdy opuścimy wszystkie aplikacje z listy, wygaszacz zostanie przywrócony.
Aby dodać aplikacje do skryptu musimy w jakimś monitorze systemu zobaczyć jaka jest nazwa ich procesów (zazwyczaj taka jak nazwa polecenia). Gdy już mamy tą nazwę wpisujemy ją w linijce zaczynającej się od programy=.... Nie używamy spacji!! Następnie podajemy liczbę sekund po którym będzie kolejny cykl sprawdzania czy aplikacje są aktywne. To zależy od naszego gustu, ale lepiej aby liczba sekund nie była większa niż liczba sekund do wywołania wygaszacza w stanie bezczynności. Na sam koniec wrzucamy go do programów startowych. Ważne jest też aby chodził na prawach użytkownika.
Skrypt jest na licencji Creative Commons, więc można go dowolnie modyfikować i upubliczniać.