Ceci est une ancienne révision du document !
Zenity
Traduction de la courte description sur le site officiel de Zenity. 1)
Zenity est un outil qui permet d'afficher des boites de dialogue GTK+ depuis la ligne de commande ou au travers de scripts shell. Il est similaire à gdialog, mais son but est d'être plus simple. Il appartient à la même famille que dialog (affichage de pseudo boite de dialogue en console), xdialog et cdialog, mais il surpasse tous ces projets en ayant un nom bien plus classe.
Installation
Il suffit pour cela d'installer le paquet zenity.
Utilisation
Zenity permet d'afficher 12 types de fenêtre :
Type de fenêtre | Argument | Description |
---|---|---|
Calendrier | --calendar | Affiche un calendrier |
Entrée | --entry | Permet la saisie de caractères |
Erreur | --error | Affiche un erreur à l'écran |
Navigateur de fichier | --file-selection | Permet la sélection d'un fichier |
Info | --info | Affiche une information |
Liste | --list | Affiche une liste |
Notification | --notification | Afficher une notification dans la zone prévue à cet effet |
Progress | --progress | Permet de suivre une progression |
Question | --question | Affiche une question ( OUI / NON ) |
Info texte | --text-info | Affiche un texte dans une fenêtre |
Avertissement | --warning | Afficher un avertissement |
Scale | --scale | Établir une valeur en positionnant un curseur sur une barre |
Pour plus d'infos, consulter la page de manuel de zenity.
Voir le script Zenity_Generator.
Exemples
Voici quelques infos bonus que certaines personnes ont trouvé. Car comme vous pouvez le constater, les infos sur zenity ne sont pas légions…
Ces fonctions ne semblent pas fonctionner pour les fenêtre "entry".
Zenity est basé sur GTK+, lui même basé sur Pango, il est donc possible d'utiliser certaines fonctions de ce logiciel.
Coloration du texte
Rien de mieux qu'un peu de couleur pour égayer un texte, pour cela, il faut utiliser la balise "span color" :
<span color=\"red\">red</span>
Fenêtre de test :
zenity --info --text " <span color=\"red\">red</span> <span color=\"green\">green</span> <span color=\"blue\">blue</span> <span color=\"yellow\">yellow</span> <span color=\"magenta\">magenta</span> <span color=\"white\">white</span> <span color=\"black\">black</span> <span color=\"gray\">gray</span> <span color=\"lightblue\">lightblue</span> <span color=\"lightgray\">lightgray</span>"
Choix de la police pour le texte
Marre de voir toujours la même police ? Il vous suffit donc d'utiliser la balise "span font-family".
<span font-family=\"Arial\">essai de polices</span>
Fenêtre de test :
zenity --info --text " <span font-family=\"Arial\">essai de polices</span> <span font-family=\"sans-serif\">essai de polices</span> <span font-family=\"Helvetica\">essai de polices</span> <span font-family=\"impact\">essai de polices</span> <span font-family=\"sans\">essai de polices</span> <span font-family=\"webdings\">essai de polices</span>"
Changer la forme de la police
Un mot a besoin de ressortir du reste ? Il suffit de mettre en gras, en italique…
zenity --info --text " <b>gras</b> <big>grand</big> <i>italique</i> <s>barré</s> <sub>indice</sub> <sup>exposant</sup> <small>petit</small> <tt>espace entre les lettres</tt> <u>souligné</u>"
Fenêtre avec liste de choix
Il est possible de créer une fenêtre comme suit :
Pour cela, il faut créer une boite de type "entry" et ajouter les différents choix de la liste à la fin de la commande.
N'oubliez pas les guillemets si vous mettez des espaces dans les réponses. Ex :
zenity --entry --title="Jour" --text="Veuillez indiquer le jour de la semaine" Lundi Mardi Mercredi "Autre jour..."
Pour ajouter une réponse de base, utilisez l'option "entry-text" :
zenity --entry --title="Jour" --text="Veuillez indiquer le jour de la semaine" --entry-text="Lundi" Mardi Mercredi
Boite de message et récupérer la valeur
if ret=`zenity --entry --title='Titre de la vidéo' --text='Saisissez le titre de la vidéo : '` then titre=$ret if [ "$titre" = "" ] then echo "Il faut un titre, tient pan t'es mort!" exit fi else echo "tsss Un Titre on dit, pas le bouton annuler!" exit fi echo $titre
Méthode 2 pour récupérer la valeur
Voici une méthode alternative a celle décrite ci-dessus
dossierSortie=$(zenity --file-selection \ --title="Veuillez selectionner un dossier" \ --text="Choissisez un dossier quelconque" \ --directory); echo ${dossierSortie} sleep 10
Méthode 3 pour récupérer la valeur
Très simple :
variable=`zenity --entry --title="Choix" --text="Indiquez un mot" lubuntu hybride unity ` echo "le mot choisi est "$variable
Barres de progression
Depuis http://library.gnome.org/users/zenity/stable/zenity-progress-options.html.fr
Commande | Rôle |
---|---|
--text=text | Spécifier le texte affiché dans la boîte de dialogue de barre de progression. |
--percentage=percentage | Spécifier le pourcentage initial réglé dans la boîte de dialogue de barre de progression. |
--auto-close | Fermer la boîte de dialogue quand la barre de progression atteint 100%. |
--pulsate | Utiliser une barre de progression discontinue jusqu'à ce qu'un caractère EOF soit lu sur l'entrée standard. |
- Si une ligne commence par '#', le texte est mis à jour avec le texte de cette ligne.
- Si une ligne contient seulement un nombre, le pourcentage est mis à jour avec ce nombre.
- --progress s'utilise avec un pipe. Vous devez donc mettre tout le code affecté par la barre de progression entre parenthèses.
Exemple :
#!/bin/sh ( echo "10" ; sleep 1 echo "# Mise à jour des journaux de mail" ; sleep 1 echo "20" ; sleep 1 echo "# Remise à zéro des paramètres" ; sleep 1 echo "50" ; sleep 1 echo "Cette ligne est ignorée" ; sleep 1 echo "75" ; sleep 1 echo "# Redémarrage du système" ; sleep 1 echo "100" ; sleep 1 ) | zenity --progress \ --title="Mise à jour des journaux système" \ --text="Analyse des journaux de mail..." \ --percentage=0 if [ "$?" = -1 ] ; then zenity --error \ --text="Mise à jour annulée." fi
Voir aussi
- zenity --info et notify-send !
Contributeurs principaux : blackbg, hizoka. Contributeur secondaire : mirage59, TheCaméléon, Herrleiche