Recherche de site Web

Zenity : Construire des dialogues GTK+ dans des scripts shell


Zenity est un outil qui vous permet de créer des boîtes de dialogue graphiques sous Linux à l’aide de la ligne de commande. Il utilise GTK+, une boîte à outils pour créer des interfaces utilisateur graphiques (GUI), ce qui facilite l’ajout d’éléments visuels à vos scripts.

Zenity peut être extrêmement utile pour les scripts shell, car il fournit un moyen simple d’interagir avec les utilisateurs par le biais de boîtes de dialogue telles que des boîtes d’information, des sélecteurs de fichiers, des barres de progression, etc.

Dans cet article, nous allons nous plonger dans le fonctionnement de Zenity, les types de boîtes de dialogue qu’il peut créer et comment l’utiliser efficacement dans vos scripts shell.

Pourquoi utiliser Zenity ?

Lors de l’écriture de scripts shell, l’interaction de l’utilisateur se fait généralement via l’entrée/sortie de texte dans le terminal. Cependant, dans certains scénarios, vous souhaiterez peut-être offrir une expérience plus conviviale, en particulier lorsque le script est destiné à des personnes qui ne sont peut-être pas à l’aise avec les commandes de terminal.

Zenity aide à résoudre ce problème en vous permettant de créer des boîtes de dialogue graphiques faciles à comprendre et à utiliser.

Installer Zenity sous Linux

La plupart des distributions Linux modernes sont livrées avec Zenity préinstallé et vous pouvez vérifier si Zenity est disponible sur votre système en tapant la commande suivante dans votre terminal :

zenity --version

4.0.1

Si Zenity est installé, cette commande affichera le numéro de version. S’il n’est pas installé, vous pouvez l’installer à l’aide de votre gestionnaire de paquets.

sudo apt install zenity         [On Debian, Ubuntu and Mint]
sudo yum install zenity         [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/zenity  [On Gentoo Linux]
sudo apk add zenity             [On Alpine Linux]
sudo pacman -S zenity           [On Arch Linux]
sudo zypper install zenity      [On OpenSUSE]    
sudo pkg install zenity         [On FreeBSD]

Utilisation de base de Zenity sous Linux

Zenity est très simple à utiliser, car il fonctionne en invoquant différents types de boîtes de dialogue à partir de la ligne de commande à l’aide de diverses options. Chaque option correspond à un type spécifique de boîte de dialogue.

Exemple 1 : Affichage d’une boîte de dialogue d’information

L’une des utilisations les plus simples de Zenity est d’afficher une boîte de dialogue d’information.

zenity --info --text="This is an information dialog"

Exemple 2 : Affichage d’une boîte de dialogue d’avertissement

Vous pouvez également afficher une boîte de dialogue d’avertissement à l’aide de la commande suivante :

zenity --warning --text="This is a warning message"

Exemple 3 : Affichage de la boîte de dialogue des questions

Une boîte de dialogue de question peut être utilisée pour poser à l’utilisateur une question oui/non. Le résultat est renvoyé sous la forme d’un code de sortie.

if zenity --question --text="Do you want to continue?"; then
    echo "User selected Yes"
else
    echo "User selected No"
fi

Exemple 4 : Affichage de la boîte de dialogue de sélection de fichiers

Zenity peut également être utilisé pour ouvrir une boîte de dialogue de sélection de fichiers, permettant aux utilisateurs de choisir un fichier dans leur système :

FILE=$(zenity --file-selection --title="Choose a file")
echo "You selected: $FILE"

Exemple 5 : Affichage de la boîte de dialogue de saisie de texte

Vous pouvez créer une boîte de dialogue qui invite l’utilisateur à entrer du texte, ce qui peut être utile pour obtenir une entrée utilisateur.

USER_INPUT=$(zenity --entry --title="Input required" --text="Enter your name:")
echo "You entered: $USER_INPUT"

Exemple 6 : Affichage de la boîte de dialogue Mot de passe

Si vous souhaitez demander un mot de passe à l’utilisateur, vous pouvez utiliser la boîte de dialogue du mot de passe, mais l’entrée sera masquée :

PASSWORD=$(zenity --password --title="Enter your password")
echo "Password entered: $PASSWORD"

Exemple 7 : Affichage de la boîte de dialogue de la barre de progression

Zenity peut afficher une barre de progression, ce qui est utile lorsque vous souhaitez indiquer qu’une tâche est en cours.

(
for i in {1..100}; do
    echo $i
    sleep 0.1
done
) | zenity --progress --title="Task in progress" --text="Please wait..." --percentage=0

Exemple 8 : Affichage de la boîte de dialogue d’erreur

Vous pouvez afficher une boîte de dialogue d’erreur lorsque quelque chose ne va pas dans votre script :

zenity --error --text="An error occurred!"

Exemple 9 : Affichage de la boîte de dialogue Liste

Zenity peut afficher une liste d’options parmi lesquelles l’utilisateur peut choisir :

zenity --list --title="Choose an option" --column="Options" "Option 1" "Option 2" "Option 3"

Utilisation de Zenity dans les scripts shell

Zenity peut être intégré de manière transparente dans les scripts shell pour créer une expérience plus conviviale.

Voici un exemple complet d’un script simple qui utilise diverses boîtes de dialogue Zenity.

#!/bin/bash

Welcome message
zenity --info --text="Welcome to the user setup script"

Ask for user's name
USER_NAME=$(zenity --entry --title="User Information" --text="Please enter your name:")

Ask for confirmation
if zenity --question --text="Is your name $USER_NAME?"; then
    zenity --info --text="Thank you, $USER_NAME"
else
    zenity --error --text="Name mismatch. Exiting script."
    exit 1
fi

File selection
FILE=$(zenity --file-selection --title="Select a file to process")
zenity --info --text="You selected: $FILE"

Display progress
(
for i in {1..100}; do
    echo $i
    sleep 0.1
done
) | zenity --progress --title="Processing file" --text="Please wait while we process the file..." --percentage=0

zenity --info --text="Process complete!"

Ce script commence par accueillir l’utilisateur, puis lui demander son nom, confirmer le nom, lui demander de sélectionner un fichier et afficher une barre de progression pendant le traitement du fichier. Il démontre comment Zenity peut être utilisé pour ajouter une interface graphique à un script qui serait autrement basé sur du texte.

Gestion des erreurs dans Zenity

Zenity renvoie différents codes de sortie en fonction des actions de l’utilisateur. La compréhension de ces codes permet de gérer correctement les erreurs ou les annulations d’utilisateurs dans vos scripts.

  • Code de sortie 0 : L’utilisateur a cliqué sur « OK » ou a sélectionné une option.
  • Code de sortie 1 : L’utilisateur a cliqué sur « Annuler » ou a fermé la boîte de dialogue.
  • Code de sortie -1 : Une erreur s’est produite.

Vous pouvez utiliser ces codes de sortie pour gérer différentes réponses de l’utilisateur :

if zenity --question --text="Do you want to proceed?"; then
    echo "Proceeding..."
else
    echo "Action canceled by the user."
    exit 1
fi
Conclusion

Zenity est un outil incroyablement utile pour créer des boîtes de dialogue graphiques dans des scripts shell. Que vous créiez de simples sélecteurs de fichiers, des boîtes de dialogue interactives ou des barres de progression, Zenity peut améliorer vos scripts en fournissant une interface conviviale.

En utilisant Zenity, vous pouvez rendre vos applications en ligne de commande et vos scripts shell plus accessibles aux utilisateurs non techniques.

Articles connexes: