
Cuando se trata de secuencias de comandos bash, todas las secuencias de comandos se centran principalmente en la operación de la línea de comandos. Ya sea que necesite información del usuario o ver algunos mensajes, todo se hace a través del terminal. La mayoría de las personas que utilizan scripts con Bash no tienen idea de que existen varias herramientas GUI. En este artículo vamos a hablar sobre una de esas herramientas llamada Cenit – un programa simple que le permite crear cuadros de diálogo gráficos (GTK +) en la línea de comandos y scripts de shell.
Que es zenity
Zenity es una reescritura de gdialog, el puerto GNOME de Dialog que le permite crear una serie de widgets para diversas operaciones donde los usuarios pueden interactuar gráficamente con el script. Los widgets se basan en el kit de herramientas GTK.
Zenity es un programa de código abierto que fue coescrito C. Lenguaje de programación. Es compatible con Linux, BSD y Windows.
Sin más preámbulos, veamos cómo usar Zenity para mostrar cuadros de diálogo gráficos GTK + desde la línea de comandos y los scripts de shell.
Cómo instalar Zenity en Linux
Primero, verifique que Zenity esté instalado y disponible ejecutando los siguientes comandos:
$ which zenity /usr/bin/zenity
$ zenity --version 3.32.0
$ zenity --about
Si zenity no está instalado en su distribución, dependiendo de la distribución, ejecute los siguientes comandos para instalarlo.
Linux alpino:
$ sudo apk add zenity
Arch Linux:
$ sudo pacman -S zenity
Fedora, RHEL, CentOS, Alma Linux y Rocky Linux:
$ sudo dnf install zenity
Debian, Ubuntu, Linux Mint, sistema operativo Pop:
$ sudo apt install zenity
openSUSE:
$ sudo zypper install zenity
1. Ayuda de Zenity y opciones generales
Cada widget tiene una opción de ayuda asociada que le brinda una variedad de opciones compatibles.
Ejecute el siguiente comando para acceder al área de ayuda.
$ zenity --help
Hay algunas opciones generales que se pueden usar con cualquier widget. Estas no son opciones obligatorias, pero cuando se utilizan, puede cambiar el comportamiento del widget.
Para obtener la lista de opciones generales, ejecute el siguiente comando.
$ zenity --help-general
Veremos cómo funcionan estas opciones en las próximas secciones.
2. Cuadro de diálogo de mensaje
Un cuadro de diálogo de mensaje muestra un cuadro de diálogo de error, advertencia, información y pregunta. Dependiendo de la situación, debe usar el cuadro de diálogo apropiado en el script.
2.1. Cuadro de diálogo de error
Ejecute el siguiente comando para acceder a la lista de opciones admitidas para el cuadro de diálogo de error:
$ zenity --help-error
Utilice el siguiente comando para mostrar el cuadro de diálogo de error en el script. Aquí que --error
Bandera crea el cuadro de diálogo de error y --text
bandera imprime el mensaje de texto. Puede ver en la imagen que hay un icono de error asociado con el cuadro de diálogo.
zenity --error --title "Error Message" --width 500 --height 100 --text "Permission denied. Run with sudo or as root user."
También puede ver en la imagen de arriba que algunas de las opciones comunes como –width, –height se utilizan para controlar la geometría del cuadro de diálogo. La bandera –title se usa para imprimir la barra de diálogo con el título.
2.2. Cuadro de diálogo de advertencia
Ejecute el siguiente comando para acceder a la lista de opciones admitidas para el cuadro de diálogo de advertencia:
$ zenity --help-warning
Usar --warning
Marcar en el script para mostrar el cuadro de advertencia y --text
Marcar para mostrar el mensaje de advertencia.
zenity --warning --title "Warning Message" --width 500 --height 100 --text "Disk space exceeded the threshold limit. Check ASAP."
2.3. Acerca del cuadro de diálogo
Para acceder a la lista de opciones admitidas para el cuadro de diálogo Acerca de, ejecute el siguiente comando:
$ zenity --help-info
Usar --info
Marcar en el script para mostrar el cuadro de información y --text
Marcar para mostrar el mensaje de información.
zenity --info --title "Info Message" --width 500 --height 100 --text "Installation completed successfully."
2.4. Diálogo de pregunta
Ejecute el siguiente comando para acceder a la lista de opciones admitidas para el cuadro de diálogo de la pregunta:
$ zenity --help-question
El diálogo de pregunta muestra un mensaje junto con un. a sí señor o no Oportunidad. Cuando presionas «Sí señor», el código de retorno es «Cero» y para «No» el código de retorno es «uno». Necesita usar los códigos de salida para escribir más lógica en sus scripts.
zenity --info --title "Info Message" --width 500 --height 100 --text "Installation completed successfully."
3. Cuadro de diálogo de entrada de texto
Para acceder a la lista de opciones de diálogo de entrada de texto admitidas, ejecute el siguiente comando:
$ zenity --help-entry
El cuadro de diálogo de ingreso de texto solicita al usuario que ingrese. La bandera --entry
para crear un diálogo de entrada. Para mostrar texto en el cuadro de diálogo, utilice el --text
Bandera. El valor ingresado en el campo de texto se imprime en el terminal tan pronto como presione OK. Deberá guardar la salida en una variable si desea seguir procesando la entrada del cuadro de texto como lo hice a continuación.
$ USR=$(zenity --entry --width 500 --title "check user" --text "Enter the user name"); echo $USR
Si no desea que el texto que escribió sea visible mientras escribe, utilice el --hide-text
Bandera.
$ USR=$(zenity --entry --width 500 --title "check user" --text "Enter the user name" --hide-text); echo $USR
También puede establecer un valor predeterminado dentro del campo de entrada escribiendo el --entry-text
Bandera. Debe eliminar el valor y realizar sus entradas; de lo contrario, el valor existente se utilizará como valor predeterminado.
$ USR=$(zenity --entry --width 500 --title "check user" --text "Enter the user name" --entry-text $USER); echo $USR
4. Cuadro de diálogo «Contraseña»
Ejecute el siguiente comando para acceder a la lista de opciones de diálogo de contraseña admitidas:
$ zenity --help-password
El cuadro de diálogo de contraseña acepta el nombre de usuario y la contraseña con la --username
y --password
Bandera. La salida se muestra como (Nombre de usuario | Contraseña). Debe asignar la salida del comando a una variable y extraer el nombre de usuario y la contraseña para su posterior procesamiento.
$ zenity --password --username
5. Cuadro de diálogo de información de texto
Para acceder a la lista de opciones admitidas para el cuadro de diálogo de información de texto, ejecute el siguiente comando:
$ zenity --help-text-info
El cuadro de diálogo de información de texto imprime cualquier texto de un archivo o abre una URL en el cuadro de diálogo. Por ejemplo, para leer un archivo y mostrar el texto, use la bandera --filename
. En el siguiente ejemplo, estoy leyendo el /etc/hosts
Expediente.
zenity --text-info
--title "Hostname Information"
--filename "/etc/hosts"
los --checkbox
La bandera se puede utilizar para obtener información del usuario. Un buen ejemplo sería «Aceptar acuerdo de licencia». Si no selecciona la casilla de verificación, el botón Aceptar está desactivado.
zenity --text-info
--title "Hostname Information"
--filename "/etc/hosts"
--checkbox "This is a checkbox"
6. Cuadro de diálogo Calendario
Para acceder a la lista de opciones admitidas para el cuadro de diálogo del calendario, ejecute el siguiente comando:
$ zenity --help-calendar
Aparece un calendario en el cuadro de diálogo del calendario y puede elegir una fecha. Debe guardar la salida en una variable, de lo contrario la fecha seleccionada se imprimirá en el terminal.
zenity --calendar --title="Select a Date" --text="Select Date to pull the employee record."
De forma predeterminada, se selecciona la fecha de hoy, pero también podemos elegir una fecha personalizada usando --day
, --month
, y --year
Banderas.
zenity --calendar --title="Select a Date" --text="Select Date to pull the employee record." --year 2015 --month 7 --day 15
El formato de salida estándar es DDMMYY
. También es posible crear una salida de fecha personalizada utilizando el --date-format
Bandera.
zenity --calendar --title="Select a Date" --text="Select Date to pull the employee record." --date-format %m-%d-%y
7. Cuadro de diálogo de selección de color
Ejecute el siguiente comando para acceder a la lista de opciones admitidas para el cuadro de diálogo del selector de color:
$ zenity --help-color-selection
El diálogo de selección de color muestra una paleta y le permite elegir un color y la salida será un valor RGB. Usar --color-selection
Marcar junto con --show-palette
Bandera.
$ COLOR_RGB=$(zenity --color-selection --show-palette) $ echo $COLOR_RGB
8. Cuadro de diálogo de selección de archivos
Ejecute el siguiente comando para acceder a la lista de opciones admitidas para el cuadro de diálogo de selección de archivos:
$ zenity --help-file-selection
En el cuadro de diálogo de selección de archivos, puede seleccionar archivos o directorios y la ruta se muestra como salida. La bandera --file-selection
debería ser usado. Hay algunas banderas que se pueden utilizar en el cuadro de diálogo de selección de archivos.
--filename
=> Ruta al archivo / directorio estándar--directory
=> Seleccionar directorios solamente--multiple
=> Permite seleccionar varios nombres de archivos--save
=> Establecer en modo económico
zenity --file-selection --title "Select Files" --filename "/home/$USER/" --multiple
En el caso de selección múltiple, la ruta del archivo con el "|"
Símbolo.
Es posible utilizar un separador personalizado con el --separator
Bandera. En el siguiente ejemplo estoy usando Colon (:
) como separador.
zenity --file-selection --title "Select Files" --filename "/home/$USER/" --multiple --separator :
9. Cuadro de diálogo Formularios
Ejecute el siguiente comando para acceder a la lista de opciones admitidas para el cuadro de diálogo Formularios:
$ zenity --help-forms
Puede crear formularios en el cuadro de diálogo de formularios. Un buen ejemplo es el formulario de registro de nuevo usuario. Usar --forms
Marcar para crear un cuadro de diálogo de formulario. Hay un par de indicadores adicionales que se pueden utilizar junto con el --forms
Bandera.
--add-entry
=> Agregue una nueva entrada en el cuadro de diálogo del formulario para que el usuario pueda ingresar la entrada.--text
=> Texto que se mostrará en el cuadro de diálogo.--add-password
=> Acepta la contraseña, pero no muestra el valor en la pantalla.--calendar
=> Abra el calendario y seleccione una fecha.
A continuación se muestra un ejemplo simple de un formulario de registro de usuario que utiliza el cuadro de diálogo de formularios.
zenity --forms --text "Welcome to signup wizard" --add-entry "Enter the first name" --add-entry "Enter the last name" --add-entry "Enter login name" --add-password "Enter password"
El separador estándar para los valores de entrada es "|"
Símbolo. También puede utilizar un separador personalizado escribiendo --separator
Bandera.
10. Cuadro de diálogo de progreso
Para acceder a la lista de opciones admitidas para el cuadro de diálogo de la barra de progreso, ejecute el siguiente comando:
$ zenity --help-progress
Usar --progress
Marcar para crear una barra de progreso. Para crear una barra de progreso, debe comprender cómo funciona. Deben proporcionarse dos entradas de su parte.
- La línea que contiene solo el número con el
echo
El comando se considera un porcentaje de progreso. - La línea que comienza con
#
Símbolo enecho
El comando se imprime como un mensaje de progreso.
( echo 10 echo "# Updating repository Index" sleep 5 echo 15 echo "# Reading input files" sleep 5 echo 70 echo "# Installing packages..." sleep 5 echo 100 echo "# Package Installation completed!" ) | zenity --title "Package Installation Progress Bar" --progress --auto-close
Una vez que se completa la barra de progreso, puede cerrar automáticamente un cuadro de diálogo con la marca –auto-close.
11. Cuadro de diálogo de lista
Para acceder a la lista de opciones admitidas para el cuadro de diálogo de la lista, ejecute el siguiente comando:
$ zenity --help-list
En el cuadro de diálogo de lista puede crear una lista de filas y columnas. Usar --list
Marcar para crear un cuadro de diálogo de lista y --column
Marcar para agregar columnas.
$ zenity --list --column "Player" --column "Club" --column "Country" Messi PSG Argentina Neymar PSG Brazil Ronaldo Manu Portugal
Eche un vistazo al ejemplo anterior. Uso de --column
bandera, creé tres columnas. Después de crear las columnas, puede ingresar el valor en las siguientes filas que se mostrarán para cada fila como lo hice en la imagen de arriba.
Se pueden crear casillas de verificación o botones de opción en la primera columna. Para crear un botón de radio, use --radiolist
Marcar y usar para crear una casilla de verificación --checklist
Bandera. Al crear una lista de radio, es esencial agregar CIERTO o INCORRECTO Palabras clave como primer valor de su línea. Verdadero habilita la lista de radio o la casilla de verificación, mientras que falso deja la casilla de verificación sin marcar.
zenity --list --checklist --column "checkbox" --column "Player" --column "Club" --column "Country" FALSE Messi PSG Argentina FALSE Neymar PSG Brazil FALSE Ronaldo Manu Portugal
Cuando selecciona la fila y hace clic en Aceptar, el valor se muestra con (|
) como separador. De forma predeterminada, solo la primera columna se imprime en el terminal. Para imprimir la línea completa, pase --print-column ALL
.
diploma
Hemos llegado al final del artículo. Expliqué brevemente qué es Zenity y qué diferentes widgets se pueden usar. Es posible que no siempre necesite utilidades de GUI. Sin embargo, si necesita widgets gráficos GTK + para scripts bash, Zenity será útil junto con otras herramientas GUI.
Recurso: