通知とは、音量の変更、IMチャットなど、一部のソフトウェアが送信する「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」ではありません)を示した通知を。