Порограммное закрытие уведомлений

Есть ли способ закрывать висящие уведомления программно, дабы можно было это на хоткей повесить?
уведомления типа notify-send "блабла" -u critical
От демона нотификаций зависит. В dunst это: ctrl+space. Что к чему в кедах - хз...
Aivar
От демона нотификаций зависит
в настройках уведомлений нет опции закрыть\очистить уведомления или типа того

может через dbus можно чего-то послать
grayich
notify-send
А не проще указать длительность по времени?
Но если уж так хочется, то рекомендую использовать другие приложения, которые поддерживают скрытие уведомлений, а вот notify-send эту функцию не поддерживает.

grayich
может через dbus можно чего-то послать
Можно, но с notify-send это всеравно не прокатит ... и лучше тогда вообще отказаться от этих утилит и перейти на чистый D-BUS.
Ошибки не исчезают с опытом - они просто умнеют
vasek
скрытие уведомлений, а вот notify-send эту функцию не поддерживает
Есть установка длительности показа, а остальное дело уже самого демона/оболочки уведомлений.
В плазме хоткей вроде только на ''не беспокоить'' можно настройками накостылять скрывать уведомления с -u critical
vs220
Есть установка длительности показа
Об этом и спрашивал ТС
vasek
А не проще указать длительность по времени?.
Но если длительность не указана (уведомление висит вечно), то скрыть/удалить его в notify-send не получится - он это не умеет.
Ошибки не исчезают с опытом - они просто умнеют
vasek
в notify-send не получится - он это не умеет.
Я к тому что это не его задача, это должна делать оболочка демона уведомлений
vs220
это должна делать оболочка демона уведомлений
Повторюсь - при использовании notify-send это сделать не получиться никакими средствами ...
Когда то давно интересовался этим и экспериментировал с уведомлениями используя чистый D-BUS, который многое умеет.
notify-send - это клиент, который вызывает API-интерфейс уведомлений DBUS. В спецификации API определена команда, которая может скрыть уведомление, но notify-send это не поддерживает.
Ошибки не исчезают с опытом - они просто умнеют
vasek
при использовании notify-send это сделать не получиться никакими средствами
-
Aivar
От демона нотификаций зависит. В dunst это: ctrl+space
vs220
vasek
при использовании notify-send это сделать не получиться никакими средствами
-
Aivar
От демона нотификаций зависит. В dunst это: ctrl+space
Можешь не верить ....
В части высказывания Aivar - он прав в том, что в dunst такая опция имеется и ее даже можно назначать самому
Согласно man dunst
-key key
      remove notification by pressing key.
-all_key key
      remove all notifications by pressing key.
Повторюсь, в спецификации API определена команда replace, использую которую можно скрыть/удалить уведомление, созданные разными утилитами, НО notify-send не поддерживает это.
Плюс к этому, как пишут - notify-send не возвращает идентификатор уведомления, поэтому вы не можете удалить или заменить уведомление впоследствии.

А вот используя чистый D-BUS, без всяких утилит, это можно провернуть - раньше делал это примерно так
- отравка уведомлений
gdbus call --session \
           --object-path=/org/freedesktop/Notifications \
           --session --dest=org.freedesktop.Notifications \
           --method=org.freedesktop.Notifications.Notify \
           -- "" N "" "NAME" "message" '[]' '{"urgency": <1>}' t
где
N - не помню, как называется, но связано с ID уведомлений: если 0 - номера в порядке увеличения; если указать число, непример, 100, то это будет ID посланного уведомления. ID необходим для замены или скрытия/удаления уведомления
NAME - тип/категория уведомления, если не нужно, оставить пустое поле
message - текст уведомления
t - время показ уведомления
- скрытие/удаление уведомления
gdbus call --session \
           --object-path=/org/freedesktop/Notifications \
           --session --dest=org.freedesktop.Notifications \
           --method=org.freedesktop.Notifications.CloseNotification N
Можно, но никогда сам этого не делал, выводить звук и др.

PS - если последняя строка отправки выглядит так
– "" 0 "" "TEST" "message-test" '[]' '{"urgency": <1>}' 5000
то после запуска увидим в консоле - (uint32 32,) - где 32 это и есть порядковый ID уведомдения ... а само уведомление будет таким
TEST
message-test
Если же последнюю строчку записать в виде (ID присвоили сами равным 100)
-- "" 100 "" "TEST" "message-test" '[]' '{"urgency": <1>}' 50000
то после запуска увидим в консоле - (uint32 100,) ..... время большое и если сейчас запустить команду
gdbus call --session \
           --object-path=/org/freedesktop/Notifications \
           --session --dest=org.freedesktop.Notifications \
           --method=org.freedesktop.Notifications.CloseNotification 100
то сообщение исчезнет.
Ошибки не исчезают с опытом - они просто умнеют
 
Зарегистрироваться или войдите чтобы оставить сообщение.