web-dev-qa-db-fra.com

Comment forcer l'affichage d'une nouvelle notification dans notify-osd sans attendre la sortie de la précédente?

J'ai créé un script (et un raccourci .desktop menant à ce script) pour démarrer et arrêter xampp ...

Il vérifie le statut de xampp et, par conséquent, démarre ou arrête xampp.

Maintenant, j'ai assigné une notification dès que le script commence à afficher "Démarrage de xampp ..." ou "Arrêt de xampp ...", puis lorsque xampp est démarré ou arrêté, il affiche "Xampp démarré ..." ou " Xampp s'est arrêté ... "

J'ai utilisé notify-send pour afficher la notification, comme indiqué dans le script ci-dessous

Maintenant, le problème est qu’ici, la deuxième notification attend la disparition de la première, puis s’affiche même si xampp a été démarré/arrêté.

Je souhaite que la nouvelle notification apparaisse immédiatement en forçant la précédente à se fermer avant la fin de son cycle de vie.

On peut voir que cela prend effet lorsque vous activez/désactivez immédiatement le sans fil/le réseau ...

Par exemple, l'option "Sans fil activé" apparaît lors de la sélection de l'option Activer sans fil. Si vous sélectionnez immédiatement désactiver le sans fil, la notification "Sans fil désactivé" s'affiche sans attendre que la notification "Sans fil activé" s'achève.

Alors, comment puis-je y parvenir?

#!/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

Sur la page man pour notify-send , j'ai trouvé - urgence = LEVEL ou - u où les niveaux sont bas, normaux, critiques.

Est-ce utile? le rendant critique?

Aussi je l'ai essayé avec la commande notify-send -u=critical"Testing" mais cela ne marche pas ... il donne l'erreur- Urgence inconnue CriticalTesting spécifiée. Niveaux d'urgence connus: faible, normal, critique.

ou si je donne la commande notify-send -u=LOW"Testing" il me donne erreur argument manquant à -u

Toute relation ??

Informations tirées des commentaires,

pour une raison quelconque, cela fonctionne d'une manière étrange! il affiche une boîte de dialogue au lieu d'une notification pour la partie "Démarrage de xampp .." et "Arrêt de xampp ..", puis une notification de "xampp démarré" ou "xampp arrêté" ...:/la boîte de dialogue se ferme avec ok et annuler les boutons!

enter image description here

4
Nirmik

Il existe un correctif pour ce bogue à l’adresse suivante: - https://bugs.launchpad.net/ubuntu/+source/libnotify/+bug/257135?comments=all

@izx a créé une version ppa pour le correctif, de sorte que l'installation est désormais facile (merci izx!) - Comment utiliser 'notify-send' pour remplacer immédiatement une notification existante?

Pour installer, ouvrez un terminal et:

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

Vous devez maintenant avoir installé une version corrigée de notify-send qui peut maintenant remplacer et imprimer les numéros d'identification, de sorte que vous ne puissiez utiliser qu'une seule zone de notification pour votre script Shell. Le programme a maintenant les options -p et -r, ou la syntaxe longue est --print-id et --replace-id


J'ai écrit un script basé sur votre original qui utilisera cela, l'affichage des notifications de démarrage et d'arrêt jusqu'à l'affichage de l'affichage arrêté et démarré, et il réutilise la même boîte de notification. Si vous avez installé la version corrigée, créez un fichier appelé config.txt et mettez le nombre 0 à l'intérieur, puis placez ce fichier dans le même dossier que votre fichier 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

Edit Voici comment ça se voit sur le mien ... enter image description here

4
Mateo

Vous pouvez utiliser notify_notification_update, suivi de notify_notification_show, pour mettre à jour votre notification existante.

Voici un exemple avec Python et 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()
2
Dylan McCall
0
george rowell