Zenity (I): Interfaz gráfica en bash – Ejemplo de diálogo de selección de fichero

Zenity nos permite añadir diálogos gráficos a nuestros scripts bash. Tienen diversos tipos de diálogos: mensajes de mensajes (de error, información o alerta), diálogos para selección de fichero, para entrada de texto, etc.

Viene instalada por defecto en algunas distribuciones de Linux (imagino que será en las basadas en Gnome), por ahora lo he comprobado en Ubuntu 12.04 y Linux Mint Mate.

Aquí os dejo un ejemplo del uso de diálogos de selección. Este script permite al usuario elegir una serie de ficheros que serán añadidos a un fichero comprimido:

Notas

  • La opción –multiple permite al usuario seleccionar varios archivos. Si no la ponemos el usuario sólo podrá escoger un único fichero.
  • La opción –save se usa para poner el diálogo en “modo grabar”. Esto permitirá crear el fichero si no existe.
  • Si el usuario selecciona varios ficheros en el primer diálogo éste nos va a devolver una cadena con la lista de archivos seleccionados separados por un ‘|’. Debemos cambiar este símbolo por espacios. Esto lo hacemos con archivos=${archivos//|/ }

Probar el script

Para probar este ejemplo guardar el código anterior en un fichero llamado, por ejemplo, prueba_zenity.

Después tenemos que convertir el script en ejecutable. Para eso abre una consola y teclea:

y ya podemos usarlo:

2 thoughts on “Zenity (I): Interfaz gráfica en bash – Ejemplo de diálogo de selección de fichero

  1. Hola muy buenas , mira estoy intentando lo siguiente, hacer un Menu , elegir una opcion y que se ejecuten comandos , mostrandome los resultados con zenity

    #!/bin/bash
    Titulo=”Ejemplo De Seleccion”
    Pregunta=”Selecciona una opcion:”
    Opciones=(“A” “B” “C”)

    echo “$Titulo”
    PS3=”$Pregunta ”

    while opt=”$(zenity –title=”$Titulo” –text=”$Pregunta” –list –column=”Opciones” “${Opciones[@]}”)”; do

    case $opt in
    0)
    echo “Has elegido $opt, Opcion 1″
    zenity –info –text=”Has elegido $opt, Opcion 1”
    ;;
    1)
    echo “Has elegido $opt, Opcion 2″
    zenity –info –text=”Has elegido $opt, Opcion 2”
    ;;

    2)
    echo “Has elegido $opt, Opcion 3″
    zenity –info –text=”Has elegido $opt, Opcion 3″
    ;;
    -1) zenity –error –text=”Opcion Incorrecta , Intenta con otra.” ;;
    esac

    done

    Ahora la cuestion es que eligo A B C pero no me muestra nada luego con el Zenity –info –text=”Texto”;; . parece que no hace nada , puedes decirme que esta mal en el codigo , por favor ???

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.