Cómo mostrar diálogos GUI en un script bash usando Zenity

Todos sabemos que los scripts bash de Linux son un verdadero punto fuerte de Linux. A menudo queremos mostrar una interfaz gráfica de usuario (GUI) en nuestros scripts para facilitar la interacción con los usuarios. La GUI hace que cualquier script sea más fácil de usar y más bonito.

Para la GTK en los scripts de shell, hay muchas opciones y herramientas disponibles en Linux.

En este artículo, te mostraremos cómo utilizar Zenity para mostrar diálogos GUI en scripts Bash.

Zenity es una aplicación de código abierto para mostrar una interfaz gráfica de usuario sencilla en scripts de shell. Hace que los scripts sean más fáciles de usar mostrando diálogos GTK+. Zenity es una práctica herramienta de línea de comandos para los modernos scripts de shell. Zenity es fácil de usar y es una aplicación multiplataforma.

Requisitos previos

Un usuario sudo con privilegios de root.

Instalar Zenity

Zenity forma parte del escritorio GNOME y, por defecto, está instalado en la mayoría de las distribuciones de Linux. Puedes verificar la instalación de Zenity en tu sistema ejecutando el siguiente comando en el terminal.

zenity --version

Si Zenity no está instalado en tu sistema, puedes instalarlo utilizando el comando Apt, dnf o pacman.

Para sistemas basados en Ubuntu/Debian:

sudo apt-get install zenity

Para sistemas basados en RedHat :

dnf install zenity

Para sistemas basados en Arch:

pacman -S zenity

Opciones generales de Zenity

Hay algunas opciones generales que se pueden utilizar con Zenity de forma independiente. Las opciones generales son –title, –window-icon, –width, –height, –timeout

Puedes utilizar la opción —title para especificar un título para la ventana de diálogo.

Puedes utilizar la opción –window-icon para especificar un icono que se utilizará como icono del cuadro de diálogo Zenity.

No sólo eso, sino que puedes establecer la anchura y la altura del Cuadro de Diálogo de Zenity estableciendo las opciones –width y –height en el comando Zenity.

Utilizando la opción –timeout puedes establecer un tiempo de espera del cuadro de diálogo, después del cual se cerrará automáticamente.

Cuadro de Mensajes Zenity

Puedes crear algunos diálogos de mensajes básicos y agradables para la interfaz gráfica de usuario (GUI) utilizando un simple comando Zenity desde el terminal.

Cuatro tipos de diálogos de mensajes disponibles en Zenity.

  • Información
  • Error
  • Pregunta
  • Advertencia

1. Un cuadro de diálogo de información

Puedes crear un cuadro de diálogo de información ejecutando el siguiente comando en el terminal:

zenity --info --text="Software Update Available." --width=500

Mostrar un diálogo de texto informativo mediante un script bash

2. Un cuadro de diálogo de error

Ejecuta el siguiente comando para mostrar el cuadro de diálogo de error

zenity --error --text="Error In Installation" --title="Error" --width=500 --width=200

Mostrar el diálogo de error mediante un script bash

3. Un cuadro de diálogo de pregunta

Puedes hacer fácilmente una pregunta de Sí o No ejecutando el siguiente comando:

zenity --question --text="Do you want to reboot pc?" --width=200

Cuadros de diálogo en bash
Puedes utilizar el cuadro de diálogo de preguntas de Zenity en un script de shell como éste:

#/bin/bash
touch demo.txt
if zenity --question --title="Confirm deletion" --text="Are you sure you want to demo.txt file?" --no-wrap
    then
    rm demo.txt
    zenity --info --title="Success" --text="demo.text was removed" --no-wrap
fi

4. Un cuadro de diálogo de advertencia

zenity --warning --title="Update Available" --text="OS Update required" --width=200

Cuadro de diálogo de advertencia de Bash

Notificación

Puedes mostrar una notificación utilizando Zenity.

zenity --notification --text "Good Morning"

Mostrar las notificaciones del escritorio en Gnome usando scripts de bash

Cajas de entrada de Zenity

Con Zenity puedes crear cuadros de diálogo sencillos que tomen la entrada del usuario y la muestren como salida estándar.

Aquí tienes algunos cuadros de entrada:

Calendario

El cuadro de diálogo Calendario muestra un calendario y devuelve la fecha seleccionada por el usuario como salida estándar.

zenity --calendar
Output:
17/04/21

Entrada del calendario desde el script bash

Cuadro de diálogo de entrada de texto

Puedes utilizar la opción –entry para crear un cuadro de diálogo de entrada de texto. Es muy útil cuando quieres pedir al usuario que introduzca algún texto.

zenity --entry --title "User Info" --text "Please enter your name"

Diálogo de lista

Puedes utilizar la opción –list para crear un diálogo de varias columnas, Aquí tienes que introducir los datos para el diálogo de lista columna por columna, fila por fila. Puedes utilizar la casilla de verificación o la rediobox con el cuadro de diálogo de lista, como se muestra a continuación:

zenity --list  --title "Choose Processor" --radiolist  --column "ID" --column="Name" 1 AMD 2 Intel

Cuadro de diálogo de la lista

También puedes dar a la casilla de verificación con la opción –list para la selección múltiple.

Opciones de casillas de verificación con bash

zenity --list --title "Packages" --list  --text "select packages you want to install" --checklist --column "id"  --column "Name" 1 "Google Chrome" 2 "VLC" 3 "Firefox" 4 "GIMP"
Output
Google Chrome|VLC|Firefox

Cuadro de diálogo de selección de color

Puedes utilizar la opción –color-selección para tomar el valor de selección de color del usuario.

zenity --color-selection --show-palette

Seleccionador de colores con script Bash

Cuadro de diálogo de selección de archivos

Puedes utilizar la opción –selección de archivo para capturar los archivos o directorios seleccionados como salida estándar. También puedes guardar el archivo utilizando la opción -selección de archivo.

zenity --file-selection --multiple --filename "/"

Abrir la caja de selección de archivos desde bash

Diálogo de progreso

Puedes crear una bonita barra de progreso utilizando la opción –progress. Esto es útil muchas veces, cuando quieres mostrar al usuario la barra de progreso de la finalización de tu aplicación o script.

El siguiente comando te mostrará la barra de progreso de la descarga.

(wget -r  --no-parent patch -A.tar.gz http://157.245.99.119/latest/ -P /tmp 2>&1 ) | sed -u 's/.* \([0-9]\+%\)\ \+\([0-9.]\+.\) \(.*\)/\1\n# Downloading at \2\/s, ETA \3/' | zenity --progress --title="Downloading File..." --percentage=1 --pulsate

Para más opciones de progreso ejecuta el siguiente comando en el terminal

zenity --help-progress

Para más opciones de Zenity puedes utilizar man Zenity y Zenity –help.

Conclusión

En la guía anterior, has aprendido cómo puedes escribir un script bash para mostrar diálogos GUI utilizando Zenity y hacer que el script Bash sea más fácil de usar. No dudes en preguntarme si tienes alguna duda.

También te podría gustar...