Est-il possible d'afficher une notification à partir d'un script bash sous Ubuntu?


103

La plupart des applications peuvent afficher des notifications bien formatées sur les événements qui apparaissent dans le coin supérieur droit de l'écran. Je suis sur le point d'écrire un script bash qui fera un traitement long des fées en arrière-plan et je veux vraiment savoir quand il sera fini. Comment puis-je afficher cette belle notification à partir d'un script bash?


Réponses:


124

Si vous utilisez le nouveau système de notification de Jaunty, vous souhaitez que la commande notify-send

notify-send - a program to send desktop notifications

SYNOPSIS

With notify-send you can sends desktop notifications to the user via
a notification daemon from the command line.  These notifications can be
used to inform the user about an event or display some form of information
without getting in the user's way.

OPTIONS

-u, --urgency=LEVEL
Specifies the urgency level (low, normal, critical).

-t, --expire-time=TIME
    Specifies the timeout in milliseconds at which to expire the notification.
-i, --icon=ICON[,ICON...]
    Specifies an icon filename or stock icon to display.
-c, --category=TYPE[,TYPE...]
    Specifies the notification category.

4
Merci, je viens de le trouver moi-même :) apt-get install libnotify-bin doit être exécuté avant de l'obtenir.
vava

Comment l'utilisateur root envoie-t-il un message de crons, init.d, etc.?
Lance Caraccioli

6
Exemple: notifier-envoyer le test "Hello World"
Thaha kp

3
Le paramètre --expire-time ne fonctionne pas sur Ubuntu grâce à cette "fonctionnalité" (bogue). bugs.launchpad.net/ubuntu/+source/notify-osd/+bug/390508
axiopistie

J'ai trouvé que notify-sendc'est inhibé pendant la lecture vidéo / audio. Bien que ce soit un cas d'utilisation valide, si vous souhaitez toujours les voir, vous devez ajouter --urgency = critical .
ccpizza

29

Trouvé d'une autre manière, à travers la zenity

echo 'message:hi' | zenity --notification --listen

(Cela a aussi l'avantage d'être déjà installé sur Ubuntu.)


J'aime Zenity dans la mesure où il prend en charge les interactions utilisateur pour les dialogues (contrairement à notify-send)
Waffle's Crazy Peanut

12

Il y a aussi xmessage qui va ouvrir une fenêtre, donc ça devrait marcher sur n'importe quel système X11.

Pro: Il permet également d'inviter de manière interactive l'utilisateur à l'aide de boutons.

Con: Comme toute alerte pop-up, il généralement reçoit le focus, donc si vous êtes au milieu de le taper peut disparaître avant de lire le message.


4
Inconvénient: Cela semble vraiment moche, et c'est aussi une très petite fenêtre qui n'est pas toujours évidente pour l'utilisateur. Quoi qu'il en soit, il est universel cependant. :)
Nik Reiman

xmessage ne fonctionne pas dans Fedora cependant. Ce n'est pas installé par défaut.
Abhay Mittal

Il n'est pas disponible dans l'installation Xorg par défaut d'Arch Linux.
friederbluemle

Vous pouvez également obtenir une fenêtre contextuelle avec les boutons "OK" et "Annuler" via notify-send --expire-time=0 "Hello World"ou notify-send -t 0 "Hello world". Sinon, l' -toption est ignorée en raison de "décisions de conception" stupides: askubuntu.com/questions/110969/notify-send-ignores- timeout
Gabriel Staples

Je ne pouvais pas le prendre; J'ai dû écrire ma propre réponse :) superuser.com/a/1310142/425838
Gabriel Staples

11

Pour les utilisateurs de KDE:

$ kdialog --title "Long process completed!" --passivepopup "This popup will disappear in 5 seconds" 5 &

Est-il possible de définir une icône pour la notification?
Malabarba

5

Notification contextuelle qui se ferme automatiquement après 10 secondes:

notify-send "Hello world"

Source: https://superuser.com/a/31919/425838

Fenêtre contextuelle avec des boutons pour cliquer:

[la fenêtre ne fait pas l'autofocus]

notify-send -t 0 "Hello world"

Source: moi-même; note: -t est ignoré pour toutes les valeurs sauf 0 - quelle stupidité . :(


OU
[la fenêtre est mise au point automatiquement]

zenity --info --title "Hello" --text "World"

Source: https://askubuntu.com/a/804475/327339


OU

[MON FAVORI, puisque la fenêtre se ferme automatiquement après le délai spécifié --timeouten secondes]

zenity --info --title "Hello" --text "World" --timeout=2

Source: moi-même en lisant les pages de manuel: man zenity


OU
[super laid]

xmessage 'hello world'

Source: http://www.linux-commands-examples.com/xmessage


3

Il existe une solution multiplateforme appelée Yfiton :

$ yfiton -n desktop -Pmessage="Lunch time!" -Pposition=TOP_RIGHT

2

Dans un script shell, vous pouvez également appeler l'utilitaire osd_cat à partir de libxosd.


1
C'est un peu différent car il n'utilise pas les notifications du bureau Ubuntu.
Vava

Oui, c'est une alternative que vous pouvez utiliser avec n'importe quelle distribution Linux et n'importe quel WM / DE.
Geek
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.