Usos pràctics de la caixa de dialog Zenity

Jo freqüento molt els fòrums del meu país ... i honestament, és rar trobar alguna cosa interessant. No obstant en un d'aquests fòrums, hi ha un usuari que ha fet dos posts interessants sobre Linux, i aquest és el primer (que desitjo compartir amb vostès):

Usos pràctics de la caixa de dialog Zenity

Zenity és un conjunt de caixes de diàlegs gràfiques que fan servir les llibreries gtk, amb aquest programa podrem introduir dades, seleccionar una llista de tasques, mostrar-nos la informació resultant d'un procés donat, permetre'ns fer una interrupció abans o durant un procés determinat, entre altres funcions.

Zenity consta d'al voltant de 13 caixes de diàleg gràfiques, vegem quines són aquestes i les seves possibles combinacions:

1- Per mostrar-nos un calendari i seleccionar una data desitjada (aquesta data es mostrés en format numèric una veus seleccionada):

zenity --calendar

2- Per introduir text (molt útil a l'hora de demanar-nos dades o el nom d'un arxiu)

zenity --entry

Combinémolas correctament perquè ens demani les dades a introduir

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

3- Per informar-nos que ha produït un error

zenity --error --text "Imposible continuar"

4- Per seleccionar un arxiu

zenity --file-selection $HOME

Agregant-li aquesta opció ens permet seleccionar diversos arxius:
--multiple

Amb aquesta seleccionés només les carpetes
--directory

Amb aquesta en veus de seleccionar estarem activant l'opció de guardar
--save

Amb aquesta evitarem que es sobreescrigui un arxiu existent:
--confirm-overwrite

5- Mostrar-nos una informació determinada

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

6- Mostrar-una llista d'opcions i seleccionar una o un grup d'aquestes:
zenity --list --column "nombre de columna" "opcion1" "opción2" "opción3" "opción4"

Ara que passa si volem tenir una llista d'accions per a determinats arxius, però volem que es mostri el nom de l'acció a realitzar. Per aconseguir això hem de fer servir aquestes dues opcions (-hide-column valor i * print-column valor) quedaria d'aquesta manera:

zenity --hide-column 2 --print-column 2 --list --column "nombre de columna" --column "columna oculta" "nombre1" "comando1" "nombre2" "comando2"

Si volem seleccionar més d'una acció a la veus hem d'afegir aquestes dues opcions
Text que separés la seqüència triada de l'altra (en aquest cas afegim aquesta »» que significa un espai
--separator=" "

I l'opció que ens permetrà seleccionar més d'una acció alhora
--multiple

7- Mostrar-nos una notificació a la barra de menús

zenity *notification *text "Texto deseado"

8- Mostrar-nos el progrés d'un procés donat:
zenity --progress --pulsate

9- Amb aquesta ens mostrés una pregunta i podrem triar si volem continuar o no amb el procés:

zenity --question --text "Desea Continuar"

10- Amb aquest podrem rebre el resultat d'una seqüència a la consola com el llistat d'una recerca d'arxius la consultes d'ajudes entre altres:

zenity --text-info zenity --help-all | zenity --text-info

11- Aquest ens pot informar que el procés ha estat interromput.

zenity --warning --text "El proceso ha fallado" ls /media/carpeta || zenity --warning --text "No existe el directorio"

12- Amb aquest podrem seleccionar un nombre donat mitjançant una barra de desplaçament:

zenity --scale

