Я также искал решение для сбора уведомлений на рабочем столе через dbus с помощью скрипта python. Этот вопрос был самым близким, с которым я столкнулся с поисковой системой, но написать замену для уведомления-osd показалось излишним:)
Глядя на недавние источники уведомлений, я получил несколько советов о том, как отслеживать сообщения dbus и вот реализация python, с которой я столкнулся:
import gtk
import dbus
from dbus.mainloop.glib import DBusGMainLoop
def filter_cb(bus, message):
# the NameAcquired message comes through before match string gets applied
if message.get_member() != "Notify":
return
args = message.get_args_list()
# args are
# (app_name, notification_id, icon, summary, body, actions, hints, timeout)
print("Notification from app '%s'" % args[0])
print("Summary: %s" % args[3])
print("Body: %s", args[4])
DBusGMainLoop(set_as_default=True)
bus = dbus.SessionBus()
bus.add_match_string(
"type='method_call',interface='org.freedesktop.Notifications',member='Notify'")
bus.add_message_filter(filter_cb)
gtk.main()
Надеюсь, это поможет кому-то, поскольку, кажется, не так много простых примеров python, связанных с мониторингом сообщений dbus.