Zenity to be zen

Publié le 08/04/2009

Je sais, c’est déjà vieux, bien connu… mais moi je ne l’avais jamais utilisé et j’ai découvert avec surprise à quel point zenity était un outil puissant. Installé sur Gnome par défaut, cet outil simple comme bonjour permet de créer un dialogue en deux temps trois mouvements.

À la base, je cherchais un moyen d’ajouter à “gedit” (éditeur assez sympa sur Gnome) une fonction permettant de faire un commit subversion avec un raccourci clavier. Sauf que j’avais besoin de saisir un commentaire… en mode console, aucun souci, mais dans gedit…

Et c’est là que zenity est apparut. Petit tour dans la page de manuel (man zenity) et on découvre qu’il sait faire apparaitre tout type de dialogue. Pour tester, j’ai donc taper dans une console:

zenity --entry --title "Test" --text="Entrez du texte"

Et apparait:\\

J’entre du texte, je valide, je regarde dans la console et… je vois le texte que j’ai tapé. Simple, efficace, je regarde les autres options… vous pouvez faire apparaitre n’importe quoi: -entrée de texte -navigateur de fichier -calendrier -information, warning, confirmation… -…

Dans tous les cas, la validation retourne le texte ou le choix sélectionné.

Si par contre vous pressez “Annuler”, le code de retour (\$?) est bel et bien “1” et non “0”, comme pour toute commandes bash.

Mieux, l’option –auto-kill va tuer le parent en cas d’annulation. Cela est très pratique dans mon cas où je ne veux pas faire le “commit” subversion dans le cas où j’annule, et je n’ai donc pas besoin de tester le retour.

Voyons donc comment intégrer mon outil dans gedit.

Ouvrez gedit… Dans “Edition » Préférences » Greffons” vous vérifiez que vous avez bien le plugin “Outils externes” d’activé. Ensuite dans le menu “Outils » Outils externes” vous créer un outil, nommez le “Subversion commit”, assignez lui un raccourci clavier (par exemple Super+F2) et dans “Commandes” vous entrez ceci: ` #!/bin/bash comment=zenity –entry –text=“Commentaire de commit pour le fichier $GEDIT_CURRENT_DOCUMENT_NAME “ –title=“SVN commit” –auto-kill`

echo “Commiting $GEDIT_CURRENT_DOCUMENT_PATH” svn ci $GEDIT_CURRENT_DOCUMENT_PATH -m $comment

``

Les options: -Entrée: Document actuel -Sortie: dans le panneau inférieur -Applicabilité: tous les documents

Clairement, j’affiche un popup demandant le commentaire, je le garde dans la variable “\$comment” puis je l’utilise dans la commande “svn ci”. Du coup, le commit s’effectue avec mon commentaire.

//PS: la variable \$GEDIT_CURRENT_DOCUMENT_PATH est assignée par gedit, pour avoir la liste des variables il vous suffit de cliquer sur l’icône d’aide en bas. Allez sur la page qui traite des variables//

Puisque l’option “auto-kill” est donné, si j’annule alors le script se coupe immédiatement, et le commit ne s’effectue pas.

Vous pouvez alors imaginer à peu près tout ce que vous pouvez faire avec ce petit outil… Perso j’ai pas mal d’idées, et vous ?

comments powered by Disqus