4 votes

Comment forcer une nouvelle notification dans notify-osd à s'afficher sans attendre que la précédente se termine ?

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

Il vérifie l'état de xampp et en conséquence, il démarre ou arrête xampp.

Maintenant j'ai assigné une notification dès que le script est lancé pour afficher "Starting xampp..." ou "Stopping xampp..." et ensuite quand xampp est lancé ou arrêté,il affiche "Xampp started..." ou "Xampp stopped...".

J'ai utilisé notify-send pour montrer la notification comme vu dans le script ci-dessous

Le problème, c'est qu'ici, la deuxième notification attend que la première disparaisse, puis s'affiche, même si xampp a démarré ou s'est arrêté.

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

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

Par exemple, la notification "Sans fil activé" s'affiche lorsque vous sélectionnez "Sans fil activé" et si vous sélectionnez immédiatement "Sans fil désactivé", la notification "Sans fil désactivé" s'affiche sans attendre que la notification "Sans fil activé" ait terminé son cycle de vie.

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 le homme page pour notifier-envoyer J'ai trouvé --urgence=NIVEAU o -u où les niveaux sont faibles, normaux, critiques.

Est-ce que ça sert à quelque chose ? Est-ce que ça devient critique ?

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

ou si je donne la commande notify-send -u=LOW"Testing" cela me donne une erreur argument manquant pour -u

Un rapport ?

Informations tirées des commentaires,

pour une raison quelconque, cela fonctionne d'une manière bizarre ! il affiche une boîte de dialogue au lieu d'une notification pour la partie "Démarrer xampp..." et "Arrêter xampp..." et ensuite affiche une notification de "xampp démarré" ou "xampp arrêté"... :/ la boîte de dialogue fonctionne avec les boutons ok et cancel !

enter image description here

4voto

scottburton11 Points 123

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

@izx a fait une version ppa pour le patch donc l'installation est maintenant facile (merci izx !)-. Comment utiliser "notify-send" pour remplacer immédiatement une notification existante ?

Pour l'installer, ouvrez un terminal et :

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

Vous devriez maintenant avoir installé une version patchée de notify-send qui peut maintenant remplacer et imprimer les numéros d'identification, de sorte que vous pouvez utiliser une seule boîte de notification pour votre Shell Shell. Le programme a maintenant -p y -r ou la syntaxe longue étant --print-id y --replace-id


J'ai écrit un script basé sur votre original qui utilisera ceci, les notifications de démarrage et d'arrêt s'affichent jusqu'à ce que l'arrêt et le démarrage s'affichent, et il réutilise la même boîte de notification, si vous avez installé la version patchée, faites un fichier appelé config.txt et mettez le chiffre 0 à l'intérieur, puis mettez 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

Modifier C'est comme ça qu'il apparaît sur le mien... enter image description here

2voto

Argelbargel Points 1310

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()

0voto

george rowell Points 890

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X