A la hora de hacer scripts de sistema, típicamente son para tareas de administración y mantenimiento en los servidores, donde no tenemos (o no solemos tener) un entorno gráfico y por tanto ya nos va bien usar la interfaz de linea de comandos para interactuar con nuestro script (para indicar un nombre de fichero, una ruta de destino, una fecha, …)

Pero a veces nos puede interesar realizar un script para automatizar tareas a nivel de usuario, y en ese caso tanto por seguridad como por comodidad, nos interesará ofrecer un entorno gráfico. Que duda cabe que hay cantidad de medios de hacer este tipo de tareas: mediante una pequeña aplicación web al estilo webmin, mediante una pequeña aplicación java de escritorio, abriendo ventanas desde el script para automatizar algún proceso con parámetros fijos…

Sin embargo, a veces puede no ser suficiente el fijar los parámetros de nuestra tarea, o bien puede que hacer una aplicación sea demasiado complejo para la tarea que queremos llevar a cabo. Es en esos casos donde tiene un hueco la libreria Zenity.

Zenity es una libreria multiplataforma (tanto para Linux, como para Windows, como en Mac, están disponibles) que nos permite usar diálogos estándar de nuestra interfaz gráfica invocados desde nuestro script de una manera muy sencilla. Nos permite usar varios tipos de diálogos, cada uno con sus opciones específicas, además de tener algunas opciones generales. Una vez instalado en nuestro sistema (esto dependerá de la plataforma), podremos ver todas las opciones disponibles simplemente invocando:

zenity –help

que nos muestra lo siguiente:

Usage:   zenity.exe [OPTION…]

Help Options:

-?, –help                                       Show help options

–help-all                                       Show all help options

–help-general                              Mostrar opciones generales

–help-calendar                            Mostrar opciones del calendario

–help-entry                                  Mostrar opciones de la entrada de  texto

–help-error                                  Mostrar opciones de error

–help-info                                    Mostrar opciones de información

–help-file-selection                    Mostrar opciones de selección de archivo

–help-list                                      Mostrar opciones de la lista

–help-notification                       Mostrar opciones del icono de not ificación

–help-progress                             Mostrar opciones de progreso

–help-question                             Mostrar opciones de pregunta

–help-warning                              Mostrar opciones de advertencia

–help-scale                                    Muestra las opciones de escala

–help-text-info                             Mostrar opciones del texto de inf ormación

–help-misc                                    Mostrar opciones misceláneas

–help-gtk                                      Mostrar opciones GTK+

Application Options:

–calendar                                   Mostrar el diálogo del calendario

–entry                                         Mostrar el diálogo de entrada de texto

–error                                         Mostrar el diálogo de error

–info                                           Mostrar el diálogo de información

–file-selection                           Mostrar el diálogo de selección d e archivo

–list                                            Mostrar el diálogo de lista

–notification                             Mostrar notificación

–progress                                   Mostrar el diálogo de indicación de progreso

–question                                   Mostrar el diálogo de pregunta

–warning                                    Mostrar el diálogo de advertencia

–scale                                          Mostrar el diálogo de escala

–text-info                                    Mostrar el diálogo de texto de in formación

–display=DISPLAY                   X display to use

Lo que aparece como “application options” son los diferentes tipos de diálogo que proveé la libreria. Lo mejor es ir probandolos para comprobar como funcionan, sobre todo la de barra de progreso. Este diálogo en particular tiene un funcionamiento muy curioso: se puede enlazar a la salida de otro comando (mediante un “pipe”) y así ir recibiendo el progreso de ese comando, cosa que detecta al procesar las lineas de su output (si recibe un número lo interpreta como un porcentaje, y la barra se actualiza; si recibe un texto precedido por una almohadilla lo interpreta como un comentario y actualiza el texto de la ventana)

Podeis ver ejemplos prácticos de los distintos tipos de diálogo en este pdf.