Mit Benachrichtigungen meinen Sie die "OSD-Blasen", die einige Software sendet, wie z. B. Ändern der Lautstärke, IM-Chat usw.? Sie möchten ein Python-Programm erstellen, um diese zu erfassen?
Nun, Ask Ubuntu ist keine Qualitätssicherung für Programmierer, und die Softwareentwicklung geht etwas über den Rahmen hinaus, aber hier ist ein kleiner Code, mit dem ich Benachrichtigungsblasen erfasst habe:
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()
Lassen Sie dies in einem Terminal laufen, öffnen Sie dann ein anderes Terminalfenster und testen Sie es:
notify-send --icon=/usr/share/pixmaps/debian-logo.png "My Title" "Some text body"
Und das Programm gibt Folgendes aus:
[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'),...
Wie Sie vielleicht erraten haben, message.get_args_list()[0]
ist der Absender [2] für das Symbol, [3] für die Zusammenfassung und [4] für den Textkörper.
Informationen zur Bedeutung der anderen Felder finden Sie in den offiziellen Spezifikationsdokumenten
dbus-monitor "type='signal',interface='org.freedesktop.Notifications'"
nichts anzeigt, aberdbus-monitor "interface='org.freedesktop.Notifications'"
Benachrichtigungen anzeigt (Typ ist 'method_call', nicht 'signal').