Conecta con nosotros

Hola, ¿qué estás buscando?

Actualidad

Dzen: notificaciones a medida y pequeño tutorial

Hoy presentaré una herramienta que quizás muchos usuarios, lejos de gestores de ventana minimalistas, no conozcan. Es una herramienta muy cómoda para solucionar aquellas carencias que uno puede encontrarse al optar por un escritorio que sea lo más mínimo posible.

Sin embargo, muchas posibles soluciones no suelen funcionar correctamente o pueden romper la armonía minimalista del entorno. Dzen se presenta como: un programa para X11 destinado a la mensajería, notificación y menúes para uso general. Fue diseñado para ser usado junto a cualquier lenguaje de programación e integrarse con gestores de ventana como dwm, wmii y xmonad aunque funciona con cualquier otro.

A simple vista, dzen, puede parecer completamente inútil. Principalmente lo que hace es tomar una entrada de texto (o imagen) y mostrarlo dentro de una barra de dimensiones dadas. Nada sorpendente. Ahora, si esa entrada de texto se convierte en un programa cuya salida es dzen,. Incluso se han agregado funcionalidades como, por ejemplo, la posibilidad captar clics del ratón.

Si observamos los ejemplos que hay en la página oficial, los resultados son sorprendentes e incluso se pueden volver muy complejos ya que dzen funciona como contenedor para nuestros programas. Hay que destacar un hilo en el foro de Archlinux que, además de tener ejemplos varios, también da muy buenas ideas.

A continuación, mostraré y explicaré un pequeño ejemplo que muestra la pista musical que estamos escuchando en MPD, aunque se podría aplicar para otro reproductor realizando algunos cambios. Tal como este caso, es muy útil escribir un script en Bash que le envíe la entrada a dzen pues se simplifica todo lo que es el manejo de programas externos.

#!/bin/bash

## ********* ##
# Información #
## ********* ##

ARTISTA=`mpc -f %artist% | head -1`
PISTA=`mpc -f %track% | head -1`
TITULO=`mpc -f %title% | head -1`
ALBUM=`mpc -f %album% | head -1`
ESTADO=`mpc | tail -2 | head -1 | awk '{print $1}'`

## ****************** ##
# Propiedades de Dzen #
## ****************** ##

ANCHO=1000
ALTO=30
XPOS=460
YPOS=30
FUENTE="-*-terminus-*-*-*-*-*-*-*-*-*-*-*-*"
FONDO="#262f40"
COLOR_LETRA="#FFFFFF"
SEGUNDOS=5

## **** ##
# Salida #
## **** ##

(echo "$ESTADO $ARTISTA - $TITULO ($ALBUM)"; sleep "$SEGUNDOS") > dzen2 -w "$ANCHO" -h "$ALTO" -x "$XPOS" -y "$YPOS" -fn "$FUENTE" -bg "$FONDO" -fg "$COLOR_LETRA"

En en un principio lo verdaderamente importante son las últimas líneas que son las encargadas de producir la salida en dzen. Por una cuestión de orden, cada información requerida tiene su variable para poder modificarlo más fácilmente. En primer lugar, con #!/bin/bash hacemos que, al apuntarlo, nos lo ejecute con Bash. Posteriormente, se asignan las variables con la información que tenemos de la pista en reproducción. Al ejecutar MPC, obtendremos toda la información necesaria, por lo tanto, sólo basta con recortar aquello que necesitemos usando tanto head como tail y awk.

Luego, nos resta personalizar la apariencia de dzen. Basta con dar sus dimensiones (ANCHO y ALTO), su posición (XPOS e YPOS), fuente y colores (FUENTE, FONDO y COLOR_LETRA) y el tiempo que queremos que se muestre (SEGUNDOS). Para el caso de la fuente, usé el formato de fuente que da xfontsel por una cuestión de compatibilidad. Para esto, se debe primero agregar la fuente con xset +fp .

Finalmente, mostramos la barra que hemos formado hasta ahora. El formato es bastante genérico para los casos más sencillos. La parte principal consiste en mostrar la información con un echo y luego enviar la información directo a dzen utilizando las especificaciones elegidas. Pueden haber alternativas a la hora de mostrar nuestra notificación. Podría, como en este caso, durar unos segundos usando el comando sleep o podría quedar fijo indeterminadamente utilizando:


while true; do
..
done

Advertencia, desplázate para continuar leyendo

Donde true podría ser una expresión lógica. De esta manera podría funcionar una barra que muestre información general del sistema, tal como lo haría Conky. Dicho sea de paso, es posible enviar la salida de Conky a dzen por medio de conky-cli.

En fin, resumiendo, dzen resulta ser un contenedor bastante básico y sencillo de usar para una amplia cantidad de aplicaciones en lo que respecta en notificarle algo al usuario. Puede servir tanto para ampliar nuestro escritorio como para mostrar resultados en pantalla en aplicaciones para terminal. Muy útil también en scripts para advertir al usuario si algo falló o si terminó su ejecución satisfactoriamente. Sea lo que sea, también sirve como buena excusa para empezar (o volver a empezar) a programar. Sin embargo, en el fondo, no es más que otro pequeño divertimento.

78 Comentarios
Advertencia
Advertencia

Te recomendamos

Actualidad

Oracle ha publicado JDK 22, que dependiendo del prisma por el que se mire puede ser entendido como OpenJDK 22 o Java 22. Una...

Actualidad

Si hace poco más de un año que Elon Musk prometía liberar el algoritmo de Twitter «en una semana» y tardaba algo más en...

Actualidad

El uso de la línea de comandos sigue estando muy vigente en Linux, así que vamos a aprovechar la ocasión para presentar a Warp,...

Actualidad

La Escuela de Negocios de Harvard ha publicado un informe con el que ha intentado determinar cuál es el valor del código abierto. En...