Apprendre par l'exemple
Six scripts shell autonomes, à lire, à lancer et à copier : du formulaire simple à l'outil d'administration complet. Rien à installer de plus que gtk3sermo.
Le paquet gtksermo installe la commande gtkdialog
comme un lien vers gtk3sermo : les deux noms désignent le
même binaire. La même fenêtre, décrite une seule fois en
XML, s'ouvre à l'identique par les deux commandes — vos scripts gtkdialog
fonctionnent tels quels. Et gtk4sermo lit exactement le même
XML : les cinq scripts ci-dessous tournent sur les trois ports sans une
ligne modifiée.
$ ls -l /usr/bin/gtkdialog
lrwxrwxrwx 1 root root 10 /usr/bin/gtkdialog -> gtk3sermo
$ md5sum /usr/bin/gtk3sermo /usr/bin/gtkdialog
bc52d918… /usr/bin/gtk3sermo
bc52d918… /usr/bin/gtkdialog # même empreinte = même fichier
$ gtkdialog --version
gtk3sermo (sermo) version 1.1.1
Le dépôt embarque un banc de repères visuels : cinq scripts shell autonomes, un par famille de widgets. Rien à installer, rien à configurer : on les lance, la fenêtre s'ouvre. Ce sont eux qui ont produit les captures de la page d'accueil.
| Script | Ce qu'il montre |
|---|---|
01-formulaire.sh | Champ de saisie, mot de passe masqué, compteur, case à cocher, liste déroulante, cadres imbriqués |
02-conteneurs.sh | Colonnes, zone extensible, bandeau pleine largeur, répartition de l'espace |
03-onglets.sh | Onglets latéraux et contenu multiligne |
04-indicateurs.sh | Barre de progression, glissières, jauge de niveau, compteur, indicateur d'activité |
05-boutons-icones.sh | Icônes du thème par leur nom, boutons à icône, alignements |
Ils sont dans le dépôt, sous examples/showcase/, et le paquet les installe dans
/usr/share/doc/gtk3sermo/examples/showcase/. Ils sont dans le domaine public (CC0-1.0) :
copiez-les, découpez-les, republiez-les sans condition.
Les cinq scripts ci-dessus montrent les widgets un par un. Celui-ci montre ce qu'on obtient quand on les assemble : un outil d'administration à six onglets, qui relève de vraies données système et exécute de vraies actions. Un seul script shell, aucune ligne de C.
Ce qu'il enseigne, et qu'aucun autre exemple ne montre : le
motif --do. Une action gtk3sermo s'exécute dans un sous-shell, elle ne
peut donc pas appeler une fonction du script. La solution est que le script se rappelle
lui-même, et les valeurs des champs lui arrivent par l'environnement. C'est la façon propre
d'écrire un programme gtk3sermo qui dépasse la boîte de dialogue.
Debian et dérivées uniquement. Il appelle
apt, dpkg et journalctl : il vérifie le système au lancement et
refuse proprement ailleurs, plutôt que d'afficher des onglets vides. Le bureau, lui, n'a pas
d'importance : terminal et éditeur sont détectés parmi ceux installés.
Côté sécurité, ce qui est réellement fait : toute élévation
passe par pkexec, jamais sudo dans une interface graphique ; l'aide en ligne
n'accepte qu'une commande d'une liste blanche comparée à l'identique ; l'onglet Fichiers ne travaille
que sur une liste fermée de chemins, revérifiée avant chaque ouverture, y compris en
root.