sobota 25. září 2010

Jak si přizpůsobit notifikační systém Ubuntu - Notify-OSD

Update 13.2.2011
Trochu toto téma shrnu, když už to používám v každém skriptu.
Notify-OSD se poprvé objevil v Ubuntu 9.04 Jaunty a nahrazuje notifikace grafického prostředí Gnome (koncepce počítá i s KDE, ale to je zatím mimo můj zájem). To jsou ty bubliny, které se tu a tam zobrazují vpravo nahoře a informují o různých událostech. Faktem je, že oproti původním Gnome notifikacím, je Notify-OSD graficky přitažlivější a modernější, ale oproti původnímu systému ztratil ten nový možnost jakéhokoliv přizpůsobení uživatelem. Je to zkrátka nedotažené a to zcela úmyslně, možnosti nastavení se zatím oficiálně neplánují...



Změnilo se jen pár věcí - jednak se prodloužila doba po kterou se notifikace zobrazuje, z původních ještě snesitelných pěti sekund, na nesnesitelných deset, a dále se změnilo pozicování notifikací, kdy se rezervuje místo pro notifikace typu "změna hlasitosti" apod. a ostatní notifikace se zobrazují níže, i když vyhrazenou pozici žádná notifikace nezabírá. Vypadá to divně, dá se na to zvyknout, ale pokud vyměníte HD monitor za netbook s vertikálním rozlišením 600 bodů, uvědomíte si, že to vypadá opravdu blbě. Jediné, co se dalo na Notify-OSD změnit, bylo přesunout bubliny z pravého horního rohu, do pravého středu (v Lucidu je to zas trochu jinak..). Naštěstí tu ale máme alternativu v podobě upraveného Notify-OSD, který vytvořil Roman Sukochev alias leolik. Jeho verze je konfigurovatelná pomocí textového souboru a není to složité, našel se ovšem další dobrodinec Amandeep Grewal, který napsal i grafický konfigurátor, jehož obsluhu zvládne i opoce.

Upravený Notify-OSD

Notifikace upravené panem Sukochevem nabízí libovolnou změnu umístění notifikací, odsazení od pravého horního rohu obrazovky a rozestupy, a dále nabízí celkem vyčerpávající možnosti změny vzhledu, doby zobrazení a zrušení zmíněné vyhrazené zóny, kdy se všechny notifikace zobrazují od shora a případně se řadí pod sebe.


Instalace
Přidejte si mezi zdroje repozitář a nainstalujte upravený Notify-OSD:

$ sudo add-apt-repository ppa:leolik/leolik
$ sudo apt-get update && sudo apt-get upgrade

Nastavení se provádí v souboru ~/.notify-osd, ale, jak jsem zmínil, můžete si editaci usnadnit instalací grafického nástroje:

$ sudo add-apt-repository ppa:amandeepgrewal/notifyosdconfig
$ sudo apt-get update && sudo apt-get install notifyosdconfig

Pozor, pro Ubuntu 10.10 Maverick ještě nejsou k dispozici balíky, pokud tedy po update repozitáře dostanete chybu, dají se použít balíky pro Lucida:

$ sudo sed -i 's/maverick/lucid/g' /etc/apt/sources.list.d/amandeepgrewal-notifyosdconfig-maverick.list
$ sudo apt-get update && sudo apt-get install notifyosdconfig

Nebo rovnou stáhnout a nainstalovat instalační balíky:

32 bit
https://launchpad.net/~amandeepgrewal/+archive/notifyosdconfig/+files/notifyosdconfig_0.1-6~lucid1_i386.deb

64 bit
https://launchpad.net/~amandeepgrewal/+archive/notifyosdconfig/+files/notifyosdconfig_0.1-6~lucid1_amd64.deb

Po instalaci najdete položku NotifyOSD Cconfiguration v menu Aplikace > Příslušenství.


Nastavení pozice notifikací
Nastavení pozice se neděje přes zmíněný konfigurační soubor, ale zápisem hodnoty do GConf (databáze nastavení Gnome aplikací). Nastavení se provádí příkazem z terminálu:

$ gconftool-2 -s /apps/notify-osd/gravity --type=int [číslo]

kde [číslo] udává pozici:

1 - pravý horní roh (standardní umśtění)
2 - vpravo uprostřed
3 - pravý dolní roh
4 - levý dolní roh
5 - vlevo uprostřed
6 - levý horní roh

Pokud budete chtít notifikace přesunout do levého dolního rohu, napíšete do terminálu následující příkaz:

$ gconftool-2 -s /apps/notify-osd/gravity --type=int 4


Využívání notifikací z příkazové řádky
Notifikace můžete samozřejmě používat i ve svých vlasních skriptech a programech, já dnes popíšu to nejzákladnější použití z Bashe. Pro vyvolání notifikace budete potřebovat program notify-send z balíku libnotify-bin z repozitáře Universe.

$ sudo apt-get install libnotify-bin

notify-send funguje s původními notifikacemi Gnome i s Notify-OSD, kde má ale o pár možností méně. Jeho základní syntaxe je následující:

$ notify-send -i /cesta/k/ikoně "Hlavička sdělení" "Tělo sdělení" -t 1000

Výška bubliny nesmí přesáhnout deset řádků. Užitečným přepínačem je -t, jehož parametrem je čas v milisekundách a můžete jím změnit trvání notifikace. Tento přepínač s neupraveným Notify-OSD nefunguje a jelikož notifikace ve svých skriptech používám hodně, velmi mě potěšilo, že leolikova verze již na něj slyší. Ostatní přepínače jsou podle mého zjištění s Notify-OSD neužitečné.

Historie notifikací Notify-OSD
Pokud nestačíte nějakou tu notifikaci přečíst, nebo se chcete podívat, jestli vám něco neuniklo, můžete si jednoduše vypsat log, který se nachází v souboru ~/.cache/notify-osd.log a maže se s každým restartem systému.

$ cat ~/.cache/notify-osd.log | less


Odkazy:
https://wiki.ubuntu.com/NotifyOSD
https://launchpad.net/~leolik/+archive/leolik
https://launchpad.net/notifyconf
http://www.webupd8.org/2010/05/new-notifyosdconfiguration-version-gui.html
http://www.webupd8.org/2010/05/gui-to-configure-notifyosd-in-ubuntu.html
http://maketecheasier.com/easily-customize-notifyosd-ubuntu-lucid/2010/05/26

8 komentářů:

  1. Díky moc za článek, o tomhle bych se jinak jen těžko dozvěděl. :)

    OdpovědětSmazat
  2. Ahoj, chtel bych dat do bubliny vystup z programu ale nevim jak na to. treba fotku z webkamery, nebo teplotu disku., jak na to?diky

    OdpovědětSmazat
  3. Ahoj, možná jsi správně nepochopil, k čemu jsou notifikace určené. Notifikace jsou krátká sdělení, která se objeví na chvíli a pak zase zmizí. Fotku tam můžeš dostat pouze jako ikonu, textové informace jsou na tobě - použití z příkazové řádky je v článku popsáno. Možná ale hledáš něco jiného..

    OdpovědětSmazat
  4. ikona a fotka to chapu ale chtel bych vystup z teploty disku, lze to nejak?

    OdpovědětSmazat
  5. Teplotu disku disku zjistíš třeba programem hddtemp:
    http://wiki.ubuntu.cz/Monitorov%C3%A1n%C3%AD%20hardwaru#hddtemp

    OdpovědětSmazat
  6. jo to vim čim zjistim teplotu disku, potrebuju z txt souboru cist data a ty zobrazit v bublině. Lze to?

    OdpovědětSmazat
  7. Jistě, že to jde, jen je potřeba podívat se na základy skriptování v bashi ;)
    Pokud bys chtěl například zobrazit celý obsah textového souboru můžeš to udělat takto:

    notify-send "Obsah souboru:" "`cat soubor.txt`"

    Výška bubliny ale nesmí přesáhnout deset řádků.

    OdpovědětSmazat
  8. Díky moc. Notify OSD mě štvalo tím hrozně dlouhým zobrazováním bubliny. Nyní upraveno na 2 sec. :)

    OdpovědětSmazat

Zkuste prosím při komentováni používat místo volby Anonymní volbu Název/adresa URL, kde vyplníte nějakou přezdívku, adresu zadávat nemusíte. Vědět, které příspěvky jsou od jednoho člověka, je fajn. Díky.

Pokud by se vám náhodou odeslaný komentář na stránce nezobrazil, vytáhnu ho z koše hned jak si toho všimnu. I Google spam filter se občas sekne.