Diálogos para scripts

Si bien soy un enamorado del terminal, y en particular de los scripts, lo cierto es que ni una cosa, ni la otra están hechas para todo el mundo. Por supuesto, mi recomendación, como no podía ser de otra forma, es que te embarques en esa aventura, y te introduzcas en el mundo del scripting, para lo que tienes el tutorial de Scripts en Bash, y del terminal, para lo que tienes también el tutorial sobre el terminal. Sin embargo, aunque tu también seas un apasionado de esto, es posible, que en algún momento surja el caso de que quieras que el script lo utilice alguien que no quiere recurrir ni a una cosa ni la otra. ¿Que hacer entonces? diálogos para scripts.

¿A que me refiero con esto de cuadros de diálogo?. Pues esto es precisamente de lo que trata el tutorial que llevo entre manos. Se trata de un tutorial sencillo y sobre todo muy práctico, donde encontrar diferentes opciones para trabajar con un script y mostrar al usuario unos sencillos cuadros de diálogo para que no tenga que recurrir al terminal.

Interfaces y cuadros de diálogos para scripts

Diálogos para scripts

La razón de este tutorial

Hace unos días, leyendo en Twitter a Juan Febles, contaba que estaba trabajando en un script para automatizar algunas tareas sencillas de creación de audios en formato mp3 y ogg. La cuestión, es que para esto requería, pasar parámetros al script… Fue justo en ese momento cuando se me encendió la bombillita

Dos motivos para introducirte en los cuadros de diálogo

¿A que se debió esa iluminación? te estarás preguntando. Aquí puedo encontrar al menos tres tipos de usuario. Un usuario avanzado o no tan avanzado, que ya trabaja desde hace tiempo con los scripts en Bash, o con otros lenguajes, pero que necesita un cuadro de diálogo para introducir los parámetros a su script. Las razones para esto… pueden ser muchas o diversas, desde que lo que necesita es pasar el script a alguien que no trabaja con el terminal, y que no quiere trabajar, hasta el caso de que es él el que no quiere lidiar con el terminal para este script.

El segundo tipo es alguien que no tiene conocimientos de script, pero que está ávido de aprender. Que ha visto el potencial del scripting y quiere automatizar determinados procesos, pero sin la necesidad de recurrir al terminal en cada momento para hacer este proceso.

El tercer tipo de usuario, es alguien que quiere acometer una tarea, pero no tiene ningún conocimiento de scripts. Pero, no solo eso, sino que además, no tiene interés en acercarse al terminal ni con un palo. Sin embargo, tu le ayudas creando ese script, y necesitas una interfaz para que pueda utilizarlo.

Estos, son tres ejemplos de usuarios, pero seguro que a ti se te ocurren una docena mas de usuarios con esta necesidad de recurrir a cuadros de diálogo para introducir la información, sin necesidad ni de crear una aplicación compleja, ni de recurrir directamente al terminal.

Algunos ejemplos de cuadros de diálogo

Un ejemplo mas o menos complejo de cuadro de diálogo es la aplicación es Y PPA Manager.

Esta aplicación fue implementada por Andrew del popular sitio WebUpd8 utilizando YAD, una de las soluciones que comentaré en este tutorial.

Utilizando, por ejemplo, YAD puedes construir diferentes cuadros de diálogo. Uno clásico sería mostrar un cuadro de diálogo preguntando el nombre y apellido al usuario. Esto es tan sencillo como incluir en tu script,

respuesta=$(yad --form --center --field="Nombre" --field="Apellido")

Esto te mostrará un cuadro de diálogo como el que puedes ver a continuación,

Un cuadro de diálogo de ejemplo

Esto te devolverá el resultado separado por |. El siguiente paso sería extraer y asignar cada elemento. Esto lo puedes hacer como te muestro a continuación,

IFS='|' read -r -a array <<< "$respuesta"
nombre="${array[0]}"
apellido="${array[1]}"
echo "El nombre es: ${nombre}"
echo "El apellido es: ${apellido}"

Como ves mostrar este cuadro de diálogo es algo tremendamente sencillo, y permite crear una sencilla interfaz de usuario para tu script de una manera mas o menos sencilla. Sin embargo, no es oro todo lo que reluce, en tanto en cuanto, se complica el control de los valores de entrada. ¿A que me refiero?

¿Que sucede si el usuario no introduce su nombre o apellido? Este caso lo tendrás que tratar para que tu script funcione correctamente. Es posible que tengas que mostrar un segundo cuadro de diálogo para asegurarte que el usuario introduce los datos de forma correcta, y volver a mostrar el primero o utilizar otras técnicas. Sin embargo, no quiero adelantar acontecimientos, ya lo verás mas adelante, cuando lleguemos a esta herramienta.

Contenido del tutorial

Así, el objetivo de este tutorial, es el de complementar el tutorial de scripts en Bash, con el objetivo de permitirte crear sencillas, y no tan sencillas, scripts en Bash. Y ¿para que puedes querer crear diálogos para scripts en Bash? Las razones ya las has podido ver a lo largo de este capítulo de introducción, pero, por resumir, básicamente se trata de crear interfaces para facilitar el uso de tus scripts o de los scripts creados por otros. Así, ya seas tu u otra persona, podrá ejecutar ese script, sin tener que recurrir al terminal.

Esto en determinados casos es fundamental, dado que de otra manera no utilizarán tu script, porque no se acostumbran al terminal, porque no les gusta, o porque simplemente no quieren hacerlo.

Una interfaz de usuario, mas o menos sencilla, es suficiente, para que otra persona se encuentre cómoda ejecutando tus scripts.

Pero no solo esto, también puedes utilizar estas sencillas interfaces para levantar una notificación cuando tu proceso ha terminado. Así, por ejemplo, si estás convirtiendo un archivo de audio a mp3 o a ogg, no tienes porque esperar a que termine. Simplemente, cuando haya concluido el proceso te mostrará esa notificación.

Así, en este tutorial, te mostraré diferentes opciones, mas o menos sencillas o complejas para crear esos diálogos para scripts.


Imagen de portada de Med Badr Chemmaoui en Unsplash

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *