Опитвам се да направя приложение на Python, което чете съобщенията, преминаващи през DBus, нещо, което дава същия изход на bash dbus-monitor. Според това, което получих от моето търсене, кодът трябва да е доста прост и ясен, нещо като:
import dbus, gobject
from dbus.mainloop.glib import DBusGMainLoop
def msg_cb(bus, msg):
args = msg.get_args_list()
print "Notification from '%s'" % args[0]
print "Summary: %s" % args[3]
print "Body: %s", args[4]
if __name__ == '__main__':
DBusGMainLoop(set_as_default=True)
bus = dbus.SessionBus()
string = "interface='org.freedesktop.Notifications',member='Notify'"
bus.add_match_string(string)
bus.add_message_filter(msg_cb)
mainloop = gobject.MainLoop ()
mainloop.run ()
Но като го стартирам, получавам само съобщението, върнато от DBus, че приложението е свързано, различно от това, което получавам, ако изпълня командата bash:
dbus-monitor --session interface='org.freedesktop.Notifications',member='Notify'
В този случай мога да гледам всички съобщения, отговарящи на условието на филтъра. Моля, някой да ми помогне да разбера къде се провалям? Благодаря
print
изход с този синтаксис в стил printf-C, въпреки че начинът за получаване на съобщенията ми се струва правилен. - person syntaxerror   schedule 11.10.2014