Zenity

Zenity
Información sobre la plantilla
Parte de la familia Software Libre
Zenity.png
Ventana de ejemplo
CreadorGlynn Foster, Lucas Rocha
DesarrolladorGNOME
Versiones2.26.0
GéneroEntorno de escritorio
Sistemas Operativos compatiblesGNU/Linux
IdiomaInglés
LicenciaGNU General Public License
Sitio web
http://live.gnome.org/Zenity

Zenity, Zen Dialogs, es un software que permite generar diálogos simples empleando la biblioteca de GTK+ a manera de wrapper e ideado como sustituto de gdialog para GNOME2 y dialog en consola.

Características

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. Soporta diferentes tipos de diálogos:

  • Calendarios
  • Texto de entrada
  • Mensajes de error
  • Selección de archivos
  • Listas
  • Área de notificación
  • Barra de progreso
  • Pregunta al usuario
  • Alertas
  • Textos largos
  • Registro de escala

Ejemplo pregunta
zenity --question --text "¿te gusta Ecured?"
Este comando te preguntará si te gusta Ecured

Ejemplo texto de entrada

$ zenity --title="Zenity" --entry --text "¿Qué opinas de ECURED?" --entry-text="descríbelo aquí"

Con este ejemplo te permitirá insertar una entrada, en este caso una opinión sobre Ecured

Uso

Cuando escriba scripts, puede usar Zenity para crear diálogos simples que interactúen gráficamente con el usuario, como por ejemplo:

  • Puede crear un diálogo para obtener información del usuario. Por ejemplo, puede pedir al usuario seleccionar una fecha de un diálogo del calendario, o seleccionar un archivo de un diálogo de selección de archivo.
  • Usted puede crear un diálogo para proporcionar información al usuario. Por ejemplo, puede usar un diálogo de progreso para indicar el estado actual de una operación, o usar un diálogo de advertencia para alertar al usuario.
  • Cuando el usuario cierra el diálogo, Zenity imprime el texto producido por diálogo a la salida estándar de error.

Tipos de Diálogo en Zenity

Diálogo de calendario

Use la opción --calendar para crear un diálogo de calendario. Zenity devuelve la fecha seleccionada a la salida estándar. Si no se especifica una fecha en la línea de comando, el diálogo utilizará la fecha actual.
El diálogo de calendario soporta las siguientes opciones:--text=texto
Especifica el texto que se muestra en el diálogo del calendario.
--day=díaEspecifica el día que se selecciona en el diálogo del calendario.día debe ser un número entre 1 y 31 ambos incluídos.
--month=mesEspecifica el mes que se selecciona en el diálogo del calendario. mes debe ser un número entre 1 y 12 ambos incluídos.
--year=año
Especifica el año que se selecciona en el diálogo del calendario.
--date-format=formato
Especifica el formato que se devuelve desde el diálogo de calendario después de la selección de la fecha. El formato predeterminado depende de configuración regional. formato debe ser un formato que sea compatible con la función strftime, por ejemplo %A %d/%m/%y.

El siguiente script de ejemplo muestra cómo se crea un diálogo de calendario:

''#!/bin/sh
if zenity --calendar \
--title="Seleccione una fecha" \
--text="Pulse sobre una fecha para seleccionar esa fecha." \
--day=7 --month=8 --year=2005
then echo $?
else echo "No ha seleccionado ninguna fecha."
fi''

Diálogo de selección de archivos

Use la opción --file-selection para crear un diálogo de selección de archivos. Zenity devuelve los archivos o directorios seleccionados a la salida estándar. El modo predefinido de un diálogo de selección de archivo es «abrir».<br>El diálogo de selección de archivo soporta las siguientes opciones:<br>''--filename=nombre_del_archivo''<br>Especifica el archivo o directorio que se selecciona en el diálogo de selección de archivo cuando el diálogo se muestra por primera vez.<br>''--multiple''<br>Permite seleccionar archivos múltiples en el diálogo de selección.<br>''--directory''<br>Permite solamente la selección de directorios en el diálogo de selección de archivos.<br>''--save''<br>Establece el diálogo de selección de archivo en el modo «guardar».<br>''--separator=separador''<br>Especifica la cadena que se usará para dividir la lista de nombres de archivo devuelta.

El siguiente script de ejemplo muestra cómo crear un diálogo de selección de archivo: 
<pre>''#!/bin/sh
FILE=`zenity --file-selection --title="Seleccione un archivo"`
case $? in
0)
echo "\"$FILE\" seleccionado.";;
1)
echo "No ha seleccionado ningún archivo.";;
-1)
echo "No ha seleccionado ningún archivo.";;
esac''

Icono de notificación

--text=texto
Especifica el texto que se mostrará en el área de la notificación.

El siguiente script de ejemplo muestra cómo se crea un icono de notificación:

''#!/bin/sh
zenity --notification\
--window-icon="info" \
--text="!Hay actualizaciones que son necesarias para su sistema!"''

Diálogo de lista

