Per notifiche intendi le "bolle OSD" che alcuni software inviano, come la modifica del volume, la chat IM, ecc.? Vuoi creare un programma Python per catturarli?
Bene, Ask Ubuntu non è un QA di un programmatore e lo sviluppo del software è un po 'oltre lo scopo, ma ecco un piccolo codice che ho fatto per catturare le bolle di notifica:
import glib
import dbus
from dbus.mainloop.glib import DBusGMainLoop
def notifications(bus, message):
if message.get_member() == "Notify":
print [arg for arg in message.get_args_list()]
DBusGMainLoop(set_as_default=True)
bus = dbus.SessionBus()
bus.add_match_string_non_blocking("interface='org.freedesktop.Notifications'")
bus.add_message_filter(notifications)
mainloop = glib.MainLoop()
mainloop.run()
Lasciare questo in esecuzione in un terminale, quindi aprire un'altra finestra del terminale e testarlo:
notify-send --icon=/usr/share/pixmaps/debian-logo.png "My Title" "Some text body"
E il programma produrrà questo:
[dbus.String(u'notify-send'), dbus.UInt32(0L), dbus.String(u'/usr/share/pixmaps/debian-logo.png'), dbus.String(u'My Title'), dbus.String(u'Some text body'),...
Come avrai intuito, message.get_args_list()[0]
è il mittente, [2] per l'icona, [3] per il riepilogo e [4] per il testo del corpo.
Per il significato degli altri campi, consultare i documenti ufficiali sulle specifiche
dbus-monitor "type='signal',interface='org.freedesktop.Notifications'"
non mostri nulla madbus-monitor "interface='org.freedesktop.Notifications'"
mostri notifiche (il tipo è 'method_call' non 'signal').