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

zenity_calendar2- Para introducir texto (muy útil a la hora de pedirnos datos o el nombre de un archivo)

zenity --entry

zenity_entry

Combinándola correctamente para que nos pida los datos a introducir

zenity --entry --text "Escriba el nombre del archivo"

zenity_entry_text3- Para informarnos que ha ocurrido un error

zenity --error --text "Imposible continuar"

zenity_error_text4- Para seleccionar un archivo

zenity --file-selection $HOME

zenity_filterAgregándole esta opción nos permite seleccionar varios archivos:
--multiple

zenity_multipleCon esta seleccionara solo las carpetas
--directory

zenity_directoryCon esta en vez de seleccionar estaremos activando la opción de guardar
--save

zenity_saveCon esta evitaremos que se sobrescriba un archivo existente:
--confirm-overwrite

5- Mostrarnos una información determinada

zenity --info *text "Información a mostrar"

zenity_info6- 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"

zenity_listAhora 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"

zenity_hideSi queremos seleccionar más de una acción a la vez 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

zenity_opcion_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

zenity_progress2 zenity_progress1

 

 

 

 

9- Con esta nos mostrara una pregunta y podremos elegir si queremos continuar o no con el proceso:

zenity --question --text "Desea Continuar"

zenity_question10- 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

zenity_info_text11- 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"

zenity_warning

12- Con este podremos seleccionar un número dado mediante una barra deslizante:

zenity --scale

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)

zenity_scale2

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

zenity_colorDespué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.

 

Anuncios
Esta entrada fue publicada en Consola bash, Utilidad. Guarda el enlace permanente.