Закладка: Кнопка «Закрыть» на уведомлении-osd?
ссылка:
Концепции, предварительно проверенные, bash
«отключенное» граффити-решение «OSD» задумано и заштриховано как:
dbus-monitor "interface='org.freedesktop.Notifications'" | \
grep --line-buffered "member=Notify" | \
sed -u -e 's/.*/killall notify-osd/g' | \
bash
Это может быть выполнено в терминале или в качестве фоновой задачи - остановите его и возобновите всплывающее окно с граффити.
ОП заявил «Нет, я не могу отключить его». Если это означает, что система уведомлений НЕ ДОЛЖНА быть отключена из-за проблем, то это решение соответствует этому. Система не повреждена. Если это означает, что проблемка не знает, как это сделать, то снова решение уместно.
Подробности объяснены ниже строки. В конечном итоге все будет встроено в (в?) DBus, чтобы напрямую вызывать
qdbus org.freedesktop.Notifications \
/org/freedesktop/Notifications \
org.freedesktop.Notifications.CloseNotification(uint id)
Очень, очень, очень наивное рудиментарное решение, которое является скорее доказательством концепции, чем практическим, по существу «отключает» notify-osd
(или, по крайней мере, его последствия). Не забудьте прекратить его, когда закончите тестирование! ETX'ng с <ctrl> -C или закрытием окна терминала и т. д. Он делает свою работу, но не очень прагматично! так как, к сожалению, другие страдают, пытаясь сделать свое ...
while true; do killall notify-osd; done
(чтобы «услышать» соответствующую деятельность, которую вы могли бы « grep
выйти»
notify-osd: no process found ....
)
Проверьте это, запустив его в окне терминала и из другого окна терминала попробуйте выполнить:
notify-send "test 1" "now you see it not"
notify-send "test 2" "you see it not after test 1 evaporates"
notify-send "test 3" "finally after test 2 evaporates"
Остановите первый процесс, а затем повторите сообщения.
Возможно, notify-osd
индикатор для unity-panel-service
может вызвать killall notify-osd
. Кнопка закрытия горячих точек не будет (и не может!) Находиться в окне уведомлений, но будет доступна на панели индикаторов. Это полностью аналогично той же концепции, что и Unity для окон. Использование верхней панели для закрытия уведомлений аналогично тому, как Unity изгоняет оконные меню с закрытыми, мини, макси-блоками на верхней панели меню.
По-настоящему элегантное решение будет иметь индикатор, появляющийся, когда активность DBus для notify-osd
манифестов, и исчезает, когда нет ожидающих уведомлений.
Это может также решить проблему с накоплением уведомлений - за один раз можно увидеть только одно, и если ожидают несколько уведомлений, каждое из них должно испариться до появления следующего - их обычно нельзя увидеть одновременно.
DBus-monitor
«нг notify-osd
интерфейс уведомлений, однако , будет обеспечивать немедленное подтверждение в ожидании уведомления , даже если есть один уже показывает. (И если killall notify-osd
выдается сразу же - presto poof!)
Выберите All, перетащите в окно терминала следующие тесты:
notify-send "test 1" "now you see it"
notify-send "test 2" "you see it after test 1 evaporates"
notify-send "test 3" "finally after test 2 evaporates"
Теперь сделайте то же самое с p {r} oof:
notify-send "test 1" "now you don't"
notify-send "test 2" "you see it not! after test 1 evaporates"
notify-send "test 3" "NOT finally after test 2 evaporates"
killall notify-osd
notify-send "gonzo" "gone nada zip zilch"
В killall notify-osd
предлагаемом решении будет срабатывать при DBus monitor
обнаружении всплывающих меню OSD граффити.