Моя система настроена таким образом, что при получении новой почты на экране появляется всплывающее уведомление. Иногда это удобно, а в другое время отвлекает. Без необходимости удалять интеграцию с gmail, которую я использую, есть ли способ централизованно переключать, будут ли отображаться определенные виды уведомлений?
Другими словами, я ищу приложение (или API), которое позволяет мне видеть список «зарегистрированных» приложений, использующих службу уведомлений, и переключать их как включенные / отключенные. Или что-то, что позволяет мне создавать одно или несколько регулярных выражений, которые можно использовать для сопоставления имени-источника-источника или содержимого-уведомления-пузыря, и, если совпадение происходит, для блокировки уведомления.
источник
Ответы:
Возможно, вы сможете отфильтровать это на уровне d-bus, но это выглядит как большая работа. Сначала посмотрите этот пост, чтобы понять, как работает OSD
Запустите dbus-monitor перед тем, как отправить команду «уведомить-отправить» на отдельной консоли.
notify-osd живет на dbus
но нет никаких дополнительных ограничений для этого сервиса в /etc/dbus-1/system.d
Таким образом, вы можете создать файл конфигурации, который может отфильтровывать события уведомлений по их источнику и обеспечивать контроль, который вам нужен. Это лучшее, что я могу сделать, не углубляясь в проблему и спецификацию dbus. Надеюсь, это поможет, то, что вы ищете, должно быть проще для начала.
источник
Это не так уж плохо, по крайней мере, для грубого общего решения.
Вот копия деталей из моего ответа на прошлогодний пост (сентябрь 2012) в
Как отключить уведомление от сетевого менеджера .
Замените
string "NetworkManager"
на нужное RE для определения блокировки.Чтобы получить представление о том, какое совпадение с шаблоном RE искать, выполните
dbus-monitor "interface='org.freedesktop.Notifications'"
команду : и посмотрите на вывод, пока появляются уведомления.
то есть. для удаления
notify-send
сообщений также используйте этуgrep
строку:Оговорка :
killall notify-osd
это недискриминационная и полностью удаляет стек уведомление всех ожидающих сообщений Независимо от того ,NetworkManager
илиnotify-send
является уведомительным агентом.«Честное» решение должно учитывать возможные условия гонки, когда между определением необходимости очистки уведомления и последующим выполнением этого поступает другое уведомление, которое должно всплыть и не быть очищенным с остальными.
Кроме того, если ожидающие уведомления ожидают, когда поступает блокирующее лицо-нарушитель, они все будут удалены. Эту ситуацию можно по крайней мере решить, сделав копию
dbus
ожидающих уведомлений, а затем повторно выполнив необходимыеnotify-send
после очистки.Это немного ручной трудоемкой работы!
В идеале прямое использование dbus
к конкретным целям только желаемых уведомлений, к сожалению, не очевидно ... однако ...
Другой ответ
Может ли org.freedesktop.Notifications.CloseNotification (uint id) быть запущен и вызван через DBus?
показывает, как использовать
[1]
, по крайней мере, сnotify-send
, но, к сожалению, не для произвольных уведомлений aps. хотя некоторые апс. иметь пользовательские интерфейсы для управления всплывающими уведомлениями.перекрестные ссылки:
источник