URL: https://linuxfr.org/users/olibre/journaux/retour-a-l-interface-console Title: Retour à l'interface Console Authors: olibre Date: 2013年08月04日T02:39:36+02:00 License: CC By-SA Tags: xdialog, gui, interface, dialog, zenity, cdialog et kdialog Score: 33 Chers geekettes et geeks Par erreur j'ai effacé mon ~~script~~ bricolage shell qui m'était utile pour détecter/supprimer mes fichiers dupliqués. Je décide donc de le refaire en mieux => quitte à faire mieux, faisons des choix techniques bien réfléchis. D'abord le langage : 1. Python 3 est bien mature => Mais quelle interface graphique prendre ? 2. [Rust est potentiellement LE langage d'avenir](http://linuxfr.org/users/guiea_7/journaux/sortie-de-rust-0-7) => Mais est-ce que l'API permet de le faire facilement ? 3. webapp (JavaScript) pour être le plus portable possible même pour FirefoxOS => Mais l'API JavaScript ne semble pas adaptée pour comparer le contenu de fichiers... 4. Ruby est le langage préféré des webmaster LinuxFr 5. Go reçoit le soutien financier d'une grosse entreprise compétente dans ses choix techniques (Google) 6. ... Puis, le choix de l'interface graphique : 1. EFL 3. Qt 2. GTK+ 4. ... et je tombe sur [PyZenity](https://pypi.python.org/pypi/PyZenity) Découverte : un [script shell peut avoir une interface graphique](http://stackoverflow.com/a/17750534) avec [`zenity`](http://doc.ubuntu-fr.org/zenity). Mais aussi avec [`yad`](http://code.google.com/p/yad/)... Allez, voici donc la petite histoire : Au tout début (le début des année 90), il y avait [dialog](http://en.wikipedia.org/wiki/Dialog_%28software%29) qui permettait aux scripts shell, déjà à l'époque, d'afficher de jolis écrans ASCII en utilisant `curses`, puis `ncurses`. Plein de projets s'en inspirèrent, citons en quelques uns : - [`cdialog`](http://freecode.com/projects/cdialog) qui semble toujours actif depuis 20 ans et qui est l'origine d'une erreur d'orthographe (_guage_ à la place de _gauge_) que se traine depuis le `man dialog` pour compatibilité ! - [`xdialog`](http://xdialog.free.fr/) (admirez le beau site web) est un port vers GTK+ - `gdialog` que [ploum nous présentait](http://linuxfr.org/users/ploum/journaux/petit-script-avec-gdialog) il y a 10 ans déjà ! - [`kdialog`](http://techbase.kde.org/Development/Tutorials/Shell_Scripting_with_KDE_Dialogs#Example_7:_Password_Dialog_with_Title) Pas de jalou, KDE a aussi droit à son `gdialog`. - ['zenity`](http://en.wikipedia.org/wiki/Zenity) apporte pas mal de nouveautés et dépasse les précédentes solutions graphiques. - [`yad`](http://code.google.com/p/yad/) apparait (fork) lors que le projet `zenity` est inactif. `yad` commence par supprimer la dépendance à des bibliothèques obsolètes et apporte progressivement de nouvelles fonctionnalité. Depuis, `zenity` s'est réveillé et les deux projets sont tous deux actifs mais ont tendance à partir dans des directions quelques fois différentes. - [`whiptail`](http://en.wikibooks.org/wiki/Bash_Shell_Scripting/Whiptail) est le véritable concurrent de `dialog`. Tous les autres projets présentés ci-dessus apportent une interface graphique. Mais pour l'affichage ASCII, `dialog` régnait en maître. `whiptail` est l’œuvre du projet Debian afin d'obtenir des installeur moins gourmand en mémoire (en réduisant les possibilités et en utilisant `newt` à la place de `ncurses` par exemple). Mais Thomas Dickey, le mainteneur de `dialog` défend son bébé et voici ce qu'il a écrit en substance dans le [`man dialog`](http://www.thelinuxblog.com/linux-man-pages/1/dialog#lbAR) :> C'est alors qu'il y a `whiptail`. > Sa documentation prétend que c'est un (a) remplaçant plus léger à `dialog` et (b) qu'il est compatible avec `dialog` à part quelques fonctionnalités. > Le (a) est faux en comparant le tailles actuelles (Debian 2007). Le total pour `whiptail`, `newt`, `popt` et `slang` est de 757 Kio. `dialog` et `ncurses` totalisent 520 Kio. > Le (b) est trompeur car `whiptail` ne supporte pas les options génériques de `dialog`. En fait, `whiptail` est d'avantage compatible avec le `dialog` de 1994 ([v0.4](http://invisible-island.net/dialog/)) qu'avec le `dialog` d'aujourd'hui. J'ai donc décidé de revenir au langage shell (`bash`) et de tester ces différentes alternatives. Et comme j'aime utiliser la console, mon ~~script~~ bricolage se lance à la ligne de commande. Et donc, c'est plus logique de rester avec une interface en mode console. L'interface console est d'ailleurs plus pratique et plus efficace. Peut être moins _joli_, mais ça fait bien son job :-) **Et c'est `dialog` qui a gagné !** Est-ce que ce journal vous a plu ? Est-ce que ça vaut le coup de s'en inspirer pour écrire une Dépêche ? (la partie _historique_) Quels sont vos expériences sur les interfaces ? graphique ou console ? Quel langage auriez vous utilisé pour pour détecter des fichiers dupliqués et aider l'utilisateur à choisir lesquels à effacer ?