알림은 볼륨 변경, IM 채팅 등과 같은 일부 소프트웨어가 전송하는 "OSD 버블"을 의미합니까? 그것들을 캡처하기 위해 파이썬 프로그램을 만들고 싶습니까?
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'입니다).