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?


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.

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.)


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.


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 &

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


3

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

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

2

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


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.