C'è un modo per mostrare la notifica dallo script bash in Ubuntu?


103

La maggior parte dell'applicazione può mostrare notifiche ben formattate sugli eventi che compaiono nell'angolo in alto a destra dello schermo. Sto per scrivere una sceneggiatura bash che farà un'elaborazione lunga e fatata in background e voglio davvero sapere quando sarà finita. Come posso mostrare quella bella notifica da uno script bash?


Risposte:


124

Se si utilizza il nuovo sistema di notifica in Jaunty, si desidera il comando di notifica-invio

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
Grazie, l'ho appena trovato :) apt-get install libnotify-bin deve essere eseguito prima di ottenerlo.
vava,

In che modo l'utente root invia un messaggio da crons, init.d, ecc?
Lance Caraccioli,

6
Ad esempio: notifica-invia il test "Hello World"
Thaha kp,

3
Il parametro --expire-time non funziona su Ubuntu grazie a questa "caratteristica" (bug). bugs.launchpad.net/ubuntu/+source/notify-osd/+bug/390508
axiopisty

Ho scoperto che notify-sendè inibito durante la riproduzione video / audio. Sebbene si tratti di un caso d'uso valido, se si desidera ancora vederli, è necessario aggiungere --urgency = critical .
ccpizza,

29

Ho trovato un altro modo, attraverso lo Zenity

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

(Questo ha anche il vantaggio di essere già installato su Ubuntu.)


Mi piace lo Zenity in quanto supporta le interazioni degli utenti per i dialoghi (diversamente dalla notifica-invio)
Waffle's Crazy Peanut

12

C'è anche xmessage che farà apparire una finestra, quindi dovrebbe funzionare su qualsiasi sistema X11.

Pro: consente inoltre di richiedere all'utente in modo interattivo i pulsanti.

Contro: Come ogni avviso pop-up, in genere riceve lo stato attivo, quindi se sei nel mezzo della digitazione può scomparire prima di leggere il messaggio.


4
Contro: sembra brutto da morire, ed è anche una finestra minuscola che non è sempre ovvia per l'utente. Comunque, è universale però. :)
Nik Reiman,

xmessage non funziona in Fedora però. Non è installato per impostazione predefinita.
Abhay Mittal,

Non è nemmeno disponibile nell'installazione Xorg predefinita di Arch Linux.
friederbluemle il

È inoltre possibile ottenere una finestra popup con un pulsante "OK" e "Annulla" tramite notify-send --expire-time=0 "Hello World"o notify-send -t 0 "Hello world". Altrimenti, tuttavia, l' -topzione viene ignorata a causa di alcune stupide "decisioni di progettazione": askubuntu.com/questions/110969/notify-send-ignores-timeout
Gabriel Staples

Non potevo prenderlo; Ho dovuto scrivere la mia risposta :) superuser.com/a/1310142/425838
Gabriel Staples

11

Per gli utenti di KDE:

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

È possibile impostare un'icona per la notifica?
Malabarba,

5

Notifica popup che si chiude automaticamente dopo 10 secondi:

notify-send "Hello world"

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

Finestra popup con pulsanti per fare clic:

[la finestra non ottiene la messa a fuoco automatica]

notify-send -t 0 "Hello world"

Fonte: me stesso; nota: -t viene ignorato per tutti i valori tranne 0 - che stupido . :(


OPPURE
[la finestra ottiene l'autofocus]

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

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


O

[MY FAVORITE, poiché la finestra si chiude automaticamente dopo il valore specificato --timeoutin secondi]

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

Fonte: me stesso leggendo le pagine man: man zenity


O
[super brutto]

xmessage 'hello world'

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


3

Esiste una soluzione multipiattaforma chiamata Yfiton :

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

2

In uno script di shell, puoi anche chiamare l'utilità osd_cat da libxosd.


1
Questo è un po 'diverso in quanto non utilizza le notifiche desktop di Ubuntu.
vava,

Sì, questa è un'alternativa che puoi utilizzare con qualsiasi distribuzione Linux e qualsiasi WM / DE.
geek,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.