Zenity : Boites de dialogue graphiques aux scripts shell
Table des matières
Zenity est un outil en ligne de commande qui permet de créer facilement des boites de dialogue graphiques simples pour des scripts shell ou des applications en ligne de commande.
On pourra de façon simple afficher des messages d'information, des formulaires de saisie et plein d'autres types de fenêtres dans l'environnement de bureau pour interragir avec l'utilisateur.
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 :
Sur Debian / Ubuntu et dérivées :
Plutôt que de voir théoriquement les possibilités de zenity, je vous propose des exemples concrets.
Voici un exemple simple de 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 :
Voici un exemple de boite de dialogue posant une question :
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 :
Ce qui donne :
Voici un exemple de saisie de texte par l'utilisateur :
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 :
Ce qui donne :
Voici un exemple de saisie d'un mot de passe par l'utilisateur :
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 :
Ce qui donne :
Voici un exemple de sélection de date par l'utilisateur :
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 :
Ce qui donne :
Voici un exemple de sélection parmi une liste préféfinie :
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 :
Ce qui donne :
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 :
La syntaxe sera :
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 :
Voici un exemple de gestionnaire de fichiers :
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 :
Ce qui donne :
Introduction
Zenity est un outil en ligne de commande qui permet de créer facilement des boites de dialogue graphiques simples pour des scripts shell ou des applications en ligne de commande.
On pourra de façon simple afficher des messages d'information, des formulaires de saisie et plein d'autres types de fenêtres dans l'environnement de bureau pour interragir avec l'utilisateur.
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 :
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 :
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 :
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 :
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 :
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 :
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 :
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 :