A Linux Ubuntu hom pot trobar eines com el programa Dialog que permet crear elements de interfície gràfica com caixes de text, llistes, botons de sel·lecció... en mode de text. Dialog es feia servir, per exemple, en els instal·ladors de moltes distribucions.
Una opció alternativa és fer servir Zenity. Zenity és la re-escriptura de GDialog, que al seu torn era la versió GNOME de Dialog. Zenity proporciona una forma senzilla de crear interfícies gràfiques per a scripts.
Zenity es pot instal·lar des del Centre de Programari de l'Ubuntu, si cal.
Anem a fer alguns experiments amb aquesta eina. Primer de tot cal conéixer la versió que tenim instal·lada i les opcions.
La versió s'obté amb zenity --version. En el meu cas és la 2.30.
Les diferents opcions s'obtenen amb: zenity --help-all a la línia d'ordres i el resultat és:
Forma d'ús:
zenity [OPCIÓ...]
Opcions d'ajuda:
-h, --help Mostra les opcions d'ajuda
--help-all Mostra totes les opcions d'ajuda
--help-general Mostra les opcions generals
--help-calendar Mostra les opcions del calendari
--help-entry Mostra les opcions de l'entrada de text
--help-error Mostra les opcions d'error
--help-info Mostra les opcions d'informació
--help-file-selection Mostra les opcions del selector de fitxers
--help-list Mostra les opcions de llistes
--help-notification Mostra les opcions de la icona de notificació
--help-progress Mostra les opcions del progrés
--help-question Mostra les opcions de preguntes
--help-warning Mostra les opcions d'avisos
--help-scale Mostra les opcions de l'escala
--help-text-info Mostra les opcions de text informatiu
--help-misc Mostra les opcions miscel·lànies
--help-gtk Mostra les opcions del GTK+
General options
--title=TÍTOL Estableix el títol del diàleg
--window-icon=CAMÍ D'ICONA Estableix la icona de la finestra
--width=AMPLADA Estableix l'amplada
--height=ALÇADA Estableix l'alçada
--timeout=TEMPS D'ESPERA Estableix el temps d'espera del diàleg (en segons)
Calendar options
--text=TEXT Estableix el text del diàleg
--day=DIA Estableix el dia del calendari
--month=MES Estableix el mes del calendari
--year=ANY Estableix l'any del calendari
--date-format=PATRÓ Estableix el format de la data de tornada
Text entry options
--text=TEXT Estableix el text del diàleg
--entry-text=TEXT Estableix el text de l'entrada
--hide-text Amaga el text de l'entrada
Error options
--text=TEXT Estableix el text del diàleg
--no-wrap No habilites l'ajustament del text
Info options
--text=TEXT Estableix el text del diàleg
--no-wrap No habilites l'ajustament del text
File selection options
--filename=NOM DE FITXER Estableix el nom del fitxer
--multiple Permet la selecció de múltiples fitxers
--directory Activa la selecció de només directoris
--save Activa el mode d'estalvi
--separator=SEPARADOR Estableix el caràcter de separació de la sortida
--confirm-overwrite Confirmeu la selecció del fitxer si el nom del fitxer ja existeix
--file-filter=PATRÓ 1 PATRÓ 2 ... Estableix un filtre per al nom de fitxer
List options
--text=TEXT Estableix el text del diàleg
--column=COLUMNA Estableix la capçalera de la columna
--checklist Utilitza quadres de verificació per a la primera columna
--radiolist Utilitza botons de grup per a la primera columna
--separator=SEPARADOR Estableix el caràcter de separació de la sortida
--multiple Permet la selecció de múltiples files
--editable Permet canvis al text
--print-column=NOMBRE Imprimeix una columna específica (el valor per defecte és 1. Es pot usar 'ALL' per a imprimir totes les columnes)
--hide-column=NOMBRE Amaga una columna específica
--hide-header Oculta les capçaleres de la columna
Notification icon options
--text=TEXT Estableix el text de la notificació
--listen Espera ordres de l'entrada estàndard
Progress options
--text=TEXT Estableix el text del diàleg
--percentage=PERCENTATGE Estableix el percentatge inicial
--pulsate Barra de progrés parpellejant
--auto-close Tanca el diàleg quan s'arribi al 100%
--auto-kill Mata el procés para si es prem el botó de cancel·lar
Question options
--text=TEXT Estableix el text del diàleg
--ok-label=TEXT Estableix l'etiqueta del botó D'acord
--cancel-label=TEXT Estableix l'etiqueta del botó Cancel·la
--no-wrap No habilites l'ajustament del text
Warning options
--text=TEXT Estableix el text del diàleg
--no-wrap No habilites l'ajustament del text
Scale options
--text=TEXT Estableix el text del diàleg
--value=VALOR Estableix un valor inicial
--min-value=VALOR Estableix el valor mínim
--max-value=VALOR Estableix el valor màxim
--step=VALOR Estableix el valor dels augments
--print-partial Imprimeix valors parcials
--hide-value Amaga el valor
Text information options
--filename=NOM DE FITXER Obre un fitxer
--editable Permet canvis al text
Miscellaneous options
--about Quant a zenity
--version Imprimeix la versió
Opcions del GTK+
--class=CLASS Program class as used by the window manager
--name=NAME Program name as used by the window manager
--screen=SCREEN X screen to use
--sync Make X calls synchronous
--gtk-module=MODULES Load additional GTK+ modules
--g-fatal-warnings Make all warnings fatal
Opcions de l'aplicació:
--calendar Mostra el diàleg de calendari
--entry Mostra el diàleg d'entrada de text
--error Mostra el diàleg d'error
--info Mostra el diàleg d'informació
--file-selection Mostra el diàleg de selecció de fitxers
--list Mostra el diàleg de llista
--notification Mostra una notificació
--progress Mostra el diàleg d'indicació de progrés
--question Mostra el diàleg de pregunta
--warning Mostra el diàleg d'avís
--scale Mostra el diàleg d'escala
--text-info Mostra el diàleg de text informatiu
--display=DISPLAY X display to use
Anem a provar-los un per un:
Mostrar el diàleg de calendari:
zenity --calendar
Mostrar una caixa d'entrada de text
zenity --entry --text="Entra un text de prova"
El següent script mostra com obtenir el text introduït
#!/bin/bash
textPregunta="Text de la pregunta"
textPredet="Text predeterminat a l'entrada"
textTitol="Títol de la finestra"
resp=$(/usr/bin/zenity --entry --text="$textPregunta" --entry-text="$textPredet" --title="$textTitol" --width=400 --height=200)
echo "la meva resposta ha estat: $resp"
Mostrar una finestra de missatge d'error
zenity --error --text="Descripció de l'error"
Mostrar el diàleg de sel·lecció de fitxers
zenity --file-selection
Mostrar una finestra amb un text informatiu
zenity --info --text="Aquest és el text informatiu"
Mostrar una llista de sel·lecció
zenity --list --text="Llista de prova" \
--column="ID" --column="Nom" --column="Valor" \
"1" "nom1" "valor1" \
"2" "nom2" "valor2" \
"3" "nom3" "valor3" \
"4" "nom4" "valor4"
Mostrar una icona de notificació al quadre del Gnome
zenity --notification --text="Text de la notificació"
Mostrar una barra de progrés. El truc per a que funcioni és el tub (pipe) que alimenta la progressió de la barra.
(
for i in {1..100}
do
echo $i
done
) | zenity --progress --text="Exemple de barra de progrés" --auto-close --percentage=0
for i in {1..100}
do
echo $i
done
) | zenity --progress --text="Exemple de barra de progrés" --auto-close --percentage=0
Demanar a l'usuari si sí o si no a una pregunta.
if zenity --question --text="Vols continuar?" --ok-label="Sí, està molt interessant" --cancel-label="No, m'avorreixo com una ostra"
then
zenity --info --text="Ok, doncs seguim."
else
zenity --error --text="Cap problema, un altre dia serà."
fi
then
zenity --info --text="Ok, doncs seguim."
else
zenity --error --text="Cap problema, un altre dia serà."
fi
Mostrar un fitxer de text
zenity --text-info --filename="help.txt" --height=400 --width=500
Mostrar un text d'alerta. Adonem-nos que zenity ens proporciona caixes de notificació específiques de info, warning i error, que són els tres nivells que es fan servir més habitualment per a classificar per importància o gravetat els missatges de les aplicacions.
zenity --warning --text="Aquest és un text d'alerta"
Finalment, obtenir un valor numèric dins un rang
zenity --scale --text="Quants anys tens?" --min-value=0 --max-value=150
Cap comentari:
Publica un comentari a l'entrada