Agregant-li aquesta opció podrem delimitar el valor mínim:
--value 60 --min-value 60
(L'opció -value mai haurà de ser menor que la de * min-value)

Amb aquesta seleccionem el valor màxim
--max-value 100

13- Amb aquesta ens mostrarà una caixa de diàleg amb la qual podrem seleccionar un color desitjat prendre el color d'un altre costat amb l'anomenat degotador selector de color.
zenity --color-selection --show-palette

Després de veure quines són les caixes de diàlegs disponibles en aquest programa veiem alguns exemples pràctics amb aquests:

- Vegem com podem barrejar la caixa de diàleg d'introduir text
mitjançant 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"

- Veiem com combinar la caixa de diàleg número 12 d'escales numèriques:
(Aquest és un script simple per baixar-los la qualitat de les imatges jpg i així reduir el seu l'espai que ocupa en els nostres 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%" "$@"

- Vegem un altre exemple do farem servir la caixa de diàleg selector de color on li afegirem un marc de la color que seleccionem 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 "$@"

- Vegem un exemple amb la caixa de diàleg de missatges d'error:

#!/bin/bash

rm "$@" || zenity --error --text "Imposible de eliminar esto es una carpeta"

Com veuen si algú intenta esborrar una carpeta el procés retorna error de manera que la cadena contínua gràcies a aquests operadors ||.

- Vegem ara que podem fer amb la caixa de diàleg de nombre 6, seleccionant les accions que realitzarem sobre determinat arxiu:

#!/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 "$@"

Fixeu-vos que a la casella de comandaments ha un espai ja que no permet que el text comenci amb un guió, per tant el delimitador en aquest cas ha de ser nul -separator = »».

- Vegem un altre exemple amb la caixa de diàleg de progrés

#!/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

... I bé això és tot.

Espero poder portar-los més posts que resultin interessants.

Salutacions


13 comentaris, deixa el teu

Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.

  1.   Rots87 va dir

    jo per l'únic que feia servir el zenity era per que winetricks ho demana per funcionar bé (al menys en el meu fitxer) jejeje gràcies pel tip

  2.   ILAV <° Linux va dir

    Zenity serveix per a alguns altres truquets, com el de el cercador de Xfce 😀

  3.   Aaron Mendo va dir

    Gràcies, moltíssimes gràcies, que bé que parles de Gtk + jo també he fet servir zenity encara no ho entenc molt bé però després amb la informació que has donat i amb pràctica potser li trobi un ús pràctic.

    Salutacions.

  4.   Neo61 va dir

    escolta camagüeyano (tinc un teclat en francès que no em deixa trobar els dos pinticos de la u ... jejeje), em podries explicar bé perquè em serveix això? I si, tot això es fa per consola? seria bo si postearas algunes imatges de captures perquè es il·lustrin els exemples i així es veu millor al fet que et refereixes

    1.    KZKG ^ Gaara va dir

      En realitat aquest article no ho vaig escriure jo, sinó un usuari d'un fòrum nostre.
      Sí, tot això es fa per consola, i ... ¿per a què serveix? Bé, és molt simple: «coneixement».

    2.    manolox va dir

      Un exemple d'ús que es pot donar a zenity per a algú amb el teclat en francès.


      #! /bin/bash
      # Un cambiador de teclado

      ACTION=`zenity --width=0 --height=260 --list\
      --title "Selector de setxkbmap" --text "Elige tu teclado"\
      --column "Idioma"\
      "Español"\
      "Francés"\
      "Inglés"\
      "Gringo"\
      "Alemán"`

      if [ -n "${ACTION}" ]; then
      case $ACTION in
      Español)
      setxkbmap es && zenity --info --text "Teclado configurado correctamente a español" || zenity --info --text "Por alguna razón no fue posible cambiar el mapa de teclado."
      ;;
      Francés)
      setxkbmap fr && zenity --info --text "Dicho sea en francés: Teclado configurado correctamente a francés" || zenity --info --text "Por alguna razón no fue posible cambiar el mapa de teclado."
      ;;
      Inglés)
      setxkbmap gb && zenity --info --text "Dicho sea en inglés: Teclado configurado correctamente a inglés" || zenity --info --text "Por alguna razón no fue posible cambiar el mapa de teclado."
      ;;
      Gringo)
      setxkbmap us && zenity --info --text "Dicho sea en Gringo: Teclado configurado correctamente a Gringo" || zenity --info --text "Por alguna razón no fue posible cambiar el mapa de teclado."
      ;;
      Alemán)
      setxkbmap de && zenity --info --text "Dicho sea en alemán: Teclado configurado correctamente a alemán" || zenity --info --text "Por alguna razón no fue posible cambiar el mapa de teclado."
      ;;
      esac
      fi

      1.    manolox va dir

        Vaja, que pena. Copiant i enganxant directament no funciona perquè a l'convertir-se en comentari «irrespeta» els salts de línia disposats després de cada barra invertida «\».

        Perquè funcioni cal canviar les barres invertides seguides d'un salt de línia per un simple espai.
        No ho copipego altra vegada per no saturar els comentaris, però perquè quedi clar, des de la tercera línia fins a la vuitena, ambdues incloses, ha de quedar en una sola línia tal que així:

        ACTION = `zenity -width = 0 -height = 260 -list -title« Selector de setxkbmap »-text« Tria el teu teclat »-column« Llengua »« Espanyol »« Francès »« Anglès »« Gringo »« Alemany »`

        1.    Manuel de la Font va dir

          Si vols compartir codi en els comentaris pots guardar-lo al Enganxar i enganxar la URL en el teu comentari. 🙂

          1.    manolox va dir

            Excelente herramienta. No sabía que existía tal cosa en DesdeLinux.
            La propera vegada que un comentari requereixi codi el faré servir.
            Gràcies per la info. XD

  5.   Neo61 va dir

    AH ... i si veus que estic fent servir Linux és per que ús els dos, però m'interessa endinsar-me bé en Linux

  6.   Santiago va dir

    Molt bo l'article !! És super útil zenity.

    Jo el faig servir en un script de Thunar que redimensiona les imatges seleccionades, i amb una llista ofereixo les mides de les imatges estàndards.

    Salutacions!

  7.   Hyuuga_Neji va dir

    necessito que em diguin on trobar el Zenity aquest perquè ja busqui i no està en el repo que tinc .... que feliç sóc usant un repo que no descarregui jo mateix ... (Alerta: Mode Sarcàstic detectat en aquest comentari)

  8.   José Sales va dir

    a veure què et sembla aquest?
    #! / Bin / bash
    cançó = $ (zenity -width = 360 -height = 320 -title «Llançador» -file-selection -directory $ HOME)
    find «$ cançó» -name * .mp3 | sort -random-sort | head -n 100 | xargs -d '\ n' mpg123
    encara em falta millorar-una mica