Búsqueda de sitios web

Gtkdialog: cree interfaces gráficas (GTK+) y cuadros de diálogo utilizando scripts de Shell en Linux


Gtkdialog (o gtkdialog) es una ingeniosa utilidad de código abierto para crear y construir interfaces y cuadros de diálogo GTK+ con la ayuda de scripts de shell de Linux y el uso de la biblioteca GTK, además de utilizar una sintaxis similar a xml, que facilita la creación de interfaces utilizando gtkdialog. Es muy similar a la herramienta más famosa llamada Zenity, pero viene con algunas funciones útiles y personalizables que le permiten crear fácilmente muchos widgets como vbox, hbox, botones, marcos, texto, menús y mucho más.

Leer también: Crear cuadros de diálogo gráficos GTK+ usando Zenity

Instalación de Gtkdialog en Linux

Puede descargar gtkdialog-0.8.3 (que es la última versión) o también puede usar el comando wget, descomprimir el archivo descargado y ejecutar los siguientes comandos para compilar desde el código fuente.

sudo apt-get install build-essential		[on Debian based systems]
yum install gcc make gcc-c++			[on RedHat based systems]
wget https://gtkdialog.googlecode.com/files/gtkdialog-0.8.3.tar.gz
tar -xvf gtkdialog-0.8.3.tar.gz
cd gtkdialog-0.8.3/
./configure
make
sudo make install

Ahora comencemos a crear algunos cuadros, cree un nuevo script "miprograma" en su carpeta de inicio.

Mi primer programa
cd
touch myprogram

Ahora abra el archivo “miprograma” usando cualquier editor de texto que desee y agréguele el siguiente código.

#!/bin/bash 

GTKDIALOG=gtkdialog 
export MAIN_DIALOG=' 

<window title="My First Program" icon-name="gtk-about" resizable="true" width-request="300" height-request="310"> 

<vbox> 
	<hbox space-fill="true" space-expand="true"> 
		<button>	 
			<label>Welcome to TecMint.com Home!</label> 
			<action>echo "Welcome to TecMint.com Home!"</action> 
		</button> 
	</hbox> 
</vbox> 
</window> 
' 

case $1 in 
	-d | --dump) echo "$MAIN_DIALOG" ;; 
	*) $GTKDIALOG --program=MAIN_DIALOG --center ;; 

esac 
------------

Guarde el archivo, establezca el permiso de ejecución y ejecútelo como se muestra.

chmod 755 myprogram
./myprogram

Así es como se creó y ejecutó su primer programa usando gtkdialog.

Ahora, explicaremos el código brevemente.

  1. #!/bin/bash: la primera línea de cualquier script de shell, se utiliza para especificar la ruta del shell bash.
  2. GTKDIALOG=gtkdialog: Aquí definimos una variable para usarla más adelante al ejecutar el script de shell con gtkdialog, esta línea debe estar en todos los scripts que crees usando gtkdialog.
  3. exportar MAIN_DIALOG=: Otra variable que definimos que contendrá toda la sintaxis de nuestra interfaz. Puede reemplazar MAIN_DIALOG con el nombre que desee, pero debe reemplazarlo también en las últimas 4 líneas del script.
  4. Título de la ventana: No creo que sea necesario explicar este código, creamos un título, un ícono predeterminado para la ventana, elegimos si era redimensionable o no, y definimos el ancho y altura que queremos, por supuesto, todas esas opciones son secundarias, puedes usar la etiqueta si lo deseas.
  5. : Usamos la etiqueta vbox para crear un cuadro vertical, es importante crear una etiqueta vbox para contener otras etiquetas como hbox y botón, etc.
  6. : Aquí creamos un cuadro horizontal usando la etiqueta , "space-fill" y "space-expand" son opciones para expandir el hbox a través de la ventana.
  7. : crea un nuevo botón.
  8. : Este es el texto predeterminado para el botón, cerramos la etiqueta usando , por supuesto es muy importante cerrar todas las etiquetas que usamos.
  9. : Esto sucede cuando se hace clic en el botón. Puede ejecutar un comando de shell si lo desea o ejecutar cualquier otro archivo si lo desea. También hay muchas otras acciones y señales, no lo haga. No olvides cerrarlo usando .
  10. : Para cerrar la etiqueta del botón.
  11. : Para cerrar la etiqueta hbox.
  12. : Para cerrar la etiqueta de la ventana.

Las últimas 4 líneas también deben estar en todos los scripts de shell que cree usando gtkdialog, ejecutan la variable MAIN_DIALOG usando el comando gtkdialog con la opción –center para centrar la ventana, de hecho, muy útil.

Mi segundo programa

De manera similar, cree otro archivo y llámelo como 'segundo programa' y agréguele el siguiente contenido completo.

