Publi

Enviar notificaciones desde nuestros scripts con notify-send

notificacionEs un tema que se ha tratado varias veces en otros blogs y tutoriales a lo largo de Internet, y es que algo que tienen en común muchos entornos de escritorio de GNU/Linux en la actualidad es un demonio de notificaciones, éste recibe mensajes de las aplicaciones que quieran escribir una notificación (valga la redundancia), y los muestra en pantalla.
Lo bueno que tiene hacerlo así es que cualquier aplicación que quiera escribir algo, sólo tiene que enviar el texto y sólo tenemos un dibujante, eso reduce bastante el coste en memoria (si tenemos cuatro aplicaciones y las cuatro se dedican a lo mismo, estamos desperdiciando memoria), por otra parte, unifica el estilo (en el mismo ejemplo de antes, tendríamos cuatro formas de dibujar distintas y a lo mejor, cada una con un estilo diferente) y por otra parte, dada la filosofía que siguen estos proyectos, nos proporcionan herramientas para enviar notificaciones fácilmente.

El problema está en que cada entorno de ventanas tiene su implementación del demonio, casi todos siguen unas mismas directrices, pero cada uno pinta las cosas de forma distinta y tiene un comportamiento especial, unos serán más simples, otros más complejos y otros tendrán incluso temas. En este caso, el notificador usado para las capturas de pantalla será el de MATE).
Sea cual sea el demonio de notificaciones (estemos en Ubuntu, MATE, Gnome3, Xfce, Lxde, etc), podremos usar un mismo «cliente» para enviar las notificaciones, este será notify-send.
Si vemos un poco más a fondo notify-send, veremos que normalmente una notificación consta de encabezado, texto y una imagen opcional. Algunos notificadores no aceptarán el parámetro de tiempo, como notify-osd, sin embargo mate-notification-daemon sí soporta tiempo, e incluso muestra varias notificaciones al mismo tiempo en pantalla.

La notificación más simple que podemos enviar la siguente:

$ notify-send «hola»

notifysimple

Podemos ir un poco más allá, como en la imagen de cabecera, en donde vemos un título y un cuerpo de la notificación. Fue enviada así:

$ notify-send ‘¡Atención!’ «Necesito que veas un mensaje que requiere su actuación»

También podemos poner unos pocos estilos (en algunos notificadores no funcionan, pero en otros sí):

$ notify-send «Título de la notificación:Creado en el blog PoseíaPoesía Binaria. Con cariño desde mi ordenador«

poseia
Las posibilidades son:

  • <u>texto</u>: para texto subrayado (underlined)
  • <i>texto</i>: para texto cursiva (italic)
  • <s>texto</s>: para texto tachado (strikeout)
  • <b>texto</b>: para texto en negrita (bold)
  • \n : para ver un retorno de carro
  • \t : para ver un tabulado

Ahora bien, en algunos notificadores, como ya comentamos antes, se les puede dar tiempo (en otros no funciona, qué vamos a hacer).

$ notify-send -t 2500 «Notificación» «Esta notificación aparecerá durante 2\nsegundos y medio»

El tiempo se especificará en milisegundos y dicha notificación (al menos en el notificador de Mate, funciona correctamente, notify-osd no respeta el tiempo).

Si ponemos tiempo a 0 (notify-send -t 0) nos presentará una notificación persistente (no se irá nunca), algunos notificadores dejarán el mensaje hasta que hagamos click sobre él, otros en cambio, pondrán una notificación estilo diálogo Gtk (con al menos un botón para cerrar).

Ahora tenemos las prioridades, éstas pueden ser baja (low), normal (normal) o crítica (critical), también se lo pasamos como parámetro a notify-send:

notify-send -t 10000 «Notificación normal» «Notificación normal de 10 segundos»; notify-send -u low -t 5000 «Notificacion sin importancia» «Prioridad baja» ; notify-send -u critical -t 6000 «Notificación importante» «Tienes que leer esto ya»

En este caso, se diferencian en el color la barra izquierda, pero depende del notificador y del tema que hayamos elegido.
prioridades_notify

Por último, y no menos importante, tenemos el tema de las imágenes, ¡ sí ! podemos acompañar la notificación con una imagen, y quedará genial, dará un toque muy profesional y nadie pensará que la hemos mandado desde un shell script. Para ello sólo tenemos que enviar la ruta absoluta de la imagen a visualizar. Los formatos más soportados son ico y png, pero lo más seguro que con jpg, bmp y otros formatos también tire bien:

$ notify-send -t 3000 -i «/home/gaspy/poesiatest/stallman.png» «Os presento a…» «Richard Stallman»

notify-richard
Para asegurarnos de que el tamaño de la imagen es correcto, siempre podemos utilizar convert. Es cierto que muchos notificadores redimensionan la imagen para adaptarla, pero otros no, y si queremos que nuestro sistema funcione de igual forma en todas partes, debemos adaptarnos al más débil.

También podría interesarte....

There are 5 comments left Ir a comentario

  1. Pingback: BlogESfera.com /

  2. Pingback: Bitacoras.com /

  3. Pingback: Enviar notificaciones con sonido en MATE | Poesía Binaria /

  4. cior /
    Usando Debian IceWeasel Debian IceWeasel 18.0a2 en Linux Linux

    saludos, muy util, lo usare para mejorar los atajos de openbox y para mostrar info sin tener que escribir siquiera en la consola.

    1. admin / Post Author
      Usando Mozilla Firefox Mozilla Firefox 16.0 en Ubuntu Linux Ubuntu Linux

      Gracias por tu comentario, y si en algún momento quieres compartir tus scripts con notify-send estaré encantado de ponerte un enlace!

Leave a Reply