Zenity
Da Linuxpedia.
Zenity è un rimaneggiamento di gdialog, la versione Gnome di dialog che consente di visualizzare finestre di dialogo GTK+ da linea di comando e shell script. Zenity fa parte di Gnome e viene installato assieme a quest'ultimo. Potete ottenere l'ultima versione pacchettizzata in rpm da RPMForge oppure il pacchetto per Debian da uno dei suoi repository.
[modifica] Utilizzo di zenity
Zenity è uno strumento molto potente che ci consente di creare semplici interfacce grafiche per i nostri script, in modo da renderli il più semplici e usabili possibile. Ad esempio grazie a zenity posiamo far apparire calendari, finestre per la selezione di file, caselle di testo, finestre riportanti errori o avvisi e quant'altro. La sintassi più semplice di questo comando prevede la seguente sintassi:
zenity [opzioni]
Per esempio, zenity --question restituirà 0 o 1, a seconda che l'utente prema [OK] oppure [ANNULLA]. Quindi i valori di ritorno sono:
- 0: Se l'utente preme OK
- 1: Se l'utente preme ANNULLA
[modifica] Opzioni disponibili
Le opzioni disponibili sono:
- --calendar:Mostra una finestra di dialogo con il calendario
- --entry:Mostra una finestra di dialogo di inserimento testo
- --error:Mostra una finestra di dialogo di errore
- --info:Mostra una finestra di dialogo di informazioni
- --file-selection:Mostra una finestra di dialogo di selezione file
- --list:Mostra una finestra di dialogo con una lista
- --notification:Mostra un'icona nell'area di notifica
- --progress:Mostra una finestra di dialogo con l'indicazione dell'avanzamento
- --question:Mostra una finestra di dialogo di conferma
- --warning:Mostra una finestra di dialogo di avviso
- --scale:Mostra una finestra di dialogo con la scala
- --text-info:Mostra una finestra di dialogo di informazione
Per maggiori informazioni sull'utilizzo di zenity lanciate il comando:
zenity --help
oppure consultate la relativa man page, richiamabile digitando il comando
man zenity
[modifica] Opzioni disponibile per Calendar
- --textImposta il testo della finestra di dialogo
- --dayImposta il giorno del calendario
- --monthImposta il mese del calendario
- --yearImposta l'anno del calendario
- --date-formatImposta il formato della data restituita
Script bash di esempio:
#!/bin/bash zenity --calendar --text="Seleziona la Data" --day=13 --month=4 --year=1982
Questo script di esempio mostra una finestra di dialogo con il calendario dal titolo "Seleziona la Data" (impostato con l'opzione --text) e con la data impostata di default sul giorno 13/04/1982 (impostata tramite le opzioni --day --month e --year). Se non impostiamo manualmente la data come nell'esempio sopra riportato verrà visualizzata come data predefinita quella odierna. Ovviamente, visualizzare solamente un calendario è poca cosa, ci tornerà sicuramente più utile sapere quale data è stata selezionata dall'utente. Per fare questo possiamo utilizzare il seguente codice:
#!/bin/bash DATA_SELEZIONATA=`zenity --caledar --text="Seleziona la Data"` echo $DATA_SELEZIONATA
In questo modo all'interno della variabile DATA_SELEZIONATA avremo la data selezionata dall'utente. Grazie all'istruzione echo $DATA_SELEZIONATA visualizzeremo il valore di tale variabile.
[modifica] Opzioni disponibile per Entry
- --text Imposta il testo della finestra di dialogo
- --entry-text Imposta il testo della casella di inserimento
- --hide-text Nasconde il testo nella casella di inserimento visualizzando degli asterischi al posto del testo
Script bash di esempio:
#!/bin/bash zenity --entry --text="Inserisci Testo" --entry-text="Inserisci qui il testo"
Questo script di esempio mostra una finestra di dialogo di niserimento testo dal titolo "Inserisci Testo" (impostato con l'opzione --text). Se non impostiamo manualmente il testo da inserire all'interno della textbox come nell'esempio sopra riportato (con --text="Inserisci qui il testo") verrà visualizzata una textbox vuota. Per "catturare" il testo inserito dall'utente utilizziamo il seguente codice:
#!/bin/bash TESTO=`zenity --entry --text="Inserisci Password" --hide-text` echo $TESTO
In questo modo all'interno della variabile TESTO avremo la data selezionata dall'utente. Grazie all'istruzione echo $TESTO visualizzeremo il valore di tale variabile.
[modifica] Opzioni disponibile per error
- --text Imposta il testo della finestra di dialogo
- --no-wrap Non abilita il testo a capo
Script bash di esempio:
#!/bin/bash zenity --error --text="Messaggio del nostro errore!"
Questo script di esempio mostra una finestra di dialogo di errore che visualizzerà il messaggio "Messaggio del nostro errore!"
[modifica] Opzioni disponibile per info
- --text Imposta il testo della finestra di dialogo
- --no-wrap Non abilita il testo a capo
Script bash di esempio:
#!/bin/bash zenity --info --text="Messaggio Informativo!"
Questo script di esempio mostra una finestra di dialogo di informazione che visualizzerà il messaggio "Messaggio Informativo!"
[modifica] Opzioni disponibile per file-selection
- --filename=NOMEFILE Imposta il nome del file
- --multiple Permette di selezionare più di un file
- --directory Attivare la selezione delle sole directory
- --save Attivare il modo sicuro
- --separator=SEPARATORE Imposta il carattere separatore per l'output
Script bash di esempio:
#!/bin/bash zenity --file-selection --text="Seleziona il file"
Questo script di esempio mostra una finestra di dialogo di selezione file con titolo "Seleziona il file". Se vogliamo che l'utente anziché un file possa selezionare una directory utiliziamo l'opzione --directory in questo modo
#!/bin/bash zenity --file-selection --text="Seleziona la directory" --directory
Se vogliamo permettere all'utente di selezionare più file contemporaneamente possiamo utilizzare l'opzione --multiple.
#!/bin/bash zenity --file-selection --text="Seleziona i file" --multiple
Un esempio un'pò più complesso sull'utilizzo di zenity --file-selection potrebbe essere il seguente:
#!/bin/sh # Apre una finestra di dialogo di conferma zenity --question --text "Vuoi eseguire la copia di backup di un file?" # Se l'utente preme OK (viene tornato valore 0) entra all'interno dell'IF altrimente termina lo script if [ $? = 0 ]; then #Apre una finestra di dialogo di selezione file e torna il nome del file selezionato che sarà #posto all'interno della variabile FILE_ORIGINE FILE_ORIGINE=`zenity --file-selection` FILE_DESTINAZIONE=$FILE_ORIGINE".backup" cp $FILE_ORIGINE $FILE_DESTINAZIONE #Visualizza una finestra di dialogo di informazione visualizzando il path del file di origine e il #nome del file di backup zenity --info --text="E' stata creata una copia di "$FILE_ORIGINE" in "$FILE_DESTINAZIONE fi
[modifica] Opzioni disponibile per list
- --text Imposta il testo della finestra di dialogo
- --column Imposta il titolo della colonna
- --checklist Usa caselle di selezione per la prima colonna
- --radiolist Usa pulsanti radio per la prima colonna
- --separator=SEPARATORE Imposta il carattere separatore per l'output
- --multiple Permette di selezionare più di una riga
- --editable Consente la modifica del testo
- --print-column Stampa una colonna specificata (Il valore predefinito è 1. 'ALL' può essere usato per stampare tutte le colonne)
- --hide-column Nasconde una colonna specifica
Questa opzione ci consente di visualizzare una lista di voci che possono essere fondamentalmente di due tipologie:
- Radiolist
- Checklist
Se decidiamo di utilizzare una lista di tipo radiolist otteremo una lista dalla quale è possibile selezionare esclusivamente una sola delle voci presenti, mentre se decidiamo di utilizzare una lista di tipo checklist otteremo una lista dalla quale possiamo selezionare molteplici voci. La creazione della lista avviene specificando il numero di colonne ed il titolo delle varie colonne, seguito dai valori da inserire per ogni riga della lista.
Dovremo utilizzare il seguente codice:
#!/bin/bash zenity --list --checklist --column="Prima Colonna" --column="Seconda Colonna" false "Prima Riga" false "Seconda Riga"
Due commenti sul codice sopra riportato: zenity --list --checklist: ci server per specificare che vogliamo creare una lista di tipo checklist (possibilità di selezione multipla delle voci)
--column="Prima Colonna" --column="Seconda Colonna" ci server per specificare che la lista conterrà due colonne di nome Prima Colonna e Seconda Colonna
false "Prima Riga" serve a popolare la prima riga della lista settando a false il valore della prima colonna e a Prima riga il valore della seconda colonna. Discorso analogo per false "Seconda Riga". Quando selezioniamo una voce all'interno della lista ci verrà tornato il contenuto della colonna 1 (Prima Riga o Seconda Riga). Se selezioniamo entrambe le voci ci sarà tornato il seguente valore: Prima Riga|Seconda Riga ovvero tutti i valori selezionati separati tra loro dal carattere "|".
Per utilizzare gli stessi valori per costruire una lista di tipo radiolist utilizzeremo invece il seguente codice:
#!/bin/bash zenity --list --radiolist --column="Prima Colonna" --column="Seconda Colonna" false "Prima Riga" false "Seconda Riga"
Quando selezioniamo una voce all'interno della lista ci verrà tornato il contenuto della colonna 1 (Prima Riga o Seconda Riga)
Un esempio pratico:
#!/bin/sh PRODOTTO=`zenity --title "Questa una lista creata con Zenity" --text "Selezionare il prodotto più venduto" --list --radiolist --column="Seleziona" --column="Prodotto" False "Prodotto1" False "Prodotto2" False "Prodotto3" False "Prodotto4" False "Prodotto5"` zenity --info --text="Il prodotto più richiesto risulta: "$PRODOTTO
[modifica] Opzioni disponibile per progress
- --text Imposta il testo della finestra di dialogo
- --percentage Imposta la percentuale iniziale
- --pulsate Fa pulsare la barra di avanzamento
- --auto-close Chiude il dialogo quando viene raggiunto il 100%
L'opzione progress ci consente di visualizzare una barra di avanzamento che visualizza lo stato di avanzamento di una particolare operazione. Supponiamo ad esempio di voler visualizzare a video lo stato di avanzamento di una particolare operazione, per fare questo dobbiamo utilizzare l'opzione progress nel seguente modo:
Comando_da_eseguire|zenity --progress
Ovviamente possiamo utilizzare tutte le varie opzioni di progress per ottenere differenti risultati. Un esempio pratico potrebbe essere quello di visualizzare lo stato di avanzamento dell'riavvio del demone del web server Apache come segue:
#!/bin/bash /etc/init.d/apache2 restart|zenity --progress --text="Riavvio del Web Server Apache..."
[modifica] Opzioni disponibile per question
- --text Imposta il testo della finestra di dialogo
- --no-wrap Non abilita il testo a capo
Script bash di esempio:
#!/bin/bash zenity --question --text="Richiesta di Conferma"
Questo script di esempio mostra una finestra di dialogo di conferma che visualizzerà il messaggio "Richiesta di Conferma".
[modifica] Opzioni disponibile per warning
- --text Imposta il testo della finestra di dialogo
- --no-wrap Non abilita il testo a capo
Script bash di esempio:
#!/bin/bash zenity --warning --text="Messaggio di Avviso"
Questo script di esempio mostra una finestra di dialogo di avviso che visualizzerà il messaggio "Messaggio di avviso".
[modifica] Opzioni disponibili per scale
- --text Imposta il testo della finestra di dialogo
- --value Imposta il valore iniziale
- --min-value Imposta il valore minimo
- --max-value Imposta il valore massimo
- --step Imposta la dimensione del passo
- --print-partial Stampa i valori parziali
- --hide-value Nascondi il valore
L'opzione --scale ci consente di ottenere una finestra di dialogo con una scala graduata. Di questa scala possiamo impostare il valore iniziale, il valore minimo e massimo e la dimensione del passo di incremento.
Script bash di esempio:
- !/bin/bash
zenity --question --text="Vuoi ricercare i file in base alla dimensione?"
PERCORSO=/usr/bin/pwd
if [ $? = 0 ];
then
DIMENSIONE=` zenity --text="Dimensione file da ricercare (in KB)" --scale --min-value=0 --max-value=10 --step=1`
find $PERCORSO -size $DIMENSIONE
echo $
fi
Questo script consente di visualizzare una scala graduata grazie alla quale è possibile specificare la dimensione del file che stiamo ricercando (espressa in KB).
[modifica] Opzioni generali
Per ciascuna delle opzioni principali di zenity (calendar, warning, question ecc.) sono disponibili delle opzioni generali richiamabili assieme a ciascuna di esse. Tali opzioni sono
- --title=TITOLO Imposta il titolo della finestra di dialogo
- --window-icon=PERCORSO_ICONA Imposta l'icona della finestra
- --width=LARGHEZZA Imposta la larghezza della finestra
- --height=ALTEZZA Imposta l'altezza della finestra
Piccolo esempio:
#!/bin/bash zenity --info --text="Messaggio di informazione!" --title="Informazioni" --width=300 --height=300
In questo modo verrà visualizzata una finestra di dialogo di informazione che avrà come titolo "Titolo Informazione" contenente il messaggio "Messaggio di informazione". La finestra avrà inoltre dimensioni 300 per altezza (--height) e 300 di larghezza (--width)
[modifica] Piccoli script con zenity
Il seguente script è solo un esempio per mostrare alcuni componenti richiamabili attraverso zenity
#!/bin/bash zenity --question --text "Vuoi editare un nuovo file?" if [ $? = 0 ]; then SELECTED_FILE=`zenity --file-selection` zenity --text-info --width=560 --editable --filename=$SELECTED_FILE > $SELECTED_FILE.edited echo "Saved $SELECTED_FILE as $SELECTED_FILE.edited" zenity --text-info --filename=$SELECTED_FILE.edited fi
[modifica] Link Esterni
Autore: Nicola Fioretti


