Закладка: кнопка "Закрити" на notify-osd?
посилання:
Концепції, попередньо перевірені, bash
"d OSD спливаючі графіті" відключені "рішення мислиться і вилуплюється як:
dbus-monitor "interface='org.freedesktop.Notifications'" | \
grep --line-buffered "member=Notify" | \
sed -u -e 's/.*/killall notify-osd/g' | \
bash
Це можна запустити в терміналі або як фонове завдання - зупиніть його і спливаючі графіті відновляться.
ОП заявило: "Ні, я не можу його відключити". Якщо це означає, що система сповіщення НЕ бути відключена користувачем, то це рішення відповідає цьому. Система неушкоджена. Якщо це означає, що учасник не знає, як це зробити, тоді рішення доречно.
Деталі пояснюються нижче рядка. Кінцевим було б вставити все на (у?) БД, щоб безпосередньо викликати
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 для Windows. Використання верхньої панелі для закриття сповіщень аналогічно тому, як Unity висилає меню вікон із закритими, міні, полями maxi до верхнього рядка меню.
По-справжньому елегантне рішення показало б, що індикатор з'явиться, коли діяльність DBus для notify-osd
маніфестів і зникне, коли немає очікуваних сповіщень.
Він також може вирішити проблему складених сповіщень - одночасно їх можна побачити, і якщо очікується кілька сповіщень, кожне з них має випаровуватися до появи наступного - зазвичай їх не можна побачити одночасно.
DBus-monitor
«Нг notify-osd
інтерфейс повідомлень, проте , буде забезпечувати негайне підтвердження в очікуванні повідомлення , навіть якщо є один вже показує. (І якщо killall notify-osd
видається негайно - presto poof!)
Виберіть Все, перетягніть та перетягніть у вікно терміналу наступні тести:
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.