DBusを通過するメッセージを読み取るpythonアプリケーションを作成しようとしています.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'
この場合、フィルター条件に一致するすべてのメッセージを監視できます。私が失敗した場所を理解するのを手伝ってくれる人はいますか? ありがとう