Na CLI, você pode exibir e fechar um pop-up de notificação via gdbus
/ qdbus
.
Veja como fazer isso com gdbus
:
gdbus call --session --dest org.freedesktop.Notifications --object-path /org/freedesktop/Notifications --method org.freedesktop.Notifications.Notify my_app_name 42 audio-card "Message" "Body" [] {} 20
isto produzirá algo como:
(uint32 72,)
72
sendo a notificação ID
. Agora que você conhece o ID
, é possível fechar a janela pop-up com:
gdbus call --session --dest org.freedesktop.Notifications --object-path /org/freedesktop/Notifications --method org.freedesktop.Notifications.CloseNotification 72
Agora, se você precisar do ID
mais tarde, basta gravá-lo em um arquivo quando chamar Notify
:
gdbus call --session --dest org.freedesktop.Notifications --object-path /org/freedesktop/Notifications --method org.freedesktop.Notifications.Notify my_app_name 42 audio-card "Message" "Body" [] {} 20 | sed 's/[^ ]* //; s/,.//' > /tmp/last_id
e consiga-o de lá quando quiser fechar o pop-up:
gdbus call --session --dest org.freedesktop.Notifications --object-path /org/freedesktop/Notifications --method org.freedesktop.Notifications.CloseNotification $(cat /tmp/last_id)
P.S. Estou no Gnome 3 e as notificações enviadas via notify-send
, pynotify
, libnotify
etc duram apenas 5 segundos, independentemente da opção time
(esse é o comportamento padrão no Gnome 3, não me pergunte por quê). Além disso, eles não se acumulam: o Gnome exibe apenas uma notificação por vez. Então não posso testar com várias janelas pop-up, mas deve funcionar.