Existe uma maneira de mostrar a notificação do script bash no Ubuntu?


103

A maioria dos aplicativos pode mostrar notificações bem formatadas em eventos que aparecem no canto superior direito da tela. Estou prestes a escrever um script do bash que fará um processamento muito longo em segundo plano e realmente quero saber quando terminar. Como posso mostrar essa boa notificação de um script bash?


Respostas:


124

Se você estiver usando o novo sistema de notificação no Jaunty, deseja o comando 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
Obrigado, acabei de descobrir :) O apt-get install libnotify-bin precisa ser executado antes para obtê-lo.
vava

Como o usuário root envia uma mensagem de crons, init.d, etc?
precisa

6
Por exemplo: Teste de notificação-envio "Hello World"
Thaha kp 04/06

3
O parâmetro --expire-time não funciona no Ubuntu, graças a este "recurso" (bug). bugs.launchpad.net/ubuntu/+source/notify-osd/+bug/390508
axiopisty

Eu descobri que notify-sendé inibido durante a reprodução de vídeo / áudio. Embora este seja um caso de uso válido, se você ainda deseja vê-los, --urgency = critical deve ser adicionado.
Ccpizza

29

Encontrado de outra maneira, através do Zenity

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

(Isso também tem o benefício de já estar instalado no Ubuntu.)


Eu gosto Zenity em que ele suporta interações do usuário para diálogos (ao contrário notificar-send)
do Waffle louco Amendoim

12

Há também o xmessage que abrirá uma janela, portanto deve funcionar em qualquer sistema X11.

Pro: também permite solicitar interativamente ao usuário com botões.

Contras: como qualquer alerta pop-up, ele geralmente recebe foco; portanto, se você estiver digitando, ele pode desaparecer antes de ler a mensagem.


4
Contras: Parece feio como o inferno, e também é uma janela super pequena, que nem sempre é óbvia para o usuário. De qualquer forma, é universal. :)
Nik Reiman

O xmessage não funciona no Fedora. Não está instalado por padrão.
Abhay Mittal

Também não está disponível na instalação padrão do Xorg do Arch Linux.
Friederbluemle

Você também pode obter uma janela pop-up com os botões "OK" e "Cancelar" através de notify-send --expire-time=0 "Hello World"ou notify-send -t 0 "Hello world". Caso contrário, no entanto, a -topção é ignorada devido a algumas "decisões de design" estúpidas: askubuntu.com/questions/110969/notify-send-ignores-timeout
Gabriel Staples

Eu não aguentava; Eu tinha que escrever a minha própria resposta :) superuser.com/a/1310142/425838
Gabriel Staples

11

Para usuários do KDE:

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

É possível definir um ícone para a notificação?
Malabarba

5

Notificação pop-up que fecha automaticamente após 10 segundos:

notify-send "Hello world"

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

Janela pop-up com botões para clicar em:

[a janela não fica com foco automático]

notify-send -t 0 "Hello world"

Fonte: eu; nota: -t é ignorado para todos os valores, exceto 0 - quão estúpido . :(


OU
[a janela fica com foco automático]

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

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


OU

[MEU FAVORITO, já que a janela fecha automaticamente após o especificado --timeoutem segundos]

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

Fonte: eu mesmo lendo as páginas de manual: man zenity


OU
[super feio]

xmessage 'hello world'

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


3

Existe uma solução multiplataforma chamada Yfiton :

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

2

Em um script de shell, você também pode chamar o utilitário osd_cat no libxosd.


1
Isso é um pouco diferente, pois não usa as notificações da área de trabalho do ubuntu.
vava

Sim, esta é uma alternativa que você pode usar com qualquer distribuição Linux e qualquer WM / DE.
nerd
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.