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
- Dans
notify-send.py -h
affiche l'aide au lieu d'être le paramètre des indices. Pour des conseils, utilisez --hint
.
- En
notify-send.py -r ID
et notify-send.py --replaces-id ID
existe. Afin de remplacer un appel de notification notify-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, il notify-send.py
peut être bloqué, il vaut mieux être appelé avec une fin &
.
Installation
Nécessite python3.
git clone https://github.com/phuhl/notify-send.py
cd notify-send.py
sudo pip install notify2
sudo python setup.py install
Usage
$ notify-send.py -h
usage: notify-send.py [-h] [-u LEVEL] [-t TIME] [-a APP_NAME]
[-i ICON[,ICON...]] [-c TYPE[,TYPE...]]
[--hint TYPE:NAME:VALUE] [-r ID]
[--replaces-process NAME]
SUMMERY [BODY]
positional arguments:
SUMMERY
BODY
optional arguments:
-h, --help show this help message and exit
-u LEVEL, --urgency LEVEL
Specifies the urgency level (low, normal, critical).
-t TIME, --expire-time TIME
Specifies the timeout in milliseconds at which to
expire the notification.
-a APP_NAME, --app-name APP_NAME
Specifies the app name for the icon
-i ICON[,ICON...], --icon ICON[,ICON...]
Specifies an icon filename or stock icon to display.
-c TYPE[,TYPE...], --category TYPE[,TYPE...]
Specifies the notification category.
--hint TYPE:NAME:VALUE
Specifies basic extra data to pass. Valid typesare
int, double, string and byte.
-r ID, --replaces-id ID
Specifies the id of the notification that should be
replaced.
--replaces-process NAME
Specifies the name of a process that should take care
of replacing notifications for this process.
notify-send [.py] en tant qu'utilisateur root
Pour afficher des notifications, même si libnotify ou
notify-send.py
est utilisé par l'utilisateur root ces deux scripts sont utiles.
#!/bin/bash
username=<your username here>
if [ "$(id -u)" != "1000" ] ; then
sudo -u $username DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus notify-send.sh "$@"
else
notify-send.sh "$@"
fi
Avec notify-send.sh
comme ça:
#!/bin/bash
notify-send.py "$@" &
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.