Bildirimlerle, ses seviyesini değiştirmek, anlık mesajlaşma vb. Gibi bazı yazılımların gönderdiği "OSD baloncukları" anlamına mı geliyor? Bunları yakalamak için bir python programı mı oluşturmak istiyorsunuz?
Eh, Ask Ubuntu bir programcının KG değil ve yazılım geliştirme kapsamın biraz ötesinde, ama burada bildirim kabarcıklarını yakalamak için yaptığım küçük bir kod:
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()
Bunu bir terminalde çalışır halde bırakın, ardından başka bir terminal penceresi açın ve test edin:
notify-send --icon=/usr/share/pixmaps/debian-logo.png "My Title" "Some text body"
Ve program bunu çıktılar:
[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'),...
Tahmin edebileceğiniz gibi message.get_args_list()[0]
, gönderen, simge için [2], özet için [3] ve gövde metni için [4].
Diğer alanların anlamları için resmi şartname belgelerine bakın
dbus-monitor "type='signal',interface='org.freedesktop.Notifications'"
hiçbir şeydbus-monitor "interface='org.freedesktop.Notifications'"
göstermez , ancak bildirimleri gösterir (tür 'sinyal' değil 'method_call' şeklindedir).