... но, похоже, много работы ...
Это не так уж плохо, по крайней мере, для грубого общего решения.
Вот копия деталей из моего ответа на прошлогодний пост (сентябрь 2012) в
Как отключить уведомление от сетевого менеджера .
dbus-monitor "interface='org.freedesktop.Notifications'" \
| grep --line-buffered 'string "NetworkManager"' \
| sed -u -e 's/.*/killall notify-osd/g' \
| bash
Замените string "NetworkManager"на нужное RE для определения блокировки.
Чтобы получить представление о том, какое совпадение с шаблоном RE искать, выполните
dbus-monitor "interface='org.freedesktop.Notifications'"
команду : и посмотрите на вывод, пока появляются уведомления.
то есть. для удаления notify-sendсообщений также используйте эту grepстроку:
| grep --line-buffered 'string "NetworkManager"\|string "notify-send"' \
Оговорка :
killall notify-osdэто недискриминационная и полностью удаляет стек уведомление всех ожидающих сообщений Независимо от того , NetworkManagerили notify-sendявляется уведомительным агентом.
«Честное» решение должно учитывать возможные условия гонки, когда между определением необходимости очистки уведомления и последующим выполнением этого поступает другое уведомление, которое должно всплыть и не быть очищенным с остальными.
Кроме того, если ожидающие уведомления ожидают, когда поступает блокирующее лицо-нарушитель, они все будут удалены. Эту ситуацию можно по крайней мере решить, сделав копию dbusожидающих уведомлений, а затем повторно выполнив необходимые notify-sendпосле очистки.
Это немного ручной трудоемкой работы!
В идеале прямое использование dbus
method void org.freedesktop.Notifications.CloseNotification(uint id) [1]
к конкретным целям только желаемых уведомлений, к сожалению, не очевидно ... однако ...
Другой ответ
Может ли org.freedesktop.Notifications.CloseNotification (uint id) быть запущен и вызван через DBus?
показывает, как использовать [1], по крайней мере, с notify-send, но, к сожалению, не для произвольных уведомлений aps. хотя некоторые апс. иметь пользовательские интерфейсы для управления всплывающими уведомлениями.
перекрестные ссылки: