Scripts et Programmation

Zenity : Boites de dialogue graphiques aux scripts shell

Cet article a été mis à jour, vous consultez ici une archive de cet article!
Table des matières

Introduction



Zenity est un outil en ligne de commande qui permet de créer facilement des interfaces graphiques simples pour des scripts shell ou des applications en ligne de commande.
On pourra de façon simple afficher des boîtes de dialogue, des messages d'information, des formulaires de saisie et d'autres types de fenêtres dans l'environnement de bureau.

Installation



Zenity est inclus dans le paquet portant le même nom. Si la commande zenity n'est pas disponible, l'installer :

Sur Fedora / RHEL et dérivées :
Code BASH :
dnf install zenity


Sur Debian / Ubuntu et dérivées :
Code BASH :
apt install zenity


Exemples



Plutôt que de voir théoriquement les possibilités de zenity, je vous propose des exemples concrets.

Boîte de dialogue d'information



Voici un exemple simple de message d'information :
Code BASH :
zenity --info --title="Titre du message" --text="Ceci est un message d'information"


Les options utilisées :
--info : Affiche l'icône d'ampoule et propose le bouton unique "Valider"
--title : Définit le titre de la fenêtre (sans rien il est affiché Information)
--text : Définit le texte affiché. Pour sauter des lignes, utiliser "\n"

Ce qui donne :

zenity-boite-info



On pourra utiliser, à la place de --info :
--warning : Qui affichera un panneau attention (et le titre par défaut Avertissement)
--error : Qui affichera un panneau sens interdit (et le titre par défaut Erreur)


Boîte de dialogue de question



Voici un exemple de boite de dialogue posant une question :
Code BASH :
zenity --question --text="Voulez-vous continuer ?"


Les options utilisées :
--question : Affiche l'icône point d'interrogation et propose les choix "Oui/Non"
--title : Définit le titre de la fenêtre (sans rien il est affiché Question)
--text : Définit le texte affiché. Pour sauter des lignes, utiliser "\n"

La réponse est interprétée par le code retour de la commande zenity ($? en bash) :
0 : Oui a été cliqué
1 : Non a été cliqué

L'intégration de zenity peut se faire dans un if :
Code BASH :
if zenity --question --text="Voulez-vous continuer ?"
then
    echo "Oui"
else
    echo "Non"
fi


Ce qui donne :

zenity-boite-question



Saisie de texte



Voici un exemple de saisie de texte par l'utilisateur :
Code BASH :
zenity --entry --title "Demande de saisie" --text="Entrez votre nom :"


Les options utilisées :
--entry : Affiche la zone de saisie de texte et propose les choix "Valider/Annuler"
--title : Définit le titre de la fenêtre (sans rien il est affiché "Ajoutez une nouvelle zone de saisie")
--text : Définit le texte affiché avant la zone de saisie

Le texte saisi est affiché sur la sortie standard. On pourra le récupérer dans une variable :
Code BASH :
NOMSAISI=$(zenity --entry --text="Entrez votre nom :")
echo "Bonjour $NOMSAISI !"


Ce qui donne :

zenity-boite-texte



Saisie de mot de passe



Voici un exemple de saisie d'un mot de passe par l'utilisateur :
Code BASH :
zenity --password --title="Entrez votre mot de passe"


Les options utilisées :
--password : Affiche la zone de saisie de mot de passe, un logo de clé et propose les choix "Valider/Annuler"
--title : Définit le titre de la fenêtre (sans rien il n'est rien affiché)

Le texte saisi est affiché sur la sortie standard. On pourra le récupérer dans une variable :
Code BASH :
MDP=$(zenity --password)
echo "Mot de passe saisi $MDP"


Ce qui donne :

zenity-boite-motdepasse



Sélection de date



Voici un exemple de sélection de date par l'utilisateur :
Code BASH :
zenity --calendar --text="Sélectionnez une date" --date-format="%Y-%m-%d"


Les options utilisées :
--calendar : Affiche un calendrier et propose les choix "Valider/Annuler"
--title : Définit le titre de la fenêtre (sans rien il est affiché "Sélectionnez dans le calendrier")
--text : Définit le texte affiché avant le calendrier
--date-format : Définit le format de la date. Variables classiques trouvables dans le man date

La date sélectionnée est affichée sur la sortie standard. On pourra la récupérer dans une variable :
Code BASH :
DATESAISIE=$(zenity --calendar --text="Sélectionnez une date" --date-format="%Y-%m-%d")
echo "Date sélectionnée : $DATESAISIE"


Ce qui donne :

zenity-boite-calendrier



Liste de sélection



Voici un exemple de sélection parmi une liste préféfinie :
Code BASH :
zenity --list --text="Choisissez une couleur" --column="Couleurs" Rouge Vert Bleu


Les options utilisées :
--list : Affiche une liste et propose les choix "Valider/Annuler"
--title : Définit le titre de la fenêtre (sans rien il est affiché "Choisir des objets dans la liste")
--text : Définit le texte affiché avant la liste
--column : Nom de la colonne suivi des valeurs de cette liste

La valeur sélectionnée est affichée sur la sortie standard. On pourra la récupérer dans une variable :
Code BASH :
COULEURSAISIE=$(zenity --list --text="Choisissez une couleur" --column="Couleurs" Rouge Vert Bleu)
echo "Couleur sélectionnée : $COULEURSAISIE"


Ce qui donne :

zenity-boite-liste



Barre de progression



Voici un exemple de barre de progression.
La gestion de l'avancée de la barre peut être complexe dans certains cas.
Ici un exemple simple d'une barre de progression qui va de gauche à roite :
Code BASH :
( sleep 10  ) | zenity --progress --pulsate --auto-kill --title="Progression" --text="Opération en cours..."


La syntaxe sera :
Code BASH :
( commande_entre_parentheses ) | zenity --progress --pulsate


Les options utilisées :
( commande_entre_parentheses ) : Commande à exécuter.
--progress : Affiche la barre de progression et propose les choix "Valider/Annuler"
--pulsate : On ne gère pas l'avancée de la barre, elle va de droite à gauche
--auto-kill : La commande entre parenthèses est killée si on clique sur "Annuler"
--title : Définit le titre de la fenêtre (sans rien il est affiché "Progression")
--text : Définit le texte affiché avant la barre de progression

Ce qui donne :

zenity-boite-progress



Sélecteur de fichiers



Voici un exemple de gestionnaire de fichiers :
Code BASH :
zenity --file-selection --title="Choisir un fichier"


Les options utilisées :
--file-selection : Affiche un navigateur de fichiers et propose les choix "Valider/Annuler"
--title : Définit le titre de la fenêtre (sans rien il n'est rien affiché)

Le fichier sélectionné est affichée sur la sortie standard. On pourra la récupérer dans une variable :
Code BASH :
FICHIER=$(zenity --file-selection --title="Choisir un fichier")
echo "Fichier sélectionné : $FICHIER"


Ce qui donne :

zenity-boite-fichier