Par notifications, vous entendez les "bulles OSD" que certains logiciels envoient, comme le changement de volume, le chat IM, etc.? Vous voulez créer un programme python pour les capturer?
Eh bien, Ask Ubuntu n'est pas l'AQ d'un programmeur, et le développement de logiciels est un peu au-delà de la portée, mais voici un petit code que j'ai fait capturer des bulles de notification:
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()
Laissez cela s'exécuter dans un terminal, puis ouvrez une autre fenêtre de terminal et testez-le:
notify-send --icon=/usr/share/pixmaps/debian-logo.png "My Title" "Some text body"
Et le programme affichera ceci:
[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'),...
Comme vous l'avez peut-être deviné, message.get_args_list()[0]
est l'expéditeur, [2] pour l'icône, [3] pour le résumé et [4] pour le corps du texte.
Pour la signification des autres champs, consultez les documents officiels de spécifications
dbus-monitor "type='signal',interface='org.freedesktop.Notifications'"
ne montre rien mais qu'elledbus-monitor "interface='org.freedesktop.Notifications'"
affiche des notifications (le type est 'method_call' et non 'signal').