Linux GUI · 5 min read · Jan 22, 2026

Hinzufügen einer einfachen GUI zu Linux-Shell-Skripten mit kdialog

Shell-Skripte sind unglaublich nützliche Dinge. Sie ermöglichen es Ihnen, etwas so Einfaches wie das Erstellen eines einfachen Befehls zu tun, um einen schwierigeren mit vielen Flags zu ersetzen, bis hin zu vielen komplexen Befehlen, die von einem Cron-Job ausgeführt werden. Sie sind großartig, weil Sie sie schnell in Ihrem bevorzugten Terminal ausführen können, aber in einigen Fällen müssen Sie sich an spezifische Kombinationen von Flags oder Optionen erinnern. Wenn Sie sich in dieser Situation befinden, können Sie einige einfache GUI-Dialoge hinzufügen, um Ihnen zu helfen, schneller durch die jeweilige Aufgabe zu kommen.

Um dieses Tutorial nutzen zu können, benötigen Sie Folgendes:

  • Zugriff auf eine Unix-ähnliche Shell (dies ist mit bash im Hinterkopf geschrieben).
  • macOS und *nix-Betriebssysteme (wie Linux) sollten dies oder etwas Ähnliches mitbringen.
  • Unter Windows könnten Sie die CygWin-Umgebung installieren oder in neueren Versionen von Windows 10 das “Windows-Subsystem für Linux” verwenden.
  • Die Basisbibliotheken für die KDE-Desktop-Umgebung. Sie benötigen nicht das gesamte Paket, insbesondere wenn Sie bereits eine andere DE installiert haben.

Die Installation von kdialog sollte nur erforderlich sein, wenn Sie mit einer Desktop-Umgebung anders als KDE begonnen haben und keine anderen KDE-Anwendungen auf Ihrem Rechner installiert sind. Es ist Teil des Pakets kde-baseapps-bin auf Ubuntu, was bedeutet, dass es standardmäßig auf Kubuntu installiert ist. Auf anderen Derivaten können Sie es mit dem folgenden Befehl im Terminal installieren:

Installation von kdialog über das Terminal.

sudo apt-get install kde-baseapps-bin

Dies wird wahrscheinlich zu einer umfangreichen Installation führen, da andere KDE-Bibliotheken und -Pakete zusammen mit ihm installiert werden. Aber hey, Speicherplatz ist günstig, oder?

Da Skripte (im Allgemeinen) dazu gedacht sind, Dinge automatisch zu tun, müssen wir diesen Dialog nur in den folgenden Situationen anzeigen:

  • Wenn wir eine Art Eingabe vom Benutzer erfassen müssen, oder;
  • Wenn wir dem Benutzer eine Art Rückmeldung auf auffällige Weise zeigen möchten (d.h. nicht nur ein Text, der an der Kommandozeile ausgegeben wird).

Nehmen wir das Beispiel, einen Befehl zu [backup your Drupal site using drush]. Natürlich, da Sie ein aufstrebender Internetunternehmer sind, haben Sie nicht nur eine Drupal-Seite—? Sie haben drei. Sie möchten nicht separate Befehle ausführen müssen, wenn Sie alle Ihre Seiten sichern möchten, aber gleichzeitig möchten Sie sich nicht an einen langen Pfad erinnern müssen, wenn Sie nur einen Snapshot einer bestimmten Seite machen möchten. Wir können ein paar Dialoge verwenden, um uns zu helfen, indem wir:

  • Dem Benutzer eine Liste von Seiten präsentieren, die wir sichern können, und ihn bitten, eine Auswahl zu treffen, und;
  • Dem Benutzer eine Nachricht anzeigen, die das Ergebnis bestätigt, ob es ein Erfolg oder ein Misserfolg war.

kDialog funktioniert, indem es an der Kommandozeile zusammen mit einem Dialogtyp, allen Parametern, die dieser Typ benötigen könnte, und anderen Optionen wie einem Dialogtitel aufgerufen wird.

Es gibt eine gute Auswahl an Dialogtypen, aus denen Sie je nach Ihren Bedürfnissen wählen können, wie folgt:

kDialog-Typen

DialogtypBeispielbildBeschreibung
InformationsnachrichtenschachtelnZeigt eine Box mit einer “OK”-Schaltfläche zum Schließen an, die eine Textnachricht und entweder ein “nicht kritisches” Informations-, Warn- oder Fehler-Icon bereitstellt.
Passive Pop-upDies zeigt eine Nachricht an, die innerhalb weniger Sekunden verschwindet, d.h. sie erfordert nicht, dass der Benutzer sie schließt oder abweist.
Ja/Nein-NachrichtenschachtelWie die “Informationsnachrichtenschachteln” zeigt dies einen Dialog mit einem Informations-/Warn-/Fehler-Icon an, das auch die Auswahl des Benutzers von “Ja” oder “Nein” bereitstellt.
EingabedialogschachtelnDies bietet eine einzelne Box, in die der Benutzer etwas Text eingeben kann.
DateianzeigeschachtelnDies zeigt den Inhalt einer (Text-)Datei innerhalb eines Dialogfelds an.
Menü- und Auswahl-DialogschachtelnDies bietet einen Dialog mit einer Liste von Elementen, die es dem Benutzer ermöglichen, eine oder mehrere Auswahl zu treffen: - Die Menü- und Radioliste-Dialoge erlauben die Auswahl einer Option. - Der Checkliste-Dialog erlaubt die Auswahl einer, mehrerer oder aller Optionen. - Der Kombinationsfeld-Dialog erlaubt die Auswahl einer Option über ein Dropdown-Menü.
Dateiauswahl-DialogschachtelnDer Benutzer kann einen Teil des Dateisystems auswählen, einschließlich: - Auswahl vorhandener Dateien, mit der Möglichkeit, nach Name oder Dateityp zu filtern - Eingabe eines neuen Namens für eine neue Datei, die gespeichert/aktualisiert werden soll - Verzeichnisse
FortschrittsdialogeDer Benutzer kann kDialog mit dem dcop-Befehl kombinieren, um einen Dialog zu erstellen, der den Benutzer über den Fortschritt einer Operation informiert.

