Scripts Linux · 6 min read · Jan 22, 2026

Ajouter une interface graphique simple aux scripts shell Linux avec kdialog

Les scripts shell sont des choses incroyablement utiles. Ils vous permettent de faire quelque chose d’aussi basique que de créer une commande facile pour remplacer une commande plus difficile avec beaucoup de drapeaux, à regrouper de nombreuses commandes complexes à exécuter à partir d’un cron job. Ils sont excellents car vous pouvez les lancer rapidement dans votre terminal préféré, mais dans certains cas, ils nécessitent que vous vous souveniez de combinaisons spécifiques de drapeaux ou d’options. Si vous vous trouvez dans cette situation, vous pouvez ajouter quelques dialogues GUI simples pour vous aider à accélérer votre tâche.

Pour profiter de ce tutoriel, vous aurez besoin des éléments suivants :

  • Accès à un shell de type Unix (celui-ci est écrit en pensant à bash).
  • macOS et les systèmes d’exploitation *nix (comme Linux) devraient venir avec cela ou un similaire.
  • Sur Windows, vous pourriez installer l’environnement CygWin, ou sur les versions récentes de Windows 10, utiliser le “Windows Subsystem for Linux”
  • Les bibliothèques de base pour l’environnement de bureau KDE. Vous n’avez pas besoin de l’ensemble, surtout si vous avez déjà un autre DE installé.

L’installation de kdialog ne devrait être nécessaire que si vous avez commencé avec un environnement de bureau autre que KDE, et que vous n’avez pas d’autres applications KDE sur votre machine. Il fait partie du paquet kde-baseapps-bin sur Ubuntu, ce qui signifie qu’il est installé par défaut sur Kubuntu. Sur d’autres dérivés, vous pouvez l’installer avec la commande suivante dans le terminal :

Installation de kdialog depuis le terminal.

sudo apt-get install kde-baseapps-bin

Cela entraînera probablement une installation de taille considérable, car d’autres bibliothèques et paquets KDE seront installés avec. Mais bon, l’espace disque est bon marché, non ?

Puisque les scripts sont (en général) censés faire des choses automatiquement, nous n’aurons besoin d’afficher ce dialogue que dans les situations suivantes :

  • Si nous devons capturer une sorte d’entrée de l’utilisateur, ou ;
  • Si nous voulons montrer à l’utilisateur une sorte de retour d’information de manière notable (c’est-à-dire pas juste un texte craché à la ligne de commande).

Prenons l’exemple d’utiliser une commande pour [sauvegarder votre site Drupal en utilisant drush]. Bien sûr, puisque vous êtes un entrepreneur Internet en herbe, vous n’avez pas qu’un seul site Drupal—? vous en avez trois. Vous préféreriez ne pas avoir à exécuter des commandes séparées lorsque vous souhaitez sauvegarder tous vos sites, mais en même temps, vous ne voulez pas avoir à vous souvenir d’un long chemin si vous souhaitez prendre un instantané d’un seul. Nous pouvons utiliser quelques dialogues pour nous aider en :

  • Présentant à l’utilisateur une liste de sites que nous pouvons sauvegarder, et lui demandant de faire un choix, et ;
  • Montrant à l’utilisateur un message confirmant le résultat, que ce soit un succès ou un échec.

kDialog fonctionne en l’appelant à la ligne de commande avec un type de dialogue, tous les paramètres que ce type peut nécessiter, et d’autres options telles qu’un titre de dialogue.

Il existe une bonne variété de types de dialogues parmi lesquels choisir en fonction de vos besoins, comme suit :

Types de kDialog

Type de dialogueImage d’exempleDescription
Boîtes de message d’informationAffiche une boîte avec un bouton “OK” pour fermer, fournissant un message texte et soit une icône d’information “non critique”, d’avertissement ou d’erreur.
Pop-up passifCela affiche un message qui disparaîtra dans quelques secondes, c’est-à-dire qu’il ne nécessite pas que l’utilisateur le ferme ou le rejette.
Boîte de message Oui/NonComme les “Boîtes de message d’information”, cela affiche un dialogue avec une icône d’information/d’avertissement/d’erreur qui fournira également la sélection de l’utilisateur “Oui” ou “Non”.
Boîtes de dialogue d’entréeCela fournit une seule boîte dans laquelle l’utilisateur peut taper du texte.
Boîtes d’affichage de fichiersCela affichera le contenu d’un fichier (texte brut) dans une boîte de dialogue.
Boîtes de dialogue de menu et de sélectionCela fournit un dialogue avec une liste d’éléments, permettant à l’utilisateur de faire une ou plusieurs sélections : - Les dialogues de menu et de liste radio permettent la sélection d’une option. - Le dialogue de liste de contrôle permet la sélection d’une, plusieurs ou de toutes les options. - Le dialogue de boîte combinée permet la sélection d’une option à l’aide d’un menu déroulant.
Boîtes de dialogue de sélection de fichiersL’utilisateur peut sélectionner une partie du système de fichiers, y compris : - Sélectionner des fichiers existants, avec la possibilité de filtrer par nom ou type de fichier - Entrer un nouveau nom d’un nouveau fichier à enregistrer/mettre à jour - Répertoires
Dialogues de progressionL’utilisateur peut combiner kDialog avec la commande dcop pour créer un dialogue qui informe l’utilisateur de l’avancement d’une opération.