#!/bin/bash 

GTKDIALOG=gtkdialog 
export MAIN_DIALOG=' 

<window title="My Second Program" icon-name="gtk-about" resizable="true" width-request="250" height-request="150"> 

<vbox> 
	<hbox space-fill="true"> 
		<combobox>	 
			<variable>myitem</variable> 
			<item>First One</item> 
			<item>Second One</item> 
			<item>Third One</item> 
		</combobox> 
	</hbox> 
	<hbox> 
		<button> 
			<label>Click Me</label> 
			<action>echo "You choosed $myitem"</action> 
		</button> 
	</hbox> 
<hseparator width-request="240"></hseparator> 

	<hbox> 
		<button ok></button> 
	</hbox> 
</vbox> 
</window> 
' 

case $1 in 
	-d | --dump) echo "$MAIN_DIALOG" ;; 
	*) $GTKDIALOG --program=MAIN_DIALOG --center ;; 

esac

Guarde el archivo, establezca el permiso de ejecución y ejecútelo como se muestra.

chmod 755 secondprogram
./secondprogram

Ahora, explicaremos el código brevemente.

  1. Creamos un widget de cuadro combinado usando , la etiqueta es el nombre predeterminado de la variable en la que se almacenará el elemento elegido, usamos esta variable para imprimir el elemento seleccionado más tarde usando echo.
  2. es un separador horizontal, puede establecer el ancho predeterminado usando la opción de solicitud de ancho.
  3. es un botón Aceptar que cerrará la ventana justo cuando hagas clic en él, es muy útil, por lo que no necesitamos crear un botón personalizado para hacer eso.
Mi tercer programa

Cree otro archivo llamado 'tercer programa' y agréguele todo el código.

#!/bin/bash 

GTKDIALOG=gtkdialog 
export MAIN_DIALOG=' 

<window title="My Second Program" icon-name="gtk-about" resizable="true" width-request="250" height-request="150"> 

<notebook tab-label="First | Second|"> 
<vbox> 
	<hbox space-fill="true"> 
		<combobox>	 
			<variable>myitem</variable> 
			<item>First One</item> 
			<item>Second One</item> 
			<item>Third One</item> 
		</combobox> 
	</hbox> 
	<hbox> 
		<button> 
			<label>Click Me</label> 
			<action>echo "You choosed $myitem"</action> 
		</button> 
	</hbox> 
<hseparator width-request="240"></hseparator> 

	<hbox> 
		<button ok></button> 
	</hbox> 
</vbox> 

<vbox> 

	<hbox space-fill="true"> 
		<text> 
		<label>Spinbutton </label> 
		</text> 
	</hbox> 

	<hbox space-fill="true" space-expand="true"> 
		<spinbutton range-min="0" range-max="100" range-value="4"> 
			<variable>myscale</variable> 
			<action>echo $myscale</action> 
		</spinbutton> 
	</hbox> 

	<hbox> 
		<button ok></button> 
	</hbox> 

</vbox> 
</notebook> 
</window> 
' 

case $1 in 
	-d | --dump) echo "$MAIN_DIALOG" ;; 
	*) $GTKDIALOG --program=MAIN_DIALOG --center ;; 

esac

Guarde el archivo, otorgue permiso de ejecución y ejecútelo como se muestra.

chmod 755 thirdprogram
./thirdprogram

Aquí, la explicación del código de manera más detallada.

  1. Creamos dos pestañas de cuaderno usando , la opción tab-label es donde puede crear pestañas, gtkdialog creará pestañas dependiendo de las etiquetas que ingrese, cada se define como una pestaña, por lo que la primera pestaña comienza con primer , la segunda pestaña comienza con el segundo .
  2. es un widget de texto, usamos la etiqueta
  3. La etiqueta creará un nuevo botón de giro, la opción de rango mínimo es el valor mínimo y el rango máximo es el valor máximo para el botón de giro, el valor de rango es el valor predeterminado para el giro. botón.
  4. Le dimos una variable "myscale" al .
  5. Imprimimos el valor seleccionado usando echo y la variable $myscale, la señal predeterminada para la acción aquí es "valor cambiado", lo que nos ayudó a hacerlo.

Esta fue solo una ventana de ejemplo, puede crear interfaces más complicadas usando gtkdialog si lo desea, puede explorar la documentación oficial en el sitio web de gtkdialog para ver todas las etiquetas de gtkdialog desde el enlace a continuación.

Documentación de GTKDialog

¿Ha utilizado gtkdialog para crear GUI para sus scripts de shell antes? ¿O ha utilizado alguna utilidad de este tipo para crear interfaces? ¿Qué piensa usted al respecto?