OSD notifikace v Linux & upozorneni na dokonceni prikazu

Obcas potrebujeme zobrazit OSD (On-screen display) notifikaci v Linuxu. Jsou to male okynka/bubliny, ktere vyskoci vetsiou pobliz systray s informaci a po chvili se zavrou. Ja rad pouzivam OSD notifikace na upozoroneni na konec kompilace a podobnych dlouho trvajicih cinnosti.

Jendotlive ukazky budeme demonstrovat na prikladu kompilace. Je mozne je pouzit libovolne jinak.

1. E-mail

Notifikace e-mailem je jednoducha a prijde i do mobilu, pokud mame synchronizovanou postu. Jeji nevyhodou je pouziti mailu a nutnost mit nainstalovany mailserver.

Samotna notifikace:

echo "Text e-mailu" | mail -s "Predmet e-mailu" mail@example.net

Pouze pokud se kompilace povede:

make && echo "Kompilace je hotova" | mail -s "kompilace" mail@example.net

Po jakemkoliv vysledku kompilace:

make ; echo "Kompilace je hotova" | mail -s "kompilace" mail@example.net

2. aosd_cat

Ponekud lepsi je program aosd-cat. Nalezneme ho v balickach Ubuntu. Umi klasicke desktopove OSD notifikace, tedy zadny mail. Proste vyskoci text na monitoru, nema zadny ramecek/okno, jenom text. V manualu je podrobne popsane nastaveni, umi toho dost. Proto jenom jednoduchou ukazku:

make ; echo "Kompilace je hotova" | aosd_cat --font="Ubuntu 24" \
--fade-full=5000 --position=6 --x-offset=100 --transparency=2

Rychlopopis prikazu: zobrazi text na 5 sekund, 100 pixelu od leveleho dolniho kraje monitoru, pruhlenodst nastavena na composite (2).

3. notify_send

Je asi nejvice elegantni metoda. Pouziti je stejne, jako v bodu 1, pouze nahradime text kurzivou nize uvedenym prikazem.

notify-send "Nadpis" "Dlouhy text zpravy\na text na novem radku"
notify-send -t 5000 "Nadpis" "Dlouhy text zpravy\na text na novem radku"
notify-send  "Aktualni datum a cas" "`date`" 
notify-send -t 5000 "Aktualni prihlaseny uzivatel" "`whoami`"
notify-send -t 5000 "Vyuziti disku" "`df -hT`"

notify-send -u low -t 5000 "Nadpis" "Dlouhy text zpravy\na text na novem radku" 
notify-send -u normal -t 5000 "Nadpis" "Dlouhy text zpravy\na text na novem radku"
notify-send -u critical -t 5000 "Nadpis" "Dlouhy text zpravy\na text na novem radku"

make && notify-send "Kompilace" "Kompilace byla uspesne dokoncena"
make ; notify-send "Kompilace" "Kompilace byla dokoncena"

Nejjednodussi syntaxe je „nadpis“ „text zpravy“. V textu je mozne pouzivat escape sekvence, napr. kvulu zalomeni radku. Parametr t je doba zobrazeni notifikace v milisekundach. Jak text notifikace je mozne pouzit vystup z libovolneho prikazu. V ukazce prikaz datewhoami a df.

Je mozne nastavit dulezitost. Mozne jsou 3 hodnoty. Pokud pouzijeme critical, nepouzije se timeout. Notifikace pak je zobrazene do te doby, nez ji uzivatel odklikne mysi.

Pokud se budeme drzet prikladu kompilace, je pouziti obdobne, pouze nepredavame nic rourou.

notify-send -i /home/martin/Stažené/Baby-Tux-icon.png "Nadpis" "Dlouhy text zpravy\na text na novem radku"

Pro zvyrazneni je mozne notifikaci pridat ikonu. Jak rika dokumentace:

The notification icon. This is represented either as a URI (file:// is the only URI schema supported right now) or a name in a freedesktop.org-compliant icon theme (not a GTK+ stock ID).

notify-send -i /home/martin/Stažené/Baby-Tux-icon.png "Nadpis" "Dlouhy text zpravy\na text na novem radku"

Druha moznost je pouzit systemovou ikonu. Ty jsou v podadresarich /usr/share/icons/gnome/32×32/ :

martin@meo2:~$ ls -R /usr/share/icons/gnome/32x32/
/usr/share/icons/gnome/32x32/:
actions  apps  devices  emblems  emotes  mimetypes  status

/usr/share/icons/gnome/32x32/actions:
call-start.png                 format-text-underline.png      gtk-underline.png             system-search.png
...

/usr/share/icons/gnome/32x32/apps:
accessories-character-map.png  file-manager.png         libreoffice-startcenter.png
...
/usr/share/icons/gnome/32x32/devices:
ac-adapter.png        camera-photo.png  drive-multidisk.png  input-tablet.png     network-vpn.png
...
/usr/share/icons/gnome/32x32/emblems:
emblem-default.png    emblem-mail.png     emblem-readonly.png    emblem-web.png
...
/usr/share/icons/gnome/32x32/emotes:
...
face-cool.png    face-glasses.png      face-plain.png      face-smile-big.png  face-tired.png
...
/usr/share/icons/gnome/32x32/mimetypes:
application-certificate.png       libreoffice-oasis-drawing.png                libreoffice-oasis-web-template.png
...
/usr/share/icons/gnome/32x32/status:
appointment-missed.png        battery-good-charging.png  image-missing.png               software-update-urgent.png
...

Nazev se udava bez cesty a bez pripony. Priklad pro ikonu /usr/share/icons/gnome/32×32/emotes/face-cool.png :

notify-send -i face-cool "Nadpis" "Dlouhy text zpravy\na text na novem radku"

Spise pro zajimavost – jednoduse lze monitorovat obsah souboru:

tail -n 0 -f /var/log/syslog | while read line; do notify-send "Syslog" "$line"; done

jakmile na konci souboru pribyde novy radek, okamzite vyskoci notifikace. Zrovna na syslog to neni dobry napad. Behem chvili budeme mit plny monitor notifikaci.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *