Zenity GUI · 5 min read · Nov 10, 2025

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

Todos sabemos que los scripts bash de Linux son una verdadera fortaleza 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 amigable y hermoso.

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

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

Zenity es una aplicación de código abierto para mostrar una GUI simple en scripts de shell. Hace que los scripts sean más amigables al mostrar diálogos GTK+. Zenity es una herramienta de línea de comandos útil para la programación moderna 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 es 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 la terminal.

zenity --version

Si Zenity no está instalado en tu sistema, puedes instalarlo usando 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 usar con Zenity de forma independiente. Las opciones generales son –title, –window-icon, –width, –height, –timeout.

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

Puedes usar la opción –window-icon para especificar un ícono que se usará como el ícono para el cuadro de diálogo de Zenity.

No solo eso, sino que puedes establecer el ancho y la altura para el cuadro de diálogo de Zenity configurando las opciones –width y –height en el comando de Zenity.

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

Cuadro de mensaje de Zenity

Puedes crear algunos diálogos de mensaje GUI básicos y agradables usando un simple comando de Zenity desde la terminal.

Cuatro tipos de diálogos de mensaje están 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 la terminal:

zenity --info --text="Actualización de software disponible." --width=500

Mostrar cuadro de diálogo de texto de información usando 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 en la instalación" --title="Error" --width=500 --width=200

Mostrar cuadro de diálogo de error usando script bash

3. Un cuadro de diálogo de pregunta

Puedes preguntar fácilmente por una pregunta de sí o no ejecutando el siguiente comando:

zenity --question --text="¿Quieres reiniciar el pc?" --width=200

Cuadros de diálogo en bash
Puedes usar el cuadro de diálogo de pregunta de Zenity en un script de shell así:

#/bin/bash  
touch demo.txt  
if zenity --question --title="Confirmar eliminación" --text="¿Estás seguro de que quieres eliminar el archivo demo.txt?" --no-wrap  
    then  
    rm demo.txt  
    zenity --info --title="Éxito" --text="demo.txt fue eliminado" --no-wrap  
fi

4. Un cuadro de diálogo de advertencia

zenity --warning --title="Actualización disponible" --text="Se requiere actualización del sistema operativo" --width=200

Bash muestra cuadro de diálogo de advertencia

Notificación

Puedes mostrar una notificación usando Zenity.

zenity --notification --text "Buenos Días"

Cuadros de entrada de Zenity

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

Aquí hay algunos cuadros de entrada:

Calendario

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

zenity --calendar
Salida:  
17/04/21

Entrada de calendario desde script bash

Cuadro de entrada de texto

Puedes usar la opción –entry para crear un cuadro de entrada de texto. Es muy útil cuando deseas pedir al usuario que ingrese algún texto.

zenity --entry --title "Información del usuario" --text "Por favor, ingresa tu nombre"

Cuadro de lista

Puedes usar la opción –list para crear un diálogo de múltiples columnas, aquí necesitas ingresar datos para el cuadro de diálogo de lista columna por columna, fila por fila. Puedes usar casillas de verificación o botones de opción con el cuadro de diálogo de lista como se muestra a continuación:

zenity --list  --title "Elegir procesador" --radiolist  --column "ID" --column="Nombre" 1 AMD 2 Intel

Cuadro de diálogo de lista

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

Opciones de casilla de verificación con bash

zenity --list --title "Paquetes" --list  --text "selecciona los paquetes que deseas instalar" --checklist --column "id"  --column "Nombre" 1 "Google Chrome" 2 "VLC" 3 "Firefox" 4 "GIMP"
Salida  
Google Chrome|VLC|Firefox

Cuadro de selección de color

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

zenity --color-selection --show-palette

Selector de color de script bash

Cuadro de selección de archivos

Puedes usar la opción –file-selection para capturar archivos o directorios seleccionados como salida estándar. También puedes guardar archivos usando la opción –file-selection.

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

Abrir cuadro de selección de archivos desde bash

Cuadro de progreso

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

El siguiente comando te mostrará la barra de progreso de 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# Descargando a \2\/s, ETA \3/' | zenity --progress --title="Descargando archivo..." --percentage=1 --pulsate

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

zenity --help-progress

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

Conclusión

En la guía anterior, aprendiste cómo puedes escribir un script bash para mostrar diálogos GUI usando Zenity y hacer que el script de Bash sea más amigable. No dudes en preguntarme si tienes alguna pregunta.

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.