... но, похоже, много работы ...
Это не так уж плохо, по крайней мере, для грубого общего решения.
Вот копия деталей из моего ответа на прошлогодний пост (сентябрь 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. хотя некоторые апс. иметь пользовательские интерфейсы для управления всплывающими уведомлениями.
перекрестные ссылки: