sábado, 9 de mayo de 2020

Cajas de diálogo, con gxmessage

Hace dos años me pasé la primera quincena de marzo peleándome con el ‘scripting’ y la herramienta Zenity, y me sirvió para aprender algunas cosas… que por cierto ya he olvidado, por falta de uso.
Pero como el hombre es el único animal que tropieza dos veces con la misma piedra, hoy me he interesado por otra herramienta, muy sencilla, que lleva toda la vida en los repositorios de Debian, que se llama ‘gxmessage’… y que sirve para crear cajas de diálogo. O sea, para ‘montarte’ una orden, en el caso sencillo, o un ‘script’ con varias opciones a elegir (mediante, por ejemplo, las órdenes condicionales if...then, case...esac, o las sentencias for…, while o until, con do-done) y crearte una ‘Caja de diálogo’ para hacerlo funcionar, normalmente a golpe de ratón.

El caso es que (aunque se me olvidará otra vez, de hecho por eso lo escribo aquí, para acordarme) voy poner un ejemplo de uso elemental de esta herramienta, gxmessage. O sea, ‘para novatos’ como yo mismo.

Desde luego, lo primero que hay que decir es que es una herramienta que trabaja ‘por terminal’ así que hay que ‘programarle’ las órdenes. Su instalación es muy simple, y como apenas ocupa unos cuantos kB, no molesta nada tenerla, con un simple
sudo aptitude install gxmessage
Una vez instalada, si abrimos una consola y escribimos (vamos… con un copia y pega), como ejemplo elemental… 
gxmessage -center 'Me encanta Debian, es una de las mejores distros que conozco' \
-buttons "Este es un boton":1,"Este es otro boton":2,"Cerrar diálogo":3 \
-title "Esto es una caja de dialogo"
… y damos al ENTER, podemos ver el resultado.
NOTA: el manual en consola, con ‘man gxmessage’ y, más claro, con ‘gxmessage -help’ da algunas posibilidades, explica las órdenes básicas, como -center, -buttons, -title, -geometry (aunque, si no se dice nada, el tamaño (geometry) de la caja se ajusta automáticamente al texto) 

Bien, pues voy a poner un ejemplo. Que, como va a ser relativamente complejo, el procedimiento que yo hago es muy sencillo:
a) con el editor de textos Gedit (o el que sea) creo un script en Bash, le pongo un nombre y lo guardo en la ruta en la que, por defecto, se abre la consola).
b) creo un lanzador en el Escritorio (sobre el escritorio, Botón derecho ratón, ‘crear un lanzador nuevo aquí…’) y, en la caja de diálogo que sale, le pongo un bonito icono, marco que se ejecute en Terminal, y como orden, pongo la de ejecución del script. O sea...
sh nombre_script

Así que vamos a ello. Creo este script (que llamaré script_cajadialogo1).. 
#!/bin/bash
gxmessage 'Elige una de estas opciones...' -center -title '¿Qué quieres hacer ahora?' \
-geometry '200x80' \
-buttons 'Oir música':1,'Ver Blog (en Firefox)':2,'Consultar mis How to...':3,'Escribir en Libreoffice':4,'Ninguna de estas':5 \

case $? in
1) nemo /home/doc/Música;;
2) firefox https://comoserdebianitaynomorirenelintento.blogspot.com/;;
3) evince /home/doc/Escritorio/'MIS ENLACES FAVORITOS'/'Enlace a 0-Resumen How to.pdf';;
4) libreoffice --writer;;
5) sh script_cajadialogo2;;
esac
(unos ‘matices’ para que funcione: a mi me resultó mejor poner comillas simples que dobles, la antibarra (\) es para indicar que ‘continúa la línea’ y fijarse que, entre los distintos ‘buttons’, no hay espacios y las comas indican ‘siguiente’, por eso el último botón no la lleva al final (si la llevase añadiría automáticamente otro botón). Las dobles ';;' indican cambio de orden.
Y ahora voy a hacer este otro (que llamaré script_cajadialogo2), para enlazarlos
#!/bin/bash
gxmessage 'Elige estas otras opciones' -center -title '¿Otras preferencias...?'   \
 -geometry '200x80' \
 -buttons "Oir podcast en VLC":1,"Ver Blogs sobre Linux":2,"buscar en mi Cajón de sastre":3,"Salir":4 
case $? in
1) vlc;;
2) firefox https://victorhck.gitlab.io/planetalibre/;;
3) nemo /home/doc/'1-Cajón de sastre';;
4) ;;
esac

Y, en conjunto, una vez creado el lanzador en el Escritorio, se ve una cosa así


que queda bastante aparente...

Total que esta chorradita me ha entretenido una tarde-noche, y lo apunto aquí para, como dije, acordarme de que existe y sobre todo, con el ejemplo, para acordarme de cómo (más o menos) se puede utilizar.

Luego (por si alguien lee esto), que cada uno lo use (o se busque la vida) a su manera, que yo de ‘scripting’… lo justo, o menos).

No hay comentarios:

Publicar un comentario