... але це виглядає як багато роботи ...
Це не дуже погано, принаймні для сирого загального рішення.
Ось копія реквізитів моєї відповіді на минулорічну (вересня 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"' \
Caveat :
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
, але, на жаль, не для довільних повідомлень апс. хоча деякі апси. мати спеціальний інтерфейс для контролю спливаючих повідомлень.
перехресні посилання: