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 date, whoami 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.