Yo frecuento mucho los foros de mi país… y honestamente, es raro encontrar algo interesante. No obstante en uno de esos foros, hay un usuario que ha hecho dos posts interesantes sobre Linux, y este es el primero (que deseo compartir con ustedes):
Usos prácticos de la caja de dialog Zenity
Zenity es un conjunto de cajas de diálogos gráficas que usan las librerías gtk, con este programa podremos introducir datos, seleccionar una lista de tareas, mostrarnos la información resultante de un proceso dado, permitirnos hacer una interrupción antes o durante un proceso determinado, entre otras funciones.
Zenity consta de alrededor de 13 cajas de dialogo gráficas, veamos cuales son estas y sus posibles combinaciones:
1- Para mostrarnos un calendario y seleccionar una fecha deseada (dicha fecha se mostrara en formato numérico una ves seleccionada):
zenity --calendar
2- Para introducir texto (muy útil a la hora de pedirnos datos o el nombre de un archivo)
zenity --entry
Combinémolas correctamente para que nos pida los datos a introducir
zenity --entry --text "Escriba el nombre del archivo"
3- Para informarnos que ha ocurrido un error
zenity --error --text "Imposible continuar"
4- Para seleccionar un archivo
zenity --file-selection $HOME
Agregándole esta opción nos permite seleccionar varios archivos:
--multiple
Con esta seleccionara solo las carpetas
--directory
Con esta en ves de seleccionar estaremos activando la opción de guardar
--save
Con esta evitaremos que se sobrescriba un archivo existente:
--confirm-overwrite
5- Mostrarnos una información determinada
zenity --info *text "Información a mostrar"
6- Mostrarnos una lista de opciones y seleccionar una o un grupo de estas:
zenity --list --column "nombre de columna" "opcion1" "opción2" "opción3" "opción4"
Ahora que pasa si queremos tener una lista de acciones para determinados archivos, pero queremos que se muestre el nombre de la acción a realizar. Para lograr esto tenemos que usar estas dos opciones (–hide-column valor y *print-column valor) quedaría de esta forma:
zenity --hide-column 2 --print-column 2 --list --column "nombre de columna" --column "columna oculta" "nombre1" "comando1" "nombre2" "comando2"
Si queremos seleccionar más de una acción a la ves debemos agregar estas dos opciones
Texto que separara la secuencia elegida de la otra (en este caso agregamos esta » » que significa un espacio
--separator=" "
Y la opción que nos permitirá seleccionar más de una acción a la vez
--multiple
7- Mostrarnos una notificación en la barra de menús
zenity *notification *text "Texto deseado"
8- Mostrarnos el progreso de un proceso dado:
zenity --progress --pulsate
9- Con esta nos mostrara una pregunta y podremos elegir si queremos continuar o no con el proceso:
zenity --question --text "Desea Continuar"
10- Con este podremos recibir el resultado de una secuencia en la consola como el listado de una búsqueda de archivos la consultas de ayudas entre otras:
zenity --text-info zenity --help-all | zenity --text-info
11- Este nos puede informar de que el proceso ha sido interrumpido.
zenity --warning --text "El proceso ha fallado" ls /media/carpeta || zenity --warning --text "No existe el directorio"
12- Con este podremos seleccionar un número dado mediante una barra deslizadora:
zenity --scale
Agregándole esta opción podremos delimitar el valor mínimo:
--value 60 --min-value 60
(la opción –value nunca deberá ser menor que la de *min-value)
Con esta seleccionamos el valor máximo
--max-value 100
13- Con esta nos mostrara una caja de dialogo con la que podremos seleccionar un color deseado tomar el color de otro lado con el llamado gotero selector de color.
zenity --color-selection --show-palette
Después de ver cuales son las cajas de diálogos disponibles en este programa veamos algunos ejemplos prácticos con estos:
– Veamos como podemos mezclar la caja de dialogo de introducir texto
mediante un script:
#!/bin/bash
#Darle a una palabra una secuencia de comandos.
archivo="`zenity --entry --text "Escriba el nombre del archivo"`"
#comando para renombrar
mv "$@" "`dirname "$@"`"/"$archivo"
– Vemos como combinar la caja de dialogo número 12 de escalas numéricas:
(Este es un script simple para bajarles la calidad de las imágenes jpg y así reducir su el espacio que ocupa en nuestros discos )
#!/bin/bash
#Darle a una palabra una secuencia de comandos.
foto="`zenity --scale --value 80 --min-value 60 --max-value 100`"
#comando para comprimir la imagen
mogrify -compress jpeg -quality "$foto%" "$@"
– Veamos otro ejemplo don usaremos la caja de dialogo selector de color donde le agregaremos un marco del color que seleccionemos a una foto:
#!/bin/bash
#Darle a una palabra una secuencia de comandos.
foto="`zenity --color-selection --show-palette`" marco="`zenity --entry --text "Seleccione el rango deseado 6x6"`"
#comando para agregarle el marco
mogrify -border $marco -bordercolor $foto "$@"
– Veamos un ejemplo con la caja de dialogo de mensajes de error:
#!/bin/bash
rm "$@" || zenity --error --text "Imposible de eliminar esto es una carpeta"
Como ven si alguien intenta borrar una carpeta el proceso devuelve error por lo que la cadena continua gracias a estos operadores ||.
– Veamos ahora que podemos hacer con la caja de dialogo de número 6, seleccionando las acciones que realizaremos sobre determinado archivo:
#!/bin/bash
actions="`zenity --multiple --separator="" --hide-column 2 --print-column 2 --list --column "nombre de columna" --column "columna oculta" "comprimir un 80%" " -compress jpeg -quality 80%" "Cambiar tamaño a 800x600" " -resize 800x600"`"
#Comando
mogrify$actions "$@"
Fíjense que en la casilla de comandos existe un espacio ya que no permite que el texto empiece con un guión, por lo tanto el delimitador en este caso tiene que ser nulo –separator=»».
– Veamos otro ejemplo con la caja de dialogo de progreso
#!/bin/bash
#Script para eliminar
zenity --question --text "Desea borrara las imágenes dentro de esta carpeta `basename "$@"`" && find "$@" -name *.jpg -delete | zenity --list --progress * pulsate
… Y bueno esto es todo.
Espero poder traerles más posts que resulten interesantes.
Saludos