Моя система настроена таким образом, что при получении новой почты на экране появляется всплывающее уведомление. Иногда это удобно, а в другое время отвлекает. Без необходимости удалять интеграцию с gmail, которую я использую, есть ли способ централизованно переключать, будут ли отображаться определенные виды уведомлений?
Другими словами, я ищу приложение (или API), которое позволяет мне просматривать список «зарегистрированных» приложений, использующих службу уведомлений, и переключать их как включенные / отключенные. Или что-то, что позволяет мне создавать одно или несколько регулярных выражений, которые можно использовать для сопоставления имени-источника-источника или содержимого-уведомления-пузыря, и, если совпадение происходит, для блокировки уведомления.
Возможно, вы сможете отфильтровать это на уровне d-bus, но это выглядит как большая работа. Сначала посмотрите этот пост, чтобы понять, как работает osd
Запустите dbus-monitor перед отправкой запустить «уведомить-отправить» на отдельной консоли.
method call sender=:1.2450 -> dest=org.freedesktop.DBus serial=5 path=/org/freedesktop/DBus; interface=org.freedesktop.DBus; member=GetNameOwner string "org.freedesktop.Notifications" method call sender=:1.2450 -> dest=:1.41 serial=6 path=/org/freedesktop/Notifications; interface=org.freedesktop.Notifications; member=GetServerInformation method return sender=:1.41 -> dest=:1.2450 reply_serial=6 string "notify-osd" string "Canonical Ltd" string "1.0" string "1.1" method call sender=:1.2450 -> dest=:1.41 serial=7 path=/org/freedesktop/Notifications; interface=org.freedesktop.Notifications; member=Notify string "notify-send" uint32 0 string "/usr/share/pixmaps/debian-logo.png" string "My Title" string "Some text body" array [ ] array [ dict entry( string "urgency" variant byte 1 ) ] int32 -1
notify-osd действительно живет на dbus
dpkg -L notify-osd /usr/share/dbus-1/services/org.freedesktop.Notifications.service
, но нет никаких дополнительных ограничений для этого сервиса в /etc/dbus-1/system.d
. быть в состоянии создать файл конфигурации, который может отфильтровывать события уведомлений на основе их источника и обеспечивать контроль, который вам нужен. Это лучшее, что я могу сделать, не углубляясь в проблему и спецификацию dbus. Надеюсь, это поможет, то, что вы ищете, должно быть проще для настройки.
... но это похоже на большую работу...
Это не действительно слишком плохо, по крайней мере, для сырого универсального решения.
Вот копия деталей от моего ответа до прошлогоднего (сентябрь 2012) сообщение в
Как отключить уведомление от администратора сети.
dbus-monitor "interface='org.freedesktop.Notifications'" \
| grep --line-buffered 'string "NetworkManager"' \
| sed -u -e 's/.*/killall notify-osd/g' \
| bash
Замена string "NetworkManager"
с желаемым РЕ для определения блокирования.
Понять какой соответствие шаблона РЕ искать выполненный:
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. Уведомления. CloseNotification (uint идентификатор) быть инициированным и вызванным через DBus?
шоу, как использовать [1]
, по крайней мере, с notify-send
, но к сожалению не для произвольного уведомления aps., хотя некоторые aps. имеют пользовательские интерфейсы для управления раскрывающимися уведомлениями.
перекрестные судьи.: