Linux & Systèmes PDF Gratuit

Cours Programmation ShellScript GUI en PDF (Intermédiaire)

Programmation ShellScript GUI : Ce qu'il faut savoir. Programmation d'interfaces graphiques pour scripts shell en exploitant des programmes de dialogue (dialog, Xdialog, zenity, gdialog, kdialog) afin d'ajouter des boîtes de dialogue et des assistants aux scripts Bash. L'intégration d'une IHM console ou X améliore l'ergonomie des outils d'administration et des utilitaires utilisateur, utile pour automatiser des tâches tout en conservant une interaction contrôlée. Ce document est fourni au format PDF et disponible en distribution libre pour consultation et réutilisation.

Installation des outils

Sur les distributions Debian/Ubuntu, installer les paquets courants avec :

sudo apt update
sudo apt install dialog xdialog zenity kdialog

Sur d'autres distributions, utiliser le gestionnaire de paquets adapté (dnf, pacman, zypper). Vérifier la présence des binaires avant utilisation pour garantir la portabilité.

🎯 Ce que vous allez apprendre

  • Utiliser dialog et Xdialog — comprendre les boîtes proposées (--inputbox, --msgbox, --checklist, --radiolist, --textbox, --logbox, --gauge, --fselect, --calendar, --timebox) et leurs paramètres de dimension. Choisir la boîte adaptée à un flux utilisateur et produire des scripts robustes qui affichent et récupèrent des données de manière cohérente.
  • Détecter l'environnement d'exécution — identifier si le script s'exécute en mode X ou en console via $DISPLAY et $TERM, et basculer entre Xdialog et dialog en testant la présence des binaires. Cette détection permet d'écrire un seul script portable, utilisable sur terminal et en session graphique.
  • Récupération des données et gestion des codes de retour — maîtriser la substitution de commande $(commande), la redirection vers des fichiers temporaires et l'interprétation du code de sortie ($?) pour distinguer OK, Cancel et Close. Stocker et valider les saisies utilisateur et enchaîner les boîtes de dialogue en gestion d'erreur.
  • Flux et synchronisation de boîtes (chaînage) — enchaîner des dialogues avec && et ||, utiliser l'option --stdout et configurer des wizards (--wizard) pour des parcours multi-étapes. Composer des assistants et des séquences interactives sans bloquer le traitement principal.
  • Bonnes pratiques shell pour IHM — création sécurisée de fichiers temporaires avec mktemp, nettoyage automatique via trap, et protection contre les espaces via guillemets. Ces techniques réduisent les fuites et garantissent des scripts sûrs et maintenables.
  • Exemples pratiques et cas d'usage — études de cas fournies : checklist/textbox, logbox, et un « kill graphique » qui sélectionne et envoie un signal aux processus utilisateur. Extraits de code inclus pour réutilisation et adaptation.

Outils alternatifs : Zenity et Kdialog

Pour les environnements de bureau, Zenity (basé sur GTK+) et KDialog (pour KDE) offrent des boîtes de dialogue graphiques conformes aux styles des DE et conviennent mieux qu'un wrapper Xdialog lorsqu'une interface native est souhaitée. Ces outils produisent des dialogues standard (fichiers, notifications, boîtes d'alerte) et facilitent l'intégration visuelle dans GNOME ou KDE.

Avant d'adopter un outil, vérifier la distribution cible et la dépendance graphique : pour des scripts portables, prévoir une détection et un fallback vers dialog en mode console.

Comparatif : Dialog vs Zenity pour vos scripts

Dialog (ncurses) convient aux environnements console et aux sessions SSH ; il est léger et utilisable sans X. Zenity fournit des boîtes graphiques GTK+ plus adaptées aux utilisateurs de bureau et aux interactions avec la souris. Le choix dépend du contexte d'exécution : privilégier dialog pour les outils système sans X et Zenity/KDialog pour une intégration native dans GNOME/KDE.

Pourquoi choisir ce cours de scripts Bash GUI ?

Le document favorise l'approche par l'exemple : extraits de scripts réutilisables, cas concrets et une annexe montrant un traitement réel (wget/awk). L'auteur, Thierry Vaira, présente des scripts complets et des motifs reproductibles pour les administrateurs système et développeurs d'outils. Accessibilité et bonnes pratiques sont abordées : navigation clavier, étiquetage explicite des champs et vérification de compatibilité avec lecteurs d'écran (ex. Orca) lors du déploiement sur postes utilisateurs.

Exemples de scripts Bash avec interface graphique

  • Kill graphique — sélectionner un processus et envoyer un signal.
  • Gestion de logs — affichage et filtrage interactif via --textbox et --logbox.
  • Saisie utilisateur — formulaires simples avec validation, stockage sécurisé en fichier temporaire.

📑 Sommaire du document

  • Les interfaces graphiques
  • La commande dialog
  • La commande Xdialog
  • Identifier le terminal
  • Récupérer des données
  • Checklist et Textbox
  • Logbox
  • Un kill graphique

👤 À qui s'adresse ce cours ?

  • Public cible : administrateurs système, développeurs d'outils d'administration et utilisateurs avancés Linux souhaitant fournir une IHM simple à des scripts Bash pour faciliter l'interaction humaine.
  • Prérequis : maîtrise des bases du shell Bash (variables, substitution, tests, case), familiarité avec la ligne de commande Unix, connaissance élémentaire des processus et des signaux (kill), et capacité à lire/adapter des scripts existants.

❓ Foire Aux Questions (FAQ)

Comment détecter si un script doit utiliser Xdialog ou dialog ?

Tester la variable d'environnement $DISPLAY et la variable $TERM permet de décider d'exécuter Xdialog (session X) ou dialog (console). Il est conseillé de vérifier aussi la présence du binaire via which Xdialog ou which dialog avant l'appel, et de prévoir un fallback en cas d'absence.

Comment récupérer proprement la saisie d'une inputbox et gérer l'annulation ?

Utiliser --stdout ou rediriger la sortie vers un fichier temporaire créé par mktemp, puis tester le code de sortie ($?) avec case pour distinguer 0 (OK), 1 (Cancel) et 255 (Closed). Utiliser trap pour garantir la suppression du fichier temporaire en sortie.