Nous savons tous que les scripts bash Linux sont une véritable force de Linux. Souvent, nous voulons afficher une interface utilisateur graphique (GUI) dans nos scripts pour faciliter l'interaction avec les utilisateurs. L'interface graphique rend n'importe quel script plus convivial et plus beau.
Pour GTK dans les scripts shell, de nombreuses options et outils sont disponibles sous Linux.
Dans cet article, nous allons vous montrer comment utiliser Zenity pour afficher les boîtes de dialogue de l'interface graphique dans les scripts Bash.
Zenity est une application open source permettant d'afficher une interface graphique simple dans des scripts shell. Il rend les scripts plus conviviaux en affichant les boîtes de dialogue GTK+. Zenity est un outil de ligne de commande pratique pour les scripts shell modernes. Zenity est facile à utiliser et une application multiplateforme.
Prérequis
Un utilisateur sudo avec des privilèges root.
Installer Zenity
Zenity fait partie du bureau GNOME et par défaut, il est installé sur la plupart des distributions Linux. Vous pouvez vérifier l'installation de Zenity sur votre système en exécutant la commande suivante dans le terminal.
zenity --version
Si Zenity n'est pas installé sur votre système, vous pouvez l'installer en utilisant Apt , npd ou pacman commande.
Pour les systèmes basés sur Ubuntu/Debian :
sudo apt-get install zenity
Pour les systèmes basés sur RedHat :
dnf install zenity
Pour les systèmes basés sur Arch :
pacman -S zenity
Options générales de Zenity
Certaines options générales peuvent être utilisées indépendamment avec Zenity. Les options générales sont --title, --window-icon, --width, --height, --timeout
Vous pouvez utiliser l'option ---title pour spécifier un titre pour la fenêtre de dialogue.
Vous pouvez utiliser l'option --window-icon pour spécifier une icône qui sera utilisée comme icône pour la boîte de dialogue Zenity.
De plus, vous pouvez définir la largeur et la hauteur de la boîte de dialogue Zenity en définissant les options --width et --height dans la commande Zenity.
En utilisant l'option --timeout, vous pouvez définir un délai d'expiration du dialogue, après la fermeture automatique de cette boîte de dialogue.
Boîte de message Zenity
Vous pouvez créer une boîte de dialogue de message graphique simple et agréable à l'aide d'une simple commande Zenity à partir du terminal.
Quatre types de boîte de dialogue de message disponibles dans Zenity.
- Informations
- Erreur
- Question
- Avertissement
1. Une boîte de dialogue d'informations
Vous pouvez créer une boîte de dialogue d'informations en exécutant la commande suivante dans le terminal :
zenity --info --text="Software Update Available." --width=500
2. Une boîte de dialogue d'erreur
Exécutez la commande suivante pour afficher la boîte de dialogue d'erreur
zenity --error --text="Error In Installation" --title="Error" --width=500 --width=200
3. Une boîte de dialogue Question
Vous pouvez facilement demander Oui ou non en exécutant la commande suivante :
zenity --question --text="Do you want to reboot pc?" --width=200
Vous pouvez utiliser Zenity Question Dialog dans un script shell comme ceci :
#/bin/bash
touch demo.txt
if zenity --question --title="Confirm deletion" --text="Are you sure you want to demo.txt file?" --no-wrap
then
rm demo.txt
zenity --info --title="Success" --text="demo.text was removed" --no-wrap
fi
4. Une boîte de dialogue d'avertissement
zenity --warning --title="Update Available" --text="OS Update required" --width=200
Notification
Vous pouvez afficher la notification à l'aide de Zenity.
zenity --notification --text "Good Morning"
Boîtes de saisie Zenity
En utilisant Zenity, vous pouvez créer des boîtes de dialogue simples qui prennent les entrées de l'utilisateur et les affichent en tant que sortie standard.
Voici quelques champs de saisie :
Calendrier
Calendrier La boîte de dialogue affiche un calendrier et renvoie la date sélectionnée par l'utilisateur comme sortie standard.
zenity --calendar
Output:
17/04/21
Boîte de dialogue de saisie de texte
Vous pouvez utiliser l'option --entry pour créer une boîte de dialogue de saisie de texte. C'est très utile lorsque vous voulez demander à l'utilisateur de saisir du texte.
zenity --entry --title "User Info" --text "Please enter your name"
Boîte de dialogue Liste
Vous pouvez utiliser l'option --list pour créer une boîte de dialogue multi-colonnes. Ici, vous devez saisir les données pour la boîte de dialogue de liste colonne par colonne, ligne par ligne. Vous pouvez utiliser la case à cocher ou rediobox avec la boîte de dialogue de liste comme indiqué ci-dessous :
zenity --list --title "Choose Processor" --radiolist --column "ID" --column="Name" 1 AMD 2 Intel
Vous pouvez également cocher la case avec l'option --list pour une sélection multiple.
zenity --list --title "Packages" --list --text "select packages you want to install" --checklist --column "id" --column "Name" 1 "Google Chrome" 2 "VLC" 3 "Firefox" 4 "GIMP"
Output
Google Chrome|VLC|Firefox
Boîte de dialogue de sélection de couleur
Vous pouvez utiliser l'option --color-selection pour prendre la valeur de sélection de couleur de l'utilisateur.
zenity --color-selection --show-palette
Boîte de dialogue de sélection de fichier
Vous pouvez utiliser l'option --file-selection pour capturer les fichiers ou répertoires sélectionnés en tant que sortie standard. Vous pouvez également enregistrer le fichier en utilisant l'option --file-selection.
zenity --file-selection --multiple --filename "/"
Boîte de dialogue de progression
Vous pouvez créer une belle barre de progression en utilisant l'option --progress. Ceci est utile à de nombreuses reprises, lorsque vous souhaitez afficher la barre de progression de l'achèvement de votre application ou de votre script à l'utilisateur.
La commande ci-dessous vous montre la barre de progression du téléchargement.
(wget -r --no-parent patch -A.tar.gz http://157.245.99.119/latest/ -P /tmp 2>&1 ) | sed -u 's/.* \([0-9]\+%\)\ \+\([0-9.]\+.\) \(.*\)/\1\n# Downloading at \2\/s, ETA \3/' | zenity --progress --title="Downloading File..." --percentage=1 --pulsate
Pour plus d'options de progression, exécutez la commande suivante dans le terminal
zenity --help-progress
Pour plus d'options Zenity, vous pouvez utiliser man Zenity et Zenity --help .
Conclusion
Dans le guide ci-dessus, vous avez appris comment écrire un script bash pour afficher les boîtes de dialogue de l'interface graphique à l'aide de Zenity et rendre le script Bash plus convivial. N'hésitez pas à me demander si vous avez des questions.