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


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


91


origem


Como posso acionar uma notificação quando um trabalho / processo termina? - phuclv


Respostas:


Se você está usando o novo sistema de notificação no Jaunty, você quer o notificar-enviar comando

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.

107



Obrigado, só encontrei-me :) apt-get install libnotify-bin tem que ser executado antes para obtê-lo. - vava
Como o usuário root envia uma mensagem de crons, init.d, etc? - Lance Caraccioli
Por exemplo: notify-send Test "Olá mundo" - Thaha kp
O parâmetro --expire-time não funciona no Ubuntu graças a esse "recurso" (bug). bugs.launchpad.net/ubuntu/+source/notify-osd/+bug/390508 - axiopisty
eu achei aquilo notify-send é inibido durante a reprodução de vídeo / áudio. Embora este seja um caso de uso válido, se você ainda quiser vê-los, --urgência = crítica deve ser adicionado. - ccpizza


Encontrei outro caminho, através Zenity

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

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


24



Eu gosto do Zenity na medida em que suporta interações do usuário para diálogos (ao contrário de notificar-enviar) - Waffle's Crazy Peanut


Para usuários do KDE:

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

10



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


Há também xmessage que irá abrir uma janela, por isso deve funcionar em qualquer sistema X11.

Pró: Também permite interativamente solicitar ao usuário botões.

Vigarista: Como qualquer alerta pop-up, tipicamente recebe foco, por isso, se você estiver no meio da digitação, ele poderá desaparecer antes de você ler a mensagem.


10



Con: Parece feio pra caramba, e também é uma super minúscula janela que nem sempre é óbvia para o usuário. De qualquer forma, é universal embora. :) - Nik Reiman
O xmessage não funciona no Fedora. Não é 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 um botão "OK" e "Cancelar" via notify-send --expire-time=0 "Hello World"ou notify-send -t 0 "Hello world". Caso contrário, no entanto, o -t opção é ignorada devido a algumas "decisões de design" estúpidas: askubuntu.com/questions/110969/notify-send-ignores-timeout - Gabriel Staples
Eu não aguentei; Eu tive que escrever minha própria resposta :) superuser.com/a/1310142/425838 - Gabriel Staples


Existe uma solução multi-plataforma chamada Yfiton:

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

3





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


1



Isso é um pouco diferente, pois não usa notificações de desktop do Ubuntu. - vava
Sim, esta é uma alternativa que você pode usar com qualquer distribuição Linux e qualquer WM / DE. - geek


Notificação de pop-up que é fechada automaticamente após 10 segundos:

notify-send "Hello world"

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

Janela pop-up com botões para clicar:

[a janela não recebe foco automático]

notify-send -t 0 "Hello world"

Fonte: eu mesmo; 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

[MY FAVORITE, uma vez que a janela fecha automaticamente após o período especificado --timeout em segundos]

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

Fonte: eu lendo as man pages: man zenity


OU
[super feio de olhar]

xmessage 'hello world'

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


1