Use la opción --list para crear un diálogo de lista. Zenity devuelve las entradas en la primera columna de texto de las filas seleccionadas a la salida estándar.
Los datos para el diálogo deben especificarse columna por columna, fila por fila. Puede proporcionar datos al diálogo a través de la entrada estándar. Cada entrada se debe separar por un carácter de línea nueva.
Si usa la opción --checklist o --radiolist, cada fila debe comenzar con 'TRUE' o 'FALSE'.
El diálogo de lista soporta las siguientes opciones:
--column=columna
Especifica el encabezado de la columna mostrada en el diálogo de lista. Usted debe especificar una opción --column por cada columna que usted desea mostrar en el diálogo.
--checklist

Especifica que la primera columna en el diálogo de lista contiene casillas de marcado.
--radiolist
Especifica que la primera columna en el diálogo de lista contiene casillas de opción.
--editable
Permite editar los elementos mostrados.
--separator=separador
Especifica qué cadena de caracteres se utilizará cuando el diálogo de lista devuelva las entradas seleccionadas.
--print-column=columna
Especifica qué columna debería imprimirse hasta la selección. La columna predeterminada es '1', 'ALL' puede usarse para imprimir todas las columnas.

El siguiente script de ejemplo muestra cómo crear un diálogo de lista:

''#!/bin/sh
zenity --list \
--title="Elija los fallos que desea ver" \
--column="Número del fallo" --column="Severidad" --column="Descripción" \
992383 Normal "GtkTreeView se cuelga con selecciones múltiples" \
293823 Alto "El diccionario de GNOME no manipula proxys" \
393823 Critico "El editor de menú no trabaja en GNOME 2.0"''

Diálogos de mensaje

Zenity puede crear cuatro tipos de diálogos de mensajes:

  • Error
  • Información
  • Pregunta
  • Advertencia

Diálogo de progreso

Use la opción --progress para crear un diálogo de progreso.
Zenity lee línea por línea los datos desde la entrada estándar. Si una línea se antepone con #, el texto se actualiza con el texto en esa línea. Si una línea contiene solamente un número, el porcentaje se actualiza con ese número.
El diálogo de progreso soporta las siguientes opciones:
--text=texto
Especifica el texto que se muestra en el diálogo de progreso.
--percentage=porcentaje
Especifica el porcentaje inicial que se establece en el diálogo de progreso.
--auto-close
Cierra el diálogo de progreso cuando se ha alcanzado 100%.
--pulsate
Especifica que la barra de progreso pulse hasta que se lea un carácter EOF desde la entrada estándar.

El siguiente script de ejemplo muestra cómo se crea un diálogo de progreso:

''#!/bin/sh
(
echo "10" ; sleep 1
echo "# Actualizando los registros de los correos" ; sleep 1
echo "20" ; sleep 1
echo "# Reiniciando las tareas de cron" ; sleep 1
echo "50" ; sleep 1
echo "Esta linea sera ignorada" ; sleep 1
echo "75" ; sleep 1
echo "# Reiniciando el sistema" ; sleep 1
echo "100" ; sleep 1
) |
zenity --progress \
--title="Actualizando los registros del sistema" \
--text="Rastreando los registros de los correos..." \
--percentage=0
if [ "$?" = -1 ] ; then
zenity --error \
--text="Actualización cancelada."
fi''

Diálogo para la entrada de texto

Use la opción -entry para crear un diálogo de entrada de texto. Zenity devuelve a la salida estándar el contenido del texto introducido.
El diálogo de entrada de texto soporta las siguientes opciones:
--text=texto
Especifica el texto que se muestra en el diálogo de entrada de texto.
--entry-text=texto
Especifica el texto que se muestra en el campo de entrada del diálogo de entrada.
--hide-text
Oculta el texto en el campo de entrada del diálogo de entrada de texto.

El siguiente script de ejemplo muestra cómo se crea un diálogo de entrada de texto:

''#!/bin/sh
if zenity --entry \
--title="Agregar una entrada" \
--text="Introdusca su _contraseña:" \
--entry-text "contraseña" \
--hide-text
then echo $?
else echo "No ha introducido ninguna contraseña."
fi''

Diálogo para la texto de información

Use la opción --text-info para crear un diálogo de texto de información.

El diálogo de texto de información soporta las siguientes opciones:

  • --filename=nombre_del_archivo: Especifica un archivo que se carga en el diálogo de texto de información.
  • --editable: Permite que el texto mostrado sea editado. El texto editado se devuelve por la salida estándar cuando el diálogo se cierra.

El siguiente script de ejemplo muestra cómo se crea un diálogo de texto de información:

''#!/bin/sh
FILE=`zenity --file-selection \
--title="Seleccione un archivo"`
case $? in
0)
zenity --text-info \
--title=$FILE \
--filename=$FILE \
--editable 2>/tmp/tmp.txt;;
1)
echo "No ha seleccionado ningún archivo.";;
-1)
echo "No ha seleccionado ningún archivo.";;
esac''

Fuentes