Я пытаюсь отфильтровать каждое уведомление через espeak. Однако я не могу найти способ получить тело уведомления из скрипта Python или даже какое имя_сигнала для прослушивания.
bus.add_signal_receiver(espeak,
dbus_interface="org.freedesktop.Notifications",
signal_name="??")
Попытка Google для этого только, кажется, дает результаты, связанные с созданием новых уведомлений, так что я совершенно потерян.
Кто-нибудь может мне помочь с этим?
Короче говоря, я хочу прослушивать входящие уведомления, используя python, и получать атрибут «body» уведомления.
dbus-monitor "type='signal',interface='org.freedesktop.Notifications'"
показывает, аdbus-monitor "interface='org.freedesktop.Notifications'"
показывает уведомления (тип «method_call», а не «signal»).Ответы:
Чтобы поддерживать это в актуальном состоянии: начиная с версии dbus 1.5. При добавлении строки совпадения требуется дополнительный параметр,
bus.add_match_string_non_blocking
чтобы убедиться, что мы все получили.Результирующий код будет следующим:
источник
unable to connect to session bus: Operation was cancelled
. Переходимbus
к фильтру.from gi.repository import GLib as glib
было сделать эту работу.Под уведомлениями вы имеете в виду «пузыри OSD», которые посылает какое-либо программное обеспечение, например, изменение громкости, чат в чате и т. Д.? Вы хотите создать программу на Python, чтобы захватить их?
Ну, Ask Ubuntu - это не QA для программиста, и разработка программного обеспечения немного выходит за рамки, но вот небольшой код, который я сделал для захвата уведомлений:
Оставьте это работающим в терминале, затем откройте другое окно терминала и проверьте его:
И программа выведет это:
Как вы уже догадались,
message.get_args_list()[0]
это отправитель, [2] для значка, [3] для сводки и [4] для основного текста.Для значения других полей, проверьте официальные документы спецификации
источник
У меня были проблемы с тем, чтобы заставить работать какие-либо другие примеры, но в конце концов я попал туда. Вот рабочий пример:
Если вы хотите увидеть более подробный рабочий пример, я рекомендую посмотреть на Notifications.py в проекте недавних уведомлений .
источник