Vous pouvez, mais vous devez utiliser un libnotify patché pour le faire
notify-send
n'a pas la capacité de remplacer les notifications existantes avant leur expiration (ou leur disparition). Il s'agit d'un bug connu . Cependant, un intervenant sur le rapport de bogue a publié un correctif pour le corriger.
Installation de la libnotify-bin corrigée de PPA
J'ai créé une version corrigée du paquet libnotify-bin qui permet les remplacements dans mon PPA. Actuellement, c'est uniquement pour Ubuntu 12.04, mais si vous en avez besoin pour toute autre version actuellement prise en charge, veuillez poster un commentaire et je ferai de mon mieux pour le rendre disponible.
Pour installer, ouvrez un terminal et:
sudo apt-add-repository ppa: izx / askubuntu
mise à jour sudo apt-get
sudo apt-get install libnotify-bin
Comment utiliser les capacités de remplacement
Le patch notify-send
inclut deux nouveaux commutateurs, -p
(ou --print-id ) et -r
(ou --replace-id ). Le les --help
décrit comme:
-p, --print-id Imprime l'ID de notification.
-r, --replace-id = REPLACE_ID L'ID de la notification à remplacer.
- Avec
-p
, chacun notify-send
renverra un ID N (nombre / entier).
- En émettre un autre
notify-send
avec -r N
remplacera immédiatement la notification précédente .
Par exemple, pour bash, vous pouvez enregistrer l'ID à partir notify-send -p ...
de:
NID=$(notify-send -p "MESSAGE-1")
puis remplacez-le par:
notify-send -r $NID "MESSAGE-2"
Vous pouvez récursivement utiliser à la fois -p et -r dans un script, tant que la variable -r est initialisée à 0 au début.
Voici un script simple qui montre les notifications comptant de 0 à 100 à intervalles d'une demi-seconde:
#! / bin / bash
NID = 0
pour i dans {0..100..10}
faire
NID = $ (notify-send -p -r $ NID $ i)
dormir 0,5
terminé
Vous pouvez utiliser le conseil "synchrone" pour créer une notification de "confirmation" qui remplacera les notifications de confirmation précédentes. Par exemple:
L'astuce "x-canonical-private-synchronous" est spécifiée dans ce document . Pour spécifier un indice, utilisez
-h type:name:value
. Le type ici eststring
, le nom estx-canonical-private-synchronous
, et il semble que la valeur puisse être celle que vous voulez.Donc, si votre première notification est créée avec cet indice et la seconde l'est également, la seconde remplacera immédiatement la première. (Voir Animations et Durées dans la documentation, dans la colonne "bulles de confirmation".)
la source
string:x-canonical-private-synchronous:anything
était exactement ce dont j'avais besoin. Merci pour cette réponse. Aussi pour un lien vers la documentationX-ref:
Comment forcer une nouvelle notification dans notify-osd à apparaître sans attendre que la précédente se termine?
sans patchs, vous pouvez simplement faire
Signet:
Comment utiliser «notifier-envoyer» pour remplacer immédiatement une notification existante?
Envoie une erreur notify-osd (2592): opération non autorisée. Qu'est-ce que ça veut dire?
Cela peut signifier que les privilèges sont inadéquats nécessitant:
la source
notify-osd(2592): Operation not permitted
. Qu'est-ce que ça veut dire?J'ai créé un simple script python qui fonctionne presque de la même manière que notify-send mais qui prend en charge
--replaces-id
.notify-send.py
Web: https://github.com/phuhl/notify-send.py
Un script python pour envoyer des notifications de bureau à partir du shell.
Sur
Libnotify fait partie de nombreux scripts dans le monde Linux. Il utilise bon nombre des fonctionnalités spécifiées de la spécification des notifications de bureau et les rend accessibles aux scripts shell. Il ne permet cependant pas de remplacer une notification existante par le
replaces-id
. Il s'agit d'un bug connu depuis 2008 et qui a un correctif depuis 2012. Le correctif n'est toujours pas en amont (2018).Ce script python utilise le package notify2 et expose la fonctionnalité au shell.
Différences entre notify-send.py et notify-send
notify-send.py -h
affiche l'aide au lieu d'être le paramètre des indices. Pour des conseils, utilisez--hint
.notify-send.py -r ID
etnotify-send.py --replaces-id ID
existe. Afin de remplacer un appel de notificationnotify-send.py
par l'ID renvoyé par la notification à remplacer.notify-send.py
renvoie l'ID de la notification nouvellement créée.notify-send.py --replaces-process NAME
existe. Chaque notification créée avec le même NOM remplacera chaque notification précédente par le même NAME. S'il est appelé avec ce paramètre, ilnotify-send.py
peut être bloqué, il vaut mieux être appelé avec une fin&
.Installation
Nécessite python3.
Usage
notify-send [.py] en tant qu'utilisateur root
Pour afficher des notifications, même si libnotify ou
est utilisé par l'utilisateur root ces deux scripts sont utiles.
Avec
notify-send.sh
comme ça:Voir également
Jetez également un œil à mon démon de notification inspiré de Dunst , mais avec plusieurs améliorations, y compris la possibilité d'un arrière-plan transparent et d'un centre de notification qui stocke les notifications.
la source