Czy istnieje sposób na wyświetlanie powiadomienia ze skryptu bash w Ubuntu?


103

Większość aplikacji może wyświetlać ładnie sformatowane powiadomienia o zdarzeniach pojawiających się w prawym górnym rogu ekranu. Mam zamiar napisać skrypt bash, który wykona dość długie przetwarzanie w tle i naprawdę chcę wiedzieć, kiedy zostanie ukończony. Jak mogę pokazać to fajne powiadomienie ze skryptu bash?


Odpowiedzi:


124

Jeśli używasz nowego systemu powiadamiania w Jaunty, chcesz powiadomić-wysłać polecenie

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
Dzięki, właśnie go znalazłem :) apt-get install libnotify-bin należy uruchomić zanim go zdobędziesz.
vava

W jaki sposób użytkownik root wysyła wiadomość z crons, init.d itp.?
Lance Caraccioli

6
Np .: powiadom-wyślij Test „Hello World”
Thaha kp

3
Parametr --expire-time nie działa na Ubuntu dzięki tej „funkcji” (błąd). bugs.launchpad.net/ubuntu/+source/notify-osd/+bug/390508
axiopisty

Zauważyłem, że notify-sendjest wstrzymany podczas odtwarzania wideo / audio. Chociaż jest to prawidłowy przypadek użycia, jeśli nadal chcesz je zobaczyć, należy dodać opcję --urgency =rytyczny .
ccpizza

29

Znalazłem inny sposób poprzez Zenity

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

(Ma to również tę zaletę, że jest już zainstalowane na Ubuntu.)


Lubię Zenity, ponieważ obsługuje interakcje użytkownika w oknach dialogowych (w przeciwieństwie do powiadomień-wysyłania)
Waffle's Crazy Peanut

12

Jest także xmessage , który wyskakuje okno, więc powinno działać na każdym systemie X11.

Pro: Pozwala również interaktywnie pytać użytkownika za pomocą przycisków.

Przeciw: Jak każdy wyskakujący alert, zazwyczaj otrzymuje fokus, więc jeśli jesteś w trakcie pisania, może zniknąć przed przeczytaniem wiadomości.


4
Przeciw: Wygląda brzydko jak diabli, a także jest bardzo małym oknem, które nie zawsze jest oczywiste dla użytkownika. W każdym razie jest to uniwersalne. :)
Nik Reiman

xmessage nie działa jednak w Fedorze. Nie jest domyślnie instalowany.
Abhay Mittal

Nie jest również dostępny w domyślnej instalacji Arch Linuxa Xorg.
friederbluemle

Możesz także wyświetlić wyskakujące okienko z przyciskami „OK” i „Anuluj” za pomocą notify-send --expire-time=0 "Hello World"lub notify-send -t 0 "Hello world". W przeciwnym razie jednak -topcja jest ignorowana z powodu pewnych głupich „decyzji projektowych”: askubuntu.com/questions/110969/notify-send-ignores-timeout
Gabriel Staples

Nie mogłem tego znieść; Musiałem napisać własną odpowiedź :) superuser.com/a/1310142/425838
Gabriel Staples

10

Dla użytkowników KDE:

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

Czy można ustawić ikonę powiadomienia?
Malabarba

4

Powiadomienie wyskakujące, które zamyka się automatycznie po 10 sekundach:

notify-send "Hello world"

Źródło: https://superuser.com/a/31919/425838

Wyskakujące okno z przyciskami do kliknięcia:

[okno nie otrzymuje automatycznego ustawiania ostrości]

notify-send -t 0 "Hello world"

Źródło: ja; uwaga: -t jest ignorowana dla wszystkich wartości oprócz 0 - jak głupio . :(


LUB
[okno automatycznie ustawia ostrość]

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

Źródło: https://askubuntu.com/a/804475/327339


LUB

[MOJE ULUBIONE, ponieważ okno zamyka się automatycznie po określonym --timeoutw sekundach]

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

Źródło: ja czytając strony podręcznika: man zenity


LUB
[super brzydko wyglądający]

xmessage 'hello world'

Źródło: http://www.linux-commands-examples.com/xmessage


3

Istnieje międzyplatformowe rozwiązanie o nazwie Yfiton :

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

2

W skrypcie powłoki można także wywołać narzędzie osd_cat z libxosd.


1
Jest to trochę inne, ponieważ nie używa powiadomień na pulpicie ubuntu.
vava

Tak, jest to alternatywa, której można używać z dowolną dystrybucją Linuksa i dowolnym WM / DE.
maniakiem
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.