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 --versionSi 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 zenityPara sistemas basados en RedHat:
dnf install zenityPara sistemas basados en Arch:
pacman -S zenityOpciones 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
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
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
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
fi4. Un cuadro de diálogo de advertencia
zenity --warning --title="Actualización disponible" --text="Se requiere actualización del sistema operativo" --width=200Notificació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 --calendarSalida:
17/04/21
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
También puedes dar casillas de verificación con la opción –list para selección múltiple.

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|FirefoxCuadro 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-paletteCuadro 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 "/"
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 --pulsatePara más opciones de progreso, ejecuta el siguiente comando en la terminal:
zenity --help-progressPara 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.
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.

