Indicador: botão Fechar no notify-osd?
ref:
Conceitos comprovados, bash
a solução "desativada" de graffiti pop-up OSD é concebida e eclodida como:
dbus-monitor "interface='org.freedesktop.Notifications'" | \
grep --line-buffered "member=Notify" | \
sed -u -e 's/.*/killall notify-osd/g' | \
bash
Isso pode ser executado em um terminal ou como uma tarefa em segundo plano - pare e o graffiti pop-up é retomado.
O OP declarou "Não, não posso desativá-lo". Se, com isso, significa que o sistema de notificação NÃO deve ser desativado pelo posudo, essa solução é consistente com isso. O sistema está intacto. Se isso significa que o posudo não sabe como fazê-lo, novamente a solução é pertinente.
Detalhes explicados abaixo da linha. O melhor seria incorporar tudo no (no?) DBus, invocar diretamente
qdbus org.freedesktop.Notifications \
/org/freedesktop/Notifications \
org.freedesktop.Notifications.CloseNotification(uint id)
Uma solução rudimentar muito, muito, muito ingênua, que é mais uma prova de conceito do que prática, essencialmente "desativa" notify-osd
(ou pelo menos seus efeitos). Não se esqueça de encerrá-lo quando concluir os testes! por ETX'ng com <ctrl> -C ou fechando a janela do terminal etc. Ele faz seu trabalho, mas não de forma muito pragmática! porque, infelizmente, outros empregos sofrem tentando fazê-los ...
while true; do killall notify-osd; done
(para "ouvir" atividade relevante que você pode querer " grep
sair"
notify-osd: no process found ....
)
Teste executando-o em uma janela de terminal e, a partir de outra janela de terminal, tente:
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"
Pare o primeiro processo e tente as mensagens novamente.
Talvez um notify-osd
indicador para o unity-panel-service
poderia invocar killall notify-osd
. O botão Fechar localizado (e não pode!) Fica na janela de notificação, mas está disponível no painel indicador. Isso é completamente análogo ao mesmo conceito que o Unity possui para o Windows. O uso da barra superior para o fechamento de notificações é semelhante à maneira como o Unity exila os menus da janela com caixas mini, maxi e fechadas na barra de menus superior.
Uma solução verdadeiramente elegante faria com que o indicador aparecesse quando a atividade do DBus para os notify-osd
manifestos e desaparecesse quando não houvesse notificações pendentes.
Também pode resolver o problema das notificações empilhadas - apenas uma pode ser vista por vez e, se houver várias notificações pendentes, cada uma deve evaporar antes da próxima aparecer - elas geralmente não podem ser vistas simultaneamente.
DBus-monitor
'ng do notify-osd
interface de notificação será, no entanto fornecer reconhecimento imediato de notificações pendentes, mesmo se houver um já mostrando. (E se killall notify-osd
for emitido imediatamente - presto poof!)
Selecione Todos, Arraste e Solte para uma janela do terminal nos seguintes testes:
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"
agora faça o mesmo com 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"
A killall notify-osd
solução sugerida seria acionada quando DBus monitor
detectar atividade de graffiti pop-up OSD.