Como forçar uma nova Notificação no notify-osd a aparecer sem esperar que a anterior saia?

4

Eu fiz um script (e um atalho para .desktop que leva a este script) para iniciar e interromper o xampp ...

Ele verifica o status do xampp e, consequentemente, inicia ou interrompe o xampp.

Agora eu atribuí uma notificação assim que o script é iniciado para exibir "Iniciando o xampp ..." ou "Parando o xampp ..." e quando o xampp é iniciado ou interrompido, ele exibe "Xampp started ... "ou" Xampp parou ... "

Eu usei notify-send para mostrar a notificação conforme visto no script abaixo

Agora, a questão é que, aqui, a segunda notificação aguarda que a primeira desapareça e depois apareça mesmo que o xampp tenha iniciado / parado.

Eu quero que a nova notificação apareça imediatamente forçando a anterior a sair antes da conclusão do seu ciclo de vida.

Isso pode ser visto quando você ativa / desativa a rede sem fio imediatamente ...

Por exemplo, a opção "Sem fio ativado" seleciona Ativar sem fio e, se você selecionar imediatamente Desativar sem fio, a notificação "Sem fio desativado" aparecerá sem aguardar a notificação "Sem fio ativado" concluir seu ciclo de vida.

Então, como eu faço isso?

#!/bin/sh

SERVICE='proftpd'

if ps ax | grep -v grep | grep $SERVICE > /dev/null

then

notify-send -i /opt/lampp/htdocs/xampp/img/logo-small.gif "Stopping XAMPP..." && 
gksudo /opt/lampp/lampp stop && notify-send -i /opt/lampp/htdocs/xampp/img/logo-
small.gif "XAMPP Stoped."

else

notify-send -i /opt/lampp/htdocs/xampp/img/logo-small.gif "Starting XAMPP..." && gksudo /opt/lampp/lampp start && notify-send -i /opt/lampp/htdocs/xampp/img/logo-small.gif "XAMPP Started."

fi

Na página man de notify-send , encontrei - urgency = LEVEL ou -u onde os níveis são baixos, normais, críticos.

Isso é de alguma utilidade? tornando crítico?

Também testei com o comando notify-send -u=critical"Testing" , mas esse trabalho de dint ... dá o erro Teste crítico de urgência desconhecido especificado. Níveis de urgência conhecidos: baixo, normal, crítico.

ou se eu der o comando notify-send -u=LOW"Testing" , isso me dá um erro falta de argumento para -u

Qualquer relação ??

Informação dos comentários,

por alguma razão, isso está funcionando de uma maneira estranha! ele mostra uma caixa de diálogo em vez de uma notificação para a parte "Iniciando o xampp .." e "Parando o xampp .." e, em seguida, mostra uma notificação de "xampp started" ou "xampp stopped" ...: / caixa de diálogo com ok e cancelar botões!

    
por Nirmik 09.07.2012 / 20:01

3 respostas

4

Existe um patch para este bug em - link

O @izx fez uma versão ppa para o patch, então a instalação agora é fácil (obrigado izx!) - Como eu uso 'notify-send' para substituir imediatamente uma notificação existente?

  

Para instalar, abra um terminal e:

sudo apt-add-repository ppa:izx/askubuntu
sudo apt-get update
sudo apt-get install libnotify-bin

Agora, você deve ter instalado uma versão corrigida de notify-send, que agora pode substituir e imprimir números de ID, para que você possa usar apenas uma caixa de notificação para o script de shell. O programa agora tem -p e -r opções, ou a longa sintaxe sendo --print-id e --replace-id

Eu escrevi um script baseado em seu original que fará uso disso, as notificações de início e parada serão exibidas até a exibição interrompida e iniciada, e reutilizará a mesma caixa de notificação; se você instalou a versão corrigida, faça uma arquivo chamado config.txt e colocar o número 0 dentro, em seguida, colocar esse arquivo na mesma pasta que o arquivo lampp.sh.

#!/bin/sh

SERVICE='proftpd'

if ps ax | grep -v grep | grep $SERVICE > /dev/null

then
notify-send -t 0 -p -r 'cat config.txt' -i /opt/lampp/htdocs/xampp/img/logo-small.gif "Stopping XAMPP ..." >config.txt && gksudo /opt/lampp/lampp stop && notify-send -r 'cat config.txt' -t 5000 -i /opt/lampp/htdocs/xampp/img/logo-small.gif "XAMPP Stoped."  
else
notify-send -t 0 -p -r 'cat config.txt' -i /opt/lampp/htdocs/xampp/img/logo-small.gif "Starting XAMPP ..." >config.txt && gksudo /opt/lampp/lampp start && notify-send -r 'cat config.txt' -t 5000 -i /opt/lampp/htdocs/xampp/img/logo-small.gif "XAMPP Started."

fi

Editar É assim que mostra no meu ...

    
por Mateo 13.04.2017 / 14:23
2

Você pode usar notify_notification_update, seguido de notify_notification_show, para atualizar sua notificação existente.

Aqui está um exemplo com Python e PyGObject:

from time import sleep
from gi.repository import Notify

Notify.init(app_name = 'notification-update-example')
notification = Notify.Notification.new("Notification", "Original message", None)
notification.show()
sleep(3)
notification.update("More notification", "Updated message", None)
notification.show()
    
por Dylan McCall 09.07.2012 / 20:24
0
por george rowell 19.09.2012 / 05:47