Gibt es eine Möglichkeit, Benachrichtigungen über Bash-Skripte in Ubuntu anzuzeigen?

103

Die meisten Anwendungen können gut formatierte Benachrichtigungen zu Ereignissen anzeigen, die in der rechten oberen Ecke des Bildschirms angezeigt werden. Ich bin dabei, ein Bash-Skript zu schreiben, das ziemlich lange im Hintergrund verarbeitet, und ich möchte wirklich wissen, wann es fertig ist. Wie kann ich diese nette Benachrichtigung aus einem Bash-Skript anzeigen?

vava
quelle

Antworten:

124

Wenn Sie das neue Benachrichtigungssystem in Jaunty verwenden, möchten Sie den Befehl 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.
Nagul
quelle
4
Danke, habe es selbst gefunden :) apt-get install libnotify-bin muss vorher ausgeführt werden, um es zu bekommen.
Vava
Wie sendet der Root-Benutzer eine Nachricht von crons, init.d usw.?
Lance Caraccioli
6
ZB: Benachrichtigen-Senden-Test "Hallo Welt"
Thaha KP
3
Der Parameter --expire-time funktioniert dank dieser "Funktion" (Fehler) unter Ubuntu nicht. bugs.launchpad.net/ubuntu/+source/notify-osd/+bug/390508
Axiopisty
Ich habe festgestellt, dass dies notify-sendwährend der Video- / Audiowiedergabe gesperrt ist. Während dies ein gültiger Anwendungsfall ist, müssen Sie --urgency = critical hinzufügen , wenn Sie sie weiterhin anzeigen möchten .
ccpizza
29

Einen anderen Weg durch Zenity gefunden

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

(Dies hat auch den Vorteil, dass es bereits auf Ubuntu installiert ist.)

vava
quelle
Ich mag Zenity insofern, als es Benutzerinteraktionen für Dialoge unterstützt (im Gegensatz zum Senden von Benachrichtigungen)
Waffles verrückte Erdnuss
12

Es gibt auch xmessage , das ein Fenster öffnet , sodass es auf jedem X11-System funktionieren sollte.

Pro: Es ermöglicht auch die interaktive Aufforderung des Benutzers mit Schaltflächen.

Con: Wie bei jeder Popup-Warnung erhält sie normalerweise den Fokus. Wenn Sie also gerade tippen, wird sie möglicherweise ausgeblendet, bevor Sie die Nachricht lesen.

NVRAM
quelle
4
Con: Es sieht verdammt hässlich aus und ist auch ein winziges Fenster, das für den Benutzer nicht immer offensichtlich ist. Trotzdem ist es universell. :)
Nik Reiman
xmessage funktioniert jedoch nicht in Fedora. Es ist nicht standardmäßig installiert.
Abhay Mittal
Es ist auch in der Standard-Xorg-Installation von Arch Linux nicht verfügbar.
Friederblümle
Sie können auch ein Popup-Fenster mit den Schaltflächen "OK" und "Abbrechen" über notify-send --expire-time=0 "Hello World"oder öffnen notify-send -t 0 "Hello world". Andernfalls wird die -tOption jedoch aufgrund einiger dummer "Designentscheidungen" ignoriert: askubuntu.com/questions/110969/notify-send-ignores-timeout
Gabriel Staples
Ich konnte es nicht ertragen. Ich musste meine eigene Antwort schreiben :) superuser.com/a/1310142/425838
Gabriel Staples
11

Für KDE-Benutzer:

$ kdialog --title "Long process completed!" --passivepopup "This popup will disappear in 5 seconds" 5 &
kolypto
quelle
Ist es möglich, ein Symbol für die Benachrichtigung festzulegen?
Malabarba
5

Popup-Benachrichtigung, die nach 10 Sekunden automatisch geschlossen wird:

notify-send "Hello world"

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

Popup-Fenster mit Schaltflächen zum Klicken:

[Fenster erhält keinen Autofokus]

notify-send -t 0 "Hello world"

Quelle: ich selbst; hinweis: -t wird für alle werte außer 0 ignoriert - wie blöd . :(


ODER
[Fenster erhält Autofokus]

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

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


ODER

[MEIN FAVORIT, da sich das Fenster nach der --timeoutin Sekunden angegebenen Zeit automatisch schließt ]

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

Quelle: Ich lese die Manpages: man zenity


ODER
[super hässlich aussehend]

xmessage 'hello world'

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

Gabriel Staples
quelle
3

Es gibt eine plattformübergreifende Lösung namens Yfiton :

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

In einem Shell-Skript können Sie das Dienstprogramm osd_cat auch von libxosd aus aufrufen.

Aussenseiter
quelle
1
Dies ist ein bisschen anders, da keine Ubuntu-Desktop-Benachrichtigungen verwendet werden.
Vava
Ja, dies ist eine Alternative, die Sie mit jeder Linux-Distribution und jedem WM / DE verwenden können.
Aussenseiter