135 votes

Existe-t-il un moyen d'afficher une notification à partir de bash script dans Ubuntu ?

La plupart des applications peuvent afficher des notifications joliment 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 bash script qui fera un traitement assez long en arrière-plan et je veux vraiment savoir quand il est terminé. Comment puis-je afficher cette belle notification à partir d'un bash script ?

156voto

Si vous utilisez le nouveau système de notification de Jaunty, vous voulez que le bouton notifier-envoyer commande

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.

42voto

vava Points 5738

Trouvé un autre moyen, par Zenity

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

ou comme ça :

zenity --notification --text "System update necessary!" 

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

18voto

Diejmon Points 111

Testé sur Ubuntu 14.04, 16.04, 18.04, 20.04. Captures d'écran d'Ubuntu 20.04.

  1. [Une notification popup qui se ferme automatiquement au bout de 4 à 10 secondes (en fonction des paramètres de votre système d'exploitation) :)

    notify-send "Hello world"

    enter image description here
    Source : https://superuser.com/a/31919/425838

  2. Fenêtre popup avec des boutons à cliquer :

    1. La fenêtre n'a pas de mise au point automatique : Source : moi-même ; note : pour les anciennes versions d'Ubuntu basées sur Unity, comme la 16.04, -t est ignoré pour toutes les valeurs sauf 0 - quelle stupidité ! . :(. Pour les nouvelles versions d'Ubuntu basées sur Gnome, telles que 18.04 ou 20.04, -t est entièrement ignorée. Par conséquent, sur les anciennes versions d'Ubuntu basées sur Unity, telles que 16.04, l'utilisation de -t 0 fait apparaître les boutons, mais sur les versions plus récentes de Gnome, ce n'est PAS le cas. Cela signifie que pour la capture d'écran Ubuntu 20.04 montrée ci-dessous, le comportement et l'apparence de notify-send -t 0 "Hello world" est exactement identique à notify-send "Hello world" ci-dessus.

      notify-send -t 0 "Hello world"

      enter image description here

      Sur Ubuntu 18.04 ou 20.04 ou plus, ajoutez simplement -u critical à la commande pour qu'elle devienne reste ouvert indéfiniment jusqu'à ce que vous cliquiez dessus ! :

      notify-send -u critical "Hello world"

      enter image description here
      Source : Le commentaire de @lucidbrot sous cette réponse, plus mes propres tests.

    2. OU La fenêtre a une mise au point automatique :

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

      Remarque : la fenêtre ne se fermera PAS tant que vous n'aurez pas cliqué sur le bouton OK bouton.
      enter image description here
      Source : https://askubuntu.com/a/804475/327339

  3. [MY FAVORITE] La fenêtre se ferme automatiquement après le délai spécifié. --timeout en quelques secondes, OU après avoir cliqué sur le bouton "OK" !

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

    Remarque : la fenêtre se fermera automatiquement après le délai spécifié ci-dessus, en secondes !
    enter image description here
    Source : lecture personnelle des pages du manuel : man zenity

  4. [super moche]

    xmessage 'hello world'

    Remarque : la fenêtre ne se fermera PAS tant que vous n'aurez pas cliqué sur le bouton okay bouton.
    enter image description here
    Source : http://www.linux-commands-examples.com/xmessage

Jouez aussi des sons

  1. Si vous voulez aussi jouer des sons, en même temps que la fenêtre popup, pour signifier l'achèvement d'une commande ou autre chose, voyez mon autre réponse ici : AskUbuntu.com : Comment émettre un son lorsqu'un processus est terminé ?

13voto

NickPev Points 21

Pour les utilisateurs de KDE :

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

12voto

eroijen Points 101

Il y a aussi xmessage qui fera apparaître une fenêtre, donc cela devrait fonctionner sur n'importe quel système X11.

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

Con : Comme toute alerte pop-up, elle généralement reçoit le focus, donc si vous êtes en train de taper, il peut disparaître avant que vous ayez lu le message.

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