GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo mostrar cuadros de diálogo GUI en bash script 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 secuencia de comandos sea más fácil de usar y hermosa.

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

En este artículo, le mostraremos cómo usar Zenity para mostrar cuadros de diálogo de 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 fáciles de usar al mostrar cuadros de diálogo GTK+. Zenity es una práctica herramienta de línea de comandos para scripts de shell modernos. Zenity es fácil de usar y una aplicación multiplataforma.

Requisitos

Un usuario sudo con privilegios de root.

Instalar Zenity

Zenity es parte del escritorio GNOME y, de forma predeterminada, está instalado en la mayoría de las distribuciones de Linux. Puede verificar la instalación de Zenity en su sistema ejecutando el siguiente comando en la terminal.

zenity --version


Si Zenity no está instalado en su sistema, puede instalarlo usando Apt , dnf o pacman comando.

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

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

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

No solo eso, sino que también puede establecer el ancho y el alto para el cuadro de diálogo Zenity configurando las opciones --width y --height en el comando Zenity.

Al usar la opción --timeout, puede establecer un tiempo de espera del diálogo, después de que ese cuadro de diálogo se cierre automáticamente.

Cuadro de mensajes de Zenity

Puede crear un cuadro de diálogo de mensaje GUI básico y agradable usando un simple comando Zenity desde la terminal.

Cuatro tipos de cuadro de diálogo de mensaje disponibles en Zenity.
 

  • Información
  • Error
  • Pregunta
  • Advertencia

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

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

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


2. Un cuadro de diálogo de error

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

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


3. Un cuadro de diálogo de pregunta

Puede solicitar fácilmente Sí de ninguna pregunta ejecutando el siguiente comando:

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


Puede usar el diálogo de preguntas de Zenity en un script de shell como este:

#/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

Notificación

Puede mostrar Notificación usando Zenity.

zenity --notification --text "Good Morning"

Cuadros de entrada de Zenity

Con Zenity, puede crear cuadros de diálogo simples que toman la entrada del usuario y la muestran como salida estándar.

Aquí hay 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

Diálogo de entrada de texto

Puede utilizar la opción --entry para crear un cuadro de diálogo de entrada de texto. Es muy útil cuando desea pedirle al usuario que ingrese algún texto.

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

Diálogo de lista

Puede usar la opción --list para crear un diálogo de varias columnas. Aquí debe ingresar Datos para el diálogo de lista columna por columna, fila por fila. Puede usar la casilla de verificación o la casilla 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

También puede marcar la casilla de verificación con la opción --list para selección múltiple.

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

Diálogo de selección de color

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

zenity --color-selection --show-palette

Diálogo de selección de archivos

Puede usar la opción --file-selection para capturar archivos o directorios seleccionados como salida estándar. También puede guardar el archivo usando la opción --file-selection.

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

Diálogo de progreso

Puede crear una buena barra de progreso usando la opción --progress. Esto es útil muchas veces, cuando desea mostrar al usuario la barra de progreso de finalización de la aplicación o secuencia de comandos.

El siguiente comando muestra 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 obtener más opciones de progreso, ejecute el siguiente comando en la terminal

zenity --help-progress

Para más opciones de Zenity puedes usar man Zenity y Zenity --ayuda .

Conclusión

En la guía anterior, aprendió cómo puede escribir un script bash para mostrar cuadros de diálogo de GUI usando Zenity y hacer que el script Bash sea más fácil de usar. Siéntase libre de preguntarme si tiene alguna pregunta.


Linux
  1. ¿Cómo depurar un script Bash?

  2. ¿Cómo establecer parámetros cuando Pipe Bash Script to Bash?

  3. ¿Cómo llamar a una función Bash en Bash Script dentro de Awk?

  4. Cómo dividir una cadena en Bash Script

  5. ¿Cómo pasar parámetros a un script Bash?

Cómo mostrar la información del proceso usando Procs en Linux

Cómo mostrar hojas de trucos de comandos de Linux usando, por ejemplo

Cómo crear cuadros de diálogo GUI en Bash Scripts con Zenity en Linux y Unix

Cómo crear cuadros de diálogo GUI en Bash Scripts con Whiptail en Linux

Cómo mostrar la información de la CPU de Linux usando CPUFetch

Cómo ejecutar un script Bash