Posielanie notifikacii cez dbus v Pythone

Posielanie upozorneni/notifikacii cez notify-send alebo kdialog nie je nic tazke, avsak ani jeden program neumoznuje nahradit existujucu notifikaciu tou novou. Cez kdialog si posielam notifikaciu o atualnej pesnicke, ako som pisal v clanku o Ncmpc++ (hudobny prehravac). Avsak, ked preskakujem pesnicky, teda na 2 sekundy hra pesnicka ‘A’, potom sekundu pesnicka ‘B’ a az na pesnicku ‘F’ mam naladu, vytvori sa fronta 6 notifikacii, z ktorych kazda trva napr. 3 sekundy. Jednak to otravuje (dokopy 18 sekund trvajuce notifikacie v rohu obrazovky) a jednak notifikacie nezodpovedaju skutocnosti (vsetky notifikacie okrem najnovsej su zastarale). Rozne hudobne prehravace, napr. Amarok, notifikacie neradia do fronty, ale vzdy sa nahradi posledna notifikacia tou najnovsou. Takze ja to tiez takto spravim.

Problem som chcel vyriesit volanim qdbus takymto sposobom:

qdbus org.freedesktop.Notifications /org/freedesktop/Notifications org.freedesktop.Notifications.Notify '' 0 '' 'NADPIS' 'TELO' '' 0 0

Ta prva 0 je cislo notifikacie, ktoru chcem nahradit. Info o ostatnych argumentoch je k dispozicii cez program ‘qdbus’ alebo graficky ‘qdbusviewer’. Horny prikaz skonci chybou

Sorry, can't pass arg of type 'QVariantMap'

Podla mudrych ludi na internete je to riesitelne jedine tak, ze si napisem vlastny skript v C/Pythone/nieco_ine, ktory by volal metodu org.freedesktop.Notifications.Notify().

Vystraha ;) Nie som pythonista a kod nizsie je v poradi druhy subor v pythone, ktory som kedy napisal.

Kod pre Python2.7 je stiahnutelny tu. Okrem volania metody Notify() si musim pamatat aj ID poslednej notifikacie, ktore na zaciatku citam a na konci zapisujem do suboru cat /tmp/dbus-notify-id-file. Kod ako taky funguje, a pouzivam ho spolu s ncmpcpp (dolezity riadok v ~/.ncmpcpp/config:

execute_on_song_change = "/home/cinan/system/bin/dbus-notify.py \"`ncmpcpp --now-playing %t{\ \(%l\)}`\" \"`ncmpcpp --now-playing {%a}{\ -\ %b}`\""
Reklamy

Pridaj komentár

Zadajte svoje údaje, alebo kliknite na ikonu pre prihlásenie:

WordPress.com Logo

Na komentovanie používate váš WordPress.com účet. Odhlásiť sa / Zmeniť )

Twitter picture

Na komentovanie používate váš Twitter účet. Odhlásiť sa / Zmeniť )

Facebook photo

Na komentovanie používate váš Facebook účet. Odhlásiť sa / Zmeniť )

Google+ photo

Na komentovanie používate váš Google+ účet. Odhlásiť sa / Zmeniť )

Connecting to %s