En examinant les options ci-dessus, deux d’entre elles se démarquent comme ayant du potentiel :

  • Le “Dialogue de liste de contrôle” nous permettra de sélectionner un, ou tous, de nos sites à sauvegarder.
  • La “Boîte de message d’information” peut être utilisée pour afficher si chacun d’eux a réussi ou échoué.

Étant donné ces options, nous pouvons imaginer notre script ressemblant à quelque chose comme ceci :

SITE1 est situé ICI (faites ces chemins complets, pas des chemins relatifs)
SITE2 est situé LÀ
SITE3 est situé DANS UN AUTRE ENDROIT

display a kDialog with SITE1, SITE2, and SITE3 as options
    and tell me which one(s) the user picks

for each one the user picked:
    run +drush ard+ on that site, and
    record whether it was successful or not.

display another +kDialog+ with each of those results.

Avec cela en tête, plongeons directement.

La première chose que nous devrions faire est d’assembler la commande drush que nous voulons appliquer à chaque site lorsqu’il est sélectionné. Supposons que tous les sites soient sur le même hébergeur web dans différents répertoires, mais que nous souhaitions stocker les sauvegardes dans un répertoire “backup” commun. Nous pouvons utiliser ce qui suit :

cd SITE
drush ard --destination=/home/user/backup/SITENAME.tar.gz

Donc, en utilisant vos connaissances sur la définition de variables et les boucles for, nous pouvons faire ce script comme suit :

#! /bin/bash

// Remarque : créez des variables pour contenir les chemins vers tous les sites
PERSONALSITE='/home/www/mypersonalsite/'
BUSINESSSITE='/home/www/mybusinesssite/'
HOBBYSITE='/home/www/myhobbysite/'

// Remarque : créez une variable pour contenir le chemin vers la destination
DESTINATION='/home/user/backup'

// Remarque : affichez un dialogue demandant à l'utilisateur de sélectionner quels sites sauvegarder
CHOICES=$(kdialog --checklist "Sélectionnez les sites à sauvegarder:" 1 "Site personnel" off 2 "Site commercial" off 3 "Site de loisir" off)

// Remarque : enregistrez un message de succès/échec pour chacun des choix retournés par le dialogue
for each in $CHOICES
do
    case {
        1)
            cd $PERSONALSITE
            drush ard --destination=$DESTINATION/mypersonalsite.tar.gz
            if [$?=="0"]
            then
                RESULTS += "Sauvegarde du site personnel : Réussi\n"
            else
                RESULTS += "Sauvegarde du site personnel : Échoué\n"
            fi
        2)
            cd $BUSINESSSITE
            drush ard --destination=$DESTINATION/mybusinesssite.tar.gz
            if [$?=="0"]
            then
                RESULTS += "Sauvegarde du site commercial : Réussi\n"
            else
                RESULTS += "Sauvegarde du site commercial : Échoué\n"
            fi
        3)
            cd $HOBBYSITE
            drush ard --destination=$DESTINATION/myhobbysite.tar.gz
            if [$?=="0"]
            then
                RESULTS += "Sauvegarde du site de loisir : Réussi\n"
            else
                RESULTS += "Sauvegarde du site de loisir : Échoué\n"
            fi
    esac

// REMARQUE : affichez un dialogue avec les résultats de toutes les opérations de sauvegarde.
kdialog --msgbox $RESULTS

Si nous sauvegardons cela et que nous le rendons exécutable comme décrit dans le premier article de la série Bash, nous pourrons l’exécuter avec une seule commande, obtenir un dialogue facile à utiliser pour choisir notre site, puis voir une belle fenêtre rapportant comment tout s’est passé.

Bien que ce script puisse certainement être optimisé de plusieurs manières, il démontre comment vous pouvez utiliser kdialog pour collecter des entrées utilisateur et afficher des résultats en exécutant un seul programme dans votre script.

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.