Por notificaciones, se refiere a las "burbujas de OSD" que envía algún software, como cambiar el volumen, chat de mensajería instantánea, etc. ¿Quieres crear un programa de Python para capturarlos?
Bueno, Ask Ubuntu no es el control de calidad de un programador, y el desarrollo de software está un poco más allá del alcance, pero aquí hay un pequeño código que capturé burbujas de notificación:
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()
Deje esto ejecutándose en una terminal, luego abra otra ventana de terminal y pruébelo:
notify-send --icon=/usr/share/pixmaps/debian-logo.png "My Title" "Some text body"
Y el programa generará esto:
[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'),...
Como habrás adivinado, message.get_args_list()[0]
es el remitente, [2] para el icono, [3] para el resumen y [4] para el texto del cuerpo.
Para conocer el significado de los otros campos, consulte los documentos de especificaciones oficiales
dbus-monitor "type='signal',interface='org.freedesktop.Notifications'"
no muestra nada perodbus-monitor "interface='org.freedesktop.Notifications'"
muestra notificaciones (el tipo es 'method_call' no 'signal').