Comment utiliser des widgets graphiques dans des scripts bash avec Zenity
- 3837
- 326
- Anaïs Charles
Zenity est un utilitaire très utile qui nous a permis de créer des interfaces utilisateur graphiques pour nos scripts shell. Plusieurs widgets existent et peuvent être utilisés en invoquant le programme avec les options respectives. Les widgets sont basés sur le Gtk
Toolkit et renvoyez le résultat de l'interaction utilisateur soit sur la sortie standard, soit comme code de retour.
Dans ce tutoriel, vous apprendrez:
- Quelles sont les options de zénité générale
- Quels sont certains des widgets les plus utiles disponibles et comment les utiliser
Exigences et conventions logicielles utilisées
Catégorie | Exigences, conventions ou version logicielle utilisée |
---|---|
Système | Indépendant de la distribution |
Logiciel | L'utilitaire Zenity |
Autre | Familiarité avec la coquille (bash dans ce cas) et des concepts comme les codes de sous-coque et de sortie |
Conventions | # - Exige que les commandes Linux soient exécutées avec des privilèges racine soit directement en tant qu'utilisateur racine, soit par l'utilisation de Sudo commande$ - Exige que les commandes Linux soient exécutées en tant qu'utilisateur non privilégié régulier |
Installation
Le zénité
Le package est inclus dans les référentiels de toutes les principales distributions Linux, et il peut être déjà installé si vous utilisez le GNOME
environnement de bureau. Pour l'installer, nous pouvons utiliser notre gestionnaire de packages de distribution préféré, dans Feutre
, Par exemple, nous pouvons utiliser DNF
:
$ sudo dnf installer zenity
Lorsque vous utilisez des distributions basées sur Debian et Debian comme Ubuntu, nous pouvons utiliser la commande APT-GET:
$ sudo apt-get install zenity
Zenity est déjà incluse dans l'Archlinux supplémentaire
référentiel, donc nous pouvons l'installer via Pac-Man
:
$ sudo pacman -s zenity
Options génériques
Avant de commencer à voir certains des widgets les plus utiles fournis par zénité
, Nous devons mentionner certaines des options génériques disponibles que nous pouvons utiliser pour modifier le comportement du programme.
Nous les appelons génériques car ils peuvent être appliqués indépendamment du widget choisi: --titre
, --veuve-icon
, --largeur
, --hauteur
et --temps libre
.
Tout d'abord, nous avons le --titre
Option: nous pouvons l'utiliser pour spécifier un titre pour la fenêtre de dialogue. De même, le --fenêtre
Option Laissez-nous spécifier une icône qui sera utilisée comme icône de la fenêtre, et sera visible, par exemple, dans la barre des tâches. Pour afficher une icône dans le widget, nous pouvons plutôt utiliser le --nom icône
Option et fournir l'un des noms d'icônes autorisées (voici la liste complète) comme argument. Pour utiliser les icônes de stock fournies dans l'erreur, les informations, les questions ou les dialogues d'avertissement, par exemple, nous pouvons spécifier respectivement: error de dialogue
, dialogue-info
, quête de dialogue
ou avertissement de dialogue
.
Le --largeur
et --hauteur
Les options sont assez explicites: ils nous ont permis de définir la géométrie de notre fenêtre de dialogue.
Enfin, en utilisant le --temps libre
Option Nous pouvons définir un délai d'expiration en quelques secondes pour le dialogue: après la durée spécifiée, il sera automatiquement fermé.
Les widgets disponibles
Il y a plusieurs widgets que nous pouvons utiliser grâce à Zenity: chacun d'eux a un objectif spécifique. Voyons certains d'entre eux.
Le widget de calendrier
Le widget du calendrier affichera un calendrier et permettra à l'utilisateur de choisir une date, en sélectionnant le mois, le jour et l'année. Les valeurs sélectionnées seront renvoyées sur le sortie standard
. Pour lancer le calendrier des widgets, tout ce que nous avons à faire est d'invoquer Zenity, avec le --calendrier
option:
$ Zenity - Calendar
Nous pouvons utiliser une série d'options pour affiner le comportement du widget, par exemple, en utilisant --jour
, --mois
, --année
et fournir un Int
Comme la valeur, nous pouvons définir, respectivement, le jour, le mois et l'année par défaut qui seront affichés dans le widget. Pour spécifier un format spécifique dans lequel la date sélectionnée doit être retournée, nous pouvons utiliser le --date
option et spécifiez le modèle dans le strime
style.
Le widget de calendrier
Le widget d'entrée
Le widget d'entrée est vraiment utile lorsque nous devons demander à l'utilisateur un texte. Dites par exemple, nous devons demander à l'utilisateur de saisir son nom; Nous pouvons exécuter la commande suivante:
$ zenity --entry - title "demande de nom" --xt "Veuillez entrer votre nom:"
Ici, nous avons utilisé le --titre
et --texte
Options pour personnaliser, respectivement, le titre et l'étiquette qui pour le widget. Une fois que nous exécutons la commande ci-dessus, le widget apparaît:
Le widget d'entrée
Le texte entré par l'utilisateur sera retourné sur la sortie standard.
Widget de sélection de fichiers
Le widget de sélection de fichiers nous affichons une belle interface graphique pour permettre à l'utilisateur de sélectionner un ou plusieurs fichiers. Tout comme nous l'avons fait dans les exemples précédents, nous pouvons utiliser une série d'options pour modifier le comportement et l'apparence du dialogue. L'un des plus importants est --nom de fichier
qui peut être utilisé pour définir le fichier / répertoire qui sera sélectionné par défaut. Voici un aperçu rapide des options et des fonctionnalités qu'ils fournissent:
Option | Fonction |
---|---|
-nom de fichier | Définissez le répertoire / fichier par défaut qui sera sélectionné dans le widget |
-plusieurs | Activer la possibilité de sélectionner plusieurs fichiers à la fois |
-fichier de fichiers | Spécifiez un filtre pour les noms de fichiers |
-annuaire | Restreindre la sélection aux répertoires |
-sauvegarder | Exécutez le widget en mode «Enregistrer». |
-Confirmer-Overwrite | Demandez à l'utilisateur une confirmation lors de l'écrasement d'un fichier existant |
-séparateur | Spécifiez un séparateur qui sera utilisé pour séparer les chemins lorsque plusieurs fichiers sont sélectionnés |
Voyons un exemple de l'utilisation du widget. Disons que nous voulons laisser l'utilisateur sélectionner plusieurs fichiers et nous voulons le contenu de l'utilisateur $ Home
répertoire à afficher dans le widget lorsqu'il est ouvert. Tout ce que nous avons à faire est d'exécuter la commande suivante:
$ Zenity - File-Selection - Multiple --FileName "$ home /"
Vous pouvez remarquer que nous avons fourni un suivi / /
au chemin: de cette façon, le contenu du répertoire s'affiche, au lieu du répertoire lui-même. Voici notre widget:
Le widget de sélection de fichiers
Une fois que nous avons cliqué sur le bouton «OK», le chemin d'accès absolu du (s) fichier (s) sélectionné sera renvoyé sur la sortie standard, séparée par un caractère, qui soit par défaut est |
:
/ Home / Egdoc / Téléchargements / A.txt | / home / egdoc / téléchargements / b.SMS
Nous pouvons facilement modifier le séparateur, fournissant le caractère que nous voulons utiliser comme argument de l'option-Separator.
Si nous ouvrons le dialogue dans mode sauvegarde
, L'utilisateur sera invité à fournir le nom du fichier qu'il souhaite enregistrer. Si le fichier existe et nous avons fourni le --Confirmer-Overwrite
Option, il sera invité à confirmer qu'il veut l'écraser:
$ Zenity - File-Selection - Save - Confirm-Overwrite --FileName "$ home /"
Le chemin choisi sera renvoyé à la sortie standard, et nous serons libres de l'utiliser dans notre script.
Le widget de progression
Un autre widget intéressant est le progrès: nous pouvons le lancer en utilisant en invoquant Zenity avec le --progrès
option. Nous pouvons l'utiliser, par exemple, pour montrer la progression des opérations de longue date. Voici quelques-unes des options les plus utiles que nous pouvons utiliser avec le widget:
Option | Fonction |
---|---|
-pourcentage | Définit la valeur de pourcentage initiale de la barre de progression |
-fermeture automatique | Fermez automatiquement le dialogue lorsque les progrès sont terminés |
-kill automatique | Tuez le processus parent si le dialogue est fermé avec l'annulation bouton |
-pas de liconel | N'affichez pas le bouton Annuler |
Voici un exemple de la façon dont nous pouvons utiliser le widget dans un script bash:
#!/ bin / bash # # script mande! (Echo 25 Echo "# Configuration…" Sleep 2 Echo 30 Echo "# Reading Files…" Sleep 2 Echo 70 Echo "# Création de contenu…" Sleep 1 echo 100 echo "# Done!") | Zenity - title" Progress Bar Exemple "--progress - Auto-kill
Copie Le script ci-dessus n'effectue aucune opération, mais il est utile de comprendre comment fonctionne le widget. Il y a deux principales choses qui doivent être remarquées dans le code: tout d'abord, les commandes à exécuter sont enveloppées entre parenthèses, donc sont exécutées dans un sous-coque
: Ceci est nécessaire pour que le widget fonctionne correctement; Deuxièmement, lorsque nous faisons écho à une ligne commençant par un nombre, cela sera interprété comme le pourcentage de la barre de progrès.
De la même manière, lorsque nous faisons écho à une ligne qui commence par le #
caractère, il sera utilisé comme texte à afficher dans le widget. Voici une courte vidéo du script en action:
Widgets d'infos, d'avertissement et d'erreur
Pour afficher des informations, d'avertissement ou d'erreur, nous pouvons utiliser Zenity avec le --Info
, --avertissement
et --erreur
Options, respectivement. Dans ce cas, nous utilisons le --texte
Option pour spécifier le message. Voici un exemple de notification:
$ zenity - info - largeur = 400 - height = 200 --xt "Ceci est une notification!"
Le widget de notification
L'utilisation du widget d'avertissement est tout aussi facile:
$ zenity --warning - largeur = 400 - height = 200 --xt "Ceci est un avertissement!"
Le widget d'avertissement
Ceci est plutôt un exemple de message d'erreur:
$ zenity --error - largeur = 400 - height = 200 --xt "Ceci est une erreur!"
Le widget d'erreur
Le widget de question
Pour poser une question à l'utilisateur et obtenir sa réponse, nous pouvons utiliser le question
widget, invoquant la zénité avec le --question
option. Nous spécifions la question en utilisant le --texte
Option, et définissez les étiquettes des boutons «OK» et «Annuler», en utilisant respectivement le --étiquette
et --annulaire
options. Voici un exemple:
$ zenity --quêtes --text "Êtes-vous sûr de vouloir arrêter?"- no-wrap --ok-label" Oui "- Cancel-label" non "
Le widget de question
Dans ce cas, nous avons également utilisé le --ne pas enrouler
Option, pour éviter l'enveloppe de texte dans le widget. Le résultat du choix de l'utilisateur ne sera pas affiché sur la sortie standard; Au lieu de cela, la commande définira son code de sortie
En conséquence, il reviendra donc 0
Si l'utilisateur clique sur le bouton 'OK', et 1
S'il clique sur le `` Annuler '' ou ferme la fenêtre (cela peut sembler contre-intuitif, mais rappelez-vous qu'un code de sortie de 0 signifie qu'une commande a été exécutée avec succès dans le shell).
Le widget de mot de passe
Il s'agit du widget que nous devons utiliser lorsque nous voulons que l'utilisateur entre un mot de passe ou toute information sensible: le texte dans lequel il entre est masqué par des balles:
Le widget de mot de passe
Alors que le texte entré à partir de l'utilisateur est masqué, la valeur renvoyée par le widget sera clairement visible sur la sortie standard.
Le widget de sélection de couleurs
C'est un autre beau widget. En l'utilisant, nous pouvons faire en sorte que l'utilisateur choisir une couleur dans une palette. Pour l'exécuter, nous utilisons Zenity avec le --sélection de couleurs
option. Nous pouvons spécifier la couleur initialement sélectionnée en utilisant --couleur
et fournir la couleur comme argument. Voici un exemple:
Le widget de sélection de couleurs
Facultativement, nous pouvons à la place afficher la palette de couleurs, avec le --palette show
option:
$ Zenity - Color-Selection - Color Red --show-Palette
La palette de widget de sélection de couleurs
La couleur sélectionnée par l'utilisateur sera retournée dans RVB
Notation sur la sortie standard. Par exemple, lors de la sélection de la couleur rouge, ce qui suit sera retourné:
RVB (255,0,0)
Le widget de liste
Le prochain widget que nous allons jeter un œil, est le widget de liste. Avec lui, il est possible de créer un dialogue multi-colonnes et de permettre à l'utilisateur de sélectionner une ou plusieurs options via des cases à cocher ou des boutons radio. Pour faire afficher Zenity ce type de dialogue, nous utilisons le --liste
option et définissez les colonnes et leur contenu; Si nous leur omettons, la commande échouera:
$ zenity - list pas de titres de colonne spécifiés pour la boîte de dialogue de liste.
Copie Pour définir un en-tête de colonne, nous utilisons le --colonne
option et fournir une chaîne comme argument. Nous répétons la commande pour chaque colonne que nous voulons créer:
$ zenity - liste - Sélection des colonnes - Distribution des colonnes
Avec la commande ci-dessus, nous avons créé deux colonnes, avec les en-têtes «sélection» et «distribution». Nous allons maintenant fournir à l'utilisateur une série de lignes, chacune représentant une distribution Linux. Dans la première colonne de chaque ligne, nous placerons une case à cocher pour permettre à l'utilisateur de sélectionner l'entrée correspondante:
$ zenity - list - Colonne Sélection - Colonne Distribution False Debian True Fedora -Radiolist
Chaque chaîne que nous fournissons après la définition des colonnes est associée aux colonnes, selon leur ordre d'apparence. Comme vous pouvez le voir, nous avons créé deux lignes. Dans la première colonne de chaque ligne, nous avons fourni une valeur: nous avons utilisé FAUX
afin que la case à cocher ou le bouton radio correspondant ne soit pas sélectionné lorsque le widget s'affiche, et VRAI
Pour définir l'entrée comme indiqué par défaut. Voici le widget généré:
Le widget de liste
Lorsque nous cliquons sur le bouton «OK» et effectuons notre sélection, la valeur associée à la ligne sera signalée sur la sortie standard. Si nous souhaitons laisser l'utilisateur sélectionner plusieurs lignes, nous pouvons utiliser le --liste de contrôle
Option: le | Le caractère sera utilisé pour séparer les valeurs sélectionnées.
Conclusions
Dans ce tutoriel, nous avons appris à savoir zénité
, Un utilitaire qui nous a permis d'utiliser des dialogues graphiques dans nos scripts de coquille. Nous avons vu quelles sont les options génériques que nous pouvons utiliser avec tous les widgets, comme --largeur
et --hauteur
, Et nous avons appris à utiliser certains des widgets les plus utiles que nous pouvons générer avec le programme. En apprendre davantage sur zénité
Vous pouvez consulter sa page manuelle!
Tutoriels Linux connexes:
- Une introduction à l'automatisation Linux, des outils et des techniques
- Masterring Bash Script Loops
- Choses à installer sur Ubuntu 20.04
- Boucles imbriquées dans les scripts bash
- Mint 20: Mieux que Ubuntu et Microsoft Windows?
- Gestion de la saisie des utilisateurs dans les scripts bash
- Choses à faire après l'installation d'Ubuntu 20.04 Focal Fossa Linux
- Tutoriel de débogage GDB pour les débutants
- Fichiers de configuration Linux: 30 premiers
- Système linux hung? Comment s'échapper vers la ligne de commande et…
- « Comment étendre le gestionnaire de fichiers Gnome Nautilus avec des scripts personnalisés
- Introduction à la base de données MySQL / MARIADB »