¿Hay alguna manera de mostrar notificaciones de script bash en Ubuntu?


103

La mayor parte de la aplicación puede mostrar notificaciones bien formateadas sobre eventos que aparecen en la esquina superior derecha de la pantalla. Estoy a punto de escribir un script bash que hará un procesamiento de hadas en segundo plano y realmente quiero saber cuándo está terminado. ¿Cómo puedo mostrar esa buena notificación de un script bash?


Respuestas:


124

Si está utilizando el nuevo sistema de notificaciones en Jaunty, quiere el comando de notificación-envío

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.

44
Gracias, lo encontré yo mismo :) apt-get install libnotify-bin tiene que ejecutarse antes para obtenerlo.
vava

¿Cómo envía el usuario root un mensaje desde crons, init.d, etc.?
Lance Caraccioli

66
Por ejemplo: notificar-enviar prueba "Hola mundo"
Thaha kp

3
El parámetro --expire-time no funciona en Ubuntu gracias a esta "característica" (error). bugs.launchpad.net/ubuntu/+source/notify-osd/+bug/390508
axiopisty

Descubrí que notify-sendse inhibe durante la reproducción de video / audio. Si bien este es un caso de uso válido, si aún desea verlos, debe agregarse --urgency = critical .
ccpizza

29

Encontrado otro camino, a través de Zenity

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

(Esto también tiene la ventaja de estar instalado en Ubuntu).


Me gusta Zenity porque admite interacciones de usuario para diálogos (a diferencia de notificar-enviar)
Crazy Peanut de Waffle

12

También hay xmessage que abrirá una ventana, por lo que debería funcionar en cualquier sistema X11.

Pro: también permite solicitar interactivamente al usuario con botones.

Con: Al igual que cualquier alerta emergente, generalmente recibe foco, por lo que si está escribiendo, puede desaparecer antes de leer el mensaje.


44
Con: se ve feo como el infierno, y también es una ventana súper pequeña que no siempre es obvia para el usuario. De todos modos, es universal sin embargo. :)
Nik Reiman

Sin embargo, xmessage no funciona en Fedora. No está instalado por defecto.
Abhay Mittal

Tampoco está disponible en la instalación Xorg predeterminada de Arch Linux.
friederbluemle

También puede obtener una ventana emergente con un botón "Aceptar" y "Cancelar" a través de notify-send --expire-time=0 "Hello World"o notify-send -t 0 "Hello world". Sin embargo, la -topción se ignora debido a algunas "decisiones de diseño" estúpidas: askubuntu.com/questions/110969/notify-send-ignores-timeout
Gabriel Staples

No pude soportarlo; Tuve que escribir mi propia respuesta :) superuser.com/a/1310142/425838
Gabriel Staples

11

Para usuarios de KDE:

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

¿Es posible establecer un icono para la notificación?
Malabarba

5

Notificación emergente que se cierra automáticamente después de 10 segundos:

notify-send "Hello world"

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

Ventana emergente con botones para hacer clic:

[la ventana no se enfoca automáticamente]

notify-send -t 0 "Hello world"

Fuente: yo mismo; nota: -t se ignora para todos los valores excepto 0 - qué estúpido . :(


O
[la ventana se enfoca automáticamente]

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

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


O

[MI FAVORITO, ya que la ventana se cierra automáticamente después de lo especificado --timeouten segundos]

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

Fuente: yo mismo leyendo las páginas del manual: man zenity


O
[súper feo]

xmessage 'hello world'

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


3

Existe una solución multiplataforma llamada Yfiton :

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

2

En un script de shell, también puede llamar a la utilidad osd_cat desde libxosd.


1
Esto es un poco diferente ya que no utiliza las notificaciones de escritorio de ubuntu.
vava

Sí, esta es una alternativa que puede usar con cualquier distribución de Linux y cualquier WM / DE.
geek
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.