Zenity es un programa para desplegar ventanas de diálogo que reciben o entregan información procesable con scripts en bash, por ejemplo. Es algo así como la versión moderna del comando dialog, pero que usa las bibliotecas GTK+ para sus propósitos.
Si eres usuario de GNOME ten por seguro que zenity viene integrado. Si no, pues no... Así que tendrás que instalarlo con el gestor de paquetes de tu distribución. Los manuales en español están disponibles en línea.
Los cuadros de diálogo provistos por zenity son, entre otros:
Calendario. Seleccionador de archivos. Mensajes de error, información, pregunta y advertencia. Entrada de texto. * Ícono de notificación.
Teclea este comando para conocer todas las opciones disponibles para zenity:
$ zenity --help-all | less
Usage:
zenity [OPTION...]
Help Options:
-h, --help Show help options
--help-all Show all help options
--help-general Show general options
--help-calendar Show calendar options
...
...
--question Display question dialog
--warning Display warning dialog
--scale Display scale dialog
--text-info Display text information dialog
--display=DISPLAY X display to use
Probemos con el calendario. Sabemos que Cervantes y Shakespeare murieron el 23 de abril de 1616. Ahora conozcamos con zenity el día de tan singular fecha:
$ zenity --calendar --month=04 --day=23 --year=1616
04/23/1616
Fue sábado (con respecto a nuestro calendario, por supuesto). ¿Notaste que zenity devuelve la fecha? Selecciona otra fecha interactivamente y verás un cambio en la salida. Es una característica útil para crear scripts.
Ahora creemos una incoherente ventana de diálogo para aumentar el estrés de un usuario neuróticos:
$ zenity --question --title "Error 0xAE34D6" --ok-label="Definitivamente"
--cancel-label="Sí" --text 'Encontré Windows. ¿Desea eliminarlo?'
¿Deseas iniciar el día leyendo algún blog de la red Hipertextual, pero por alguna extraña razón quieres elegirlo de una lista incrustada en una ventana GTK+? Házlo zenity:
$ blog=$(zenity --list --text "Selecciona tus blogs..."
--title "Hipertextual" --checklist --column "Blog" --column "URL"
FALSE http://alt1040.com
FALSE http://bitelia.com
FALSE http://motorfull.com | tr "|" " ")
$ echo $blog
http://bitelia.com http://motorfull.com
$ firefox $blog
Lo anterior aparenta cierta complejidad, pero no hay tal si revisas con calma. Te invito a intentar con esas y otras opciones. Verás que con zenity serás capaz de enriquecer tus scripts de forma insospechada y sin necesidad que programar directamente con GTK+. Por cierto, hay un easter egg asociado a zenity... pregúntale a Google por él.