Wenn wir uns die oben genannten Optionen ansehen, stechen zwei von ihnen als vielversprechend hervor:

  • Der “Checkliste-Dialog” ermöglicht es uns, eine oder alle unserer Seiten zur Sicherung auszuwählen.
  • Die “Informationsnachrichtenschachtel” kann verwendet werden, um anzuzeigen, ob jede dieser Seiten erfolgreich oder fehlgeschlagen ist.

Angesichts dieser Optionen können wir uns vorstellen, dass unser Skript folgendermaßen aussieht:

SITE1 befindet sich HIER (machen Sie diese vollständigen Pfade, keine relativen Pfade)
SITE2 befindet sich DA
SITE3 befindet sich AN EINER ANDEREN STELLE

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.

Mit diesem Gedanken im Hinterkopf, lassen Sie uns gleich loslegen.

Das erste, was wir tun sollten, ist, den drush-Befehl zusammenzustellen, den wir auf jede Seite anwenden möchten, wenn sie ausgewählt wird. Angenommen, alle Seiten befinden sich auf demselben Webhost in verschiedenen Verzeichnissen, aber wir möchten die Backups in einem gemeinsamen “backup”-Verzeichnis speichern. Wir können Folgendes verwenden:

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

Also können wir, basierend auf Ihrem Wissen über Variablen und Schleifen, dieses Skript wie folgt erstellen:

#! /bin/bash

// Hinweis: Erstellen Sie Variablen, um die Pfade zu allen Seiten zu halten
PERSONALSITE='/home/www/mypersonalsite/'
BUSINESSSITE='/home/www/mybusinesssite/'
HOBBYSITE='/home/www/myhobbysite/'

// Hinweis: Erstellen Sie eine Variable, um den Pfad zum Ziel zu halten
DESTINATION='/home/user/backup'

// Hinweis: Zeigen Sie einen Dialog an, der den Benutzer fragt, welche Seiten gesichert werden sollen
CHOICES=$(kdialog --checklist "Wählen Sie die zu sichernden Seiten:" 1 "Persönliche Seite" aus 2 "Geschäftsseite" aus 3 "Hobbyseite" aus)

// Hinweis: Protokollieren Sie eine Erfolgs-/Fehlermeldung für jede der aus dem Dialog zurückgegebenen Auswahlmöglichkeiten
for each in $CHOICES
do
    case {
        1)
            cd $PERSONALSITE
            drush ard --destination=$DESTINATION/mypersonalsite.tar.gz
            if [$?=="0"]
            then
                RESULTS += "Backup der persönlichen Seite: Erfolgreich\n"
            else
                RESULTS += "Backup der persönlichen Seite: Fehlgeschlagen\n"
            fi
        2)
            cd $BUSINESSSITE
            drush ard --destination=$DESTINATION/mybusinesssite.tar.gz
            if [$?=="0"]
            then
                RESULTS += "Backup der Geschäftsseite: Erfolgreich\n"
            else
                RESULTS += "Backup der Geschäftsseite: Fehlgeschlagen\n"
            fi
        3)
            cd $HOBBYSITE
            drush ard --destination=$DESTINATION/myhobbysite.tar.gz
            if [$?=="0"]
            then
                RESULTS += "Backup der Hobbyseite: Erfolgreich\n"
            else
                RESULTS += "Backup der Hobbyseite: Fehlgeschlagen\n"
            fi
    esac

// HINWEIS: Zeigen Sie einen Dialog mit den Ergebnissen aller Backup-Operationen an.
kdialog --msgbox $RESULTS

Wenn wir dies speichern und es so ausführen, wie im ersten Artikel der Bash-Serie beschrieben, können wir einen einzigen Befehl ausführen, einen benutzerfreundlichen Dialog zur Auswahl unserer Seite erhalten und dann ein schönes Fenster sehen, das zurückmeldet, wie alles gelaufen ist.

Obwohl dieses Skript sicherlich auf verschiedene Weise optimiert werden kann, zeigt es, wie Sie kdialog verwenden können, um einige Benutzereingaben zu sammeln und einige Ergebnisse anzuzeigen, indem Sie ein einzelnes Programm innerhalb Ihres Skripts ausführen.

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.