Przez powiadomienia rozumiesz „bąbelki OSD”, które wysyła niektóre oprogramowanie, takie jak zmiana głośności, czat itp.? Chcesz stworzyć program pythonowy do przechwytywania ich?
Cóż, Ask Ubuntu nie jest programistą, a programowanie jest nieco poza zakresem, ale oto mały kod, który przechwyciłem bańki powiadomień:
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()
Pozostaw to uruchomione w terminalu, a następnie otwórz inne okno terminala i przetestuj:
notify-send --icon=/usr/share/pixmaps/debian-logo.png "My Title" "Some text body"
A program wyświetli to:
[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'),...
Jak można się domyślać, message.get_args_list()[0]
jest to nadawca, [2] dla ikony, [3] dla streszczenia i [4] dla tekstu podstawowego.
Znaczenie innych pól można znaleźć w oficjalnej dokumentacji specyfikacji
dbus-monitor "type='signal',interface='org.freedesktop.Notifications'"
Pokazuje tylkodbus-monitor "interface='org.freedesktop.Notifications'"
powiadomienia (typ to „method_call”, a nie „signal”).