Под уведомлениями вы имеете в виду «пузыри OSD», которые посылает какое-либо программное обеспечение, например, изменение громкости, чат в чате и т. Д.? Вы хотите создать программу на Python, чтобы захватить их?
Ну, Ask Ubuntu - это не QA для программиста, и разработка программного обеспечения немного выходит за рамки, но вот небольшой код, который я сделал для захвата уведомлений:
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()
Оставьте это работающим в терминале, затем откройте другое окно терминала и проверьте его:
notify-send --icon=/usr/share/pixmaps/debian-logo.png "My Title" "Some text body"
И программа выведет это:
[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'),...
Как вы уже догадались, message.get_args_list()[0]
это отправитель, [2] для значка, [3] для сводки и [4] для основного текста.
Для значения других полей, проверьте официальные документы спецификации
dbus-monitor "type='signal',interface='org.freedesktop.Notifications'"
показывает, аdbus-monitor "interface='org.freedesktop.Notifications'"
показывает уведомления (тип «method_call», а не «signal»).