Posted tagged ‘programación’

Zenity — Diálogos desde la Shell

septiembre 27, 2008

Zenity nos permitirá crear ventanas gráficas desde la línea de comandos, cosa bastante útil o por lo menos atractiva a la hora de crearnos nuestros propios scripts.

Por ejemplo, el siguiente comando:

zenity --info --text="Esta es una pantalla de información"

Sacaría la siguiente pantalla:

Guapo ¿verdad?, sobre todo teniendo en cuenta que esto ha sido generado con tan solo una línea. Zenity nos permite crear distintos tipos de dialogos y para cada uno de ellas tenemos distintos tipos de parámetros.

Parámetros globales

Estos parámetros se pueden establecer a cualquier tipo de ventana.

  • title: Título del diálogo
  • window-icon: Icono del diálogo
  • width: Ancho del diálogo
  • heigth: Alto de la ventana

Dialogos y parámetros específicos

  • Calendar: Muestra un calendario
    • text: Texto del dialogo
    • day: Día
    • month: Mes
    • year: Año
    • date-format: Formato para la fecha devuelta
    zenity --calendar --title="Calendario"
    --window-icon="/usr/share/pixmaps/apple-red.png"
    --text="Esto es un diálogo de un calendario"
    --day=17 --month=9 --year=2008

    En caso de aceptar, el comando anterior nos devolvería: 17/09/08 que es el patrón (date-format) por defecto. Si por el contrario se cancela, no se devolvería nada.

  • Entry: Ventana de entrada de texto, ideal cuando se realizan preguntas al usuario.
    • text: Etiqueta de texto a mostrar.
    • entry-text: Valor introducido por defecto en la caja de texto.
    • hide-text: Si el texto a introducir por el usuario se quiere ocultar como si se tratase de una password.
    zenity --entry --title="Entrada de texto"
    --window-icon="/usr/share/pixmaps/apple-red.png"
    --text="¿Cual es tu nombre?" --entry-text="Nombre por defecto"

    De la misma forma esto nos devolverá el texto introducido si se pulsa en aceptar y nada si se hace sobre cancelar.

  • File Selection: Típica ventana de selección de archivo.
    • filename: Establece el nombre del archivo
    • multiple: Permite la selección multiple de archivos o directorio en el dialogo
    • directory: Activa la selección única de directorio
    • save: Activa el modo de guardar
    • separator: Especifica el caracter separador cuando se devulven varios archivos
    • confirm-overwrite: Confirma la selección del archivo si este ya existe.
  • Error Info y Warning: Ventana de error, información o advertencia.
    • text: Texto
    • no-wrap: Invalida la selección de texto.
    zenity --error --title="Error" --text="Error inesperado"
  • List: Una lista o tabla.
    • text: Texto del dialogo
    • column: Nombre de la columna
    • checklist: Hace que la primera columna sea de checklists
    • radiolist: Hace que la primera columna sea de radiobuttons
    • separator: Establece el separador de los campos cuando son devueltos.
    • multiple: Permite la selección multiple de opciones.
    • editable: Permite editar las opciones
    • print-column: Establece la columna a devolver. P.e: “1”, “2” , “ALL”.
    • hide-column: Número de la  columna a ocultar.
    zenity --list --title="Seleccione la opción" --radiolist --column=""
    --column="Opción" --column="ID" "" "Opción 1" "1" "" "Opción 2" "2"
    --print-column="3" --hide-column="3"

    Este ejemplo devuelve el ID de la columna o nada si se pulsa en cancelar.

  • Notification: Icono de notificación.
    • text: Texto de la notificación.
    • listen: A la escucha de comandos en stdin.
  • Progress: Ventana de progreso.
    • text: Texto a mostrar en el dialogo
    • percentage: Porcentaje inicial
    • auto-close: Cerrar al terminar
    • auto-kill: Matar al proceso padre si se cierra el dialogo
    • pulsate: Pues eso que “pulsa” la barra de progreso

    Normalmente este dialogo se utiliza pasandole por pipelines otro comando que es el que realiza la acción. Por ejemplo:

    cp -rv /home/usuario1/* /home/usuario2/ | zenity --progress --text="Copiando la HOME"
    --auto-close --auto-kill --pulsate
  • Question: Ventana de pregunta si/n.
    • text: Texto
    • no-wrap: Invalida la selección de texto.
    zenity --question --text="¿Quieres jugar a un juego?"

    En este caso, si el usuario presiona Si la variable del sistema $? pasará a valer 0 mientras que si presiona en No pasará a valer 1.

  • Text Info: Ventana de informacion de texto
    • filename: Archivo de texto que se cargará en el dialogo
    • editable: Permite la modificación del texto.

Hay muchos mas ejemplos en las páginas del manual de zenity, pero para sacarle el máximo rendimiento a este comando os sugiero que os leáis el manual oficial, en el cual además de profundizar más en los temas aquí tratados dan trucos y consejos sobre la utilización de las distintas ventanas.

Anuncios