Bash-Skripte · 4 min read · Nov 10, 2025
So zeigen Sie GUI-Dialoge in Bash-Skripten mit Zenity an

Wir alle wissen, dass Linux-Bash-Skripte eine echte Stärke von Linux sind. Oft möchten wir in unseren Skripten eine grafische Benutzeroberfläche (GUI) anzeigen, um die Interaktion mit den Benutzern zu erleichtern. GUI macht jedes Skript benutzerfreundlicher und schöner.
Für GTK in Shell-Skripten gibt es viele Optionen und Tools, die in Linux verfügbar sind.
In diesem Artikel zeigen wir Ihnen, wie Sie Zenity verwenden, um GUI-Dialoge in Bash-Skripten anzuzeigen.
Zenity ist eine Open-Source-Anwendung zur Anzeige einfacher GUIs in Shell-Skripten. Es macht Skripte benutzerfreundlicher, indem es GTK+-Dialoge anzeigt. Zenity ist ein praktisches Befehlszeilenwerkzeug für modernes Shell-Scripting. Zenity ist einfach zu bedienen und eine plattformübergreifende Anwendung.
Voraussetzungen
Ein Sudo-Benutzer mit Root-Rechten.
Zenity installieren
Zenity ist Teil des GNOME-Desktops und standardmäßig auf den meisten Linux-Distributionen installiert. Sie können die Zenity-Installation auf Ihrem System überprüfen, indem Sie den folgenden Befehl im Terminal ausführen.
zenity --versionWenn Zenity nicht auf Ihrem System installiert ist, können Sie es mit dem Befehl Apt, dnf oder pacman installieren.
Für Ubuntu/Debian-basierte Systeme:
sudo apt-get install zenityFür RedHat-basierte Systeme:
dnf install zenityFür Arch-basierte Systeme:
pacman -S zenityAllgemeine Optionen von Zenity
Es gibt einige allgemeine Optionen, die unabhängig von Zenity verwendet werden können. Allgemeine Optionen sind –title, –window-icon, –width, –height, –timeout.
Sie können die —title-Option verwenden, um einen Titel für das Dialogfenster anzugeben.
Sie können die –window-icon-Option verwenden, um ein Symbol anzugeben, das als Symbol für das Zenity-Dialogfeld verwendet wird.
Nicht nur das, Sie können Breite und Höhe für das Zenity-Dialogfeld festlegen, indem Sie die Optionen –width und –height im Zenity-Befehl setzen.
Mit der –timeout-Option können Sie eine Zeitüberschreitung für den Dialog festlegen, nach der das Dialogfeld automatisch geschlossen wird.
Zenity-Message-Box
Sie können einige grundlegende und schöne GUI-Nachrichtendialoge mit einem einfachen Zenity-Befehl aus dem Terminal erstellen.
Vier Arten von Nachrichtendialogen sind in Zenity verfügbar.
- Information
- Fehler
- Frage
- Warnung
1. Ein Informationsdialogfeld
Sie können ein Informationsdialogfeld erstellen, indem Sie den folgenden Befehl im Terminal ausführen:
zenity --info --text="Software-Update verfügbar." --width=500
2. Ein Fehlerdialogfeld
Führen Sie den folgenden Befehl aus, um das Fehlerdialogfeld anzuzeigen:
zenity --error --text="Fehler bei der Installation" --title="Fehler" --width=500 --width=200
3. Ein Frage-Dialogfeld
Sie können ganz einfach eine Ja-oder-Nein-Frage stellen, indem Sie den folgenden Befehl ausführen:
zenity --question --text="Möchten Sie den PC neu starten?" --width=200
Sie können den Zenity-Fragedialog in einem Shell-Skript wie folgt verwenden:
#/bin/bash
touch demo.txt
if zenity --question --title="Löschen bestätigen" --text="Sind Sie sicher, dass Sie die Datei demo.txt löschen möchten?" --no-wrap
then
rm demo.txt
zenity --info --title="Erfolg" --text="demo.txt wurde entfernt" --no-wrap
fi4. Ein Warnungsdialogfeld
zenity --warning --title="Update verfügbar" --text="OS-Update erforderlich" --width=200Benachrichtigung
Sie können eine Benachrichtigung mit Zenity anzeigen.
zenity --notification --text "Guten Morgen"Zenity-Eingabefelder
Mit Zenity können Sie einfache Dialogfelder erstellen, die Eingaben vom Benutzer annehmen und als Standardausgabe anzeigen.
Hier sind einige Eingabefelder:
Kalender
Das Kalenderdialogfeld zeigt einen Kalender an und gibt das vom Benutzer ausgewählte Datum als Standardausgabe zurück.
zenity --calendarAusgabe:
17/04/21
Text-Eingabedialog
Sie können die –entry-Option verwenden, um einen Texteingabedialog zu erstellen. Dies ist sehr nützlich, wenn Sie den Benutzer auffordern möchten, einen Text einzugeben.
zenity --entry --title "Benutzerinfo" --text "Bitte geben Sie Ihren Namen ein"Listen-Dialog
Sie können die –list-Option verwenden, um einen mehrspaltigen Dialog zu erstellen. Hier müssen Sie Daten für die Spalte des Listendialogs spaltenweise, zeilenweise eingeben. Sie können Checkboxen oder Radioboxen mit dem Listen-Dialogfeld verwenden, wie unten gezeigt:
zenity --list --title "Prozessor auswählen" --radiolist --column "ID" --column="Name" 1 AMD 2 Intel
Sie können auch Checkboxen mit der –list-Option für mehrere Auswahlmöglichkeiten geben.

zenity --list --title "Pakete" --list --text "Wählen Sie die Pakete aus, die Sie installieren möchten" --checklist --column "id" --column "Name" 1 "Google Chrome" 2 "VLC" 3 "Firefox" 4 "GIMP"Ausgabe
Google Chrome|VLC|FirefoxFarbauswahl-Dialog
Sie können die –color-selection-Option verwenden, um den Benutzer nach einer Farbauswahl zu fragen.
zenity --color-selection --show-paletteDateiauswahl-Dialog
Sie können die –file-selection-Option verwenden, um ausgewählte Dateien oder Verzeichnisse als Standardausgabe zu erfassen. Sie können auch Dateien mit der –file-selection-Option speichern.
zenity --file-selection --multiple --filename "/"
Fortschrittsdialog
Sie können mit der –progress-Option eine schöne Fortschrittsanzeige erstellen. Dies ist oft nützlich, wenn Sie dem Benutzer den Fortschritt Ihrer Anwendung oder Ihres Skripts anzeigen möchten.
Der folgende Befehl zeigt Ihnen die Download-Fortschrittsanzeige.
(wget -r --no-parent patch -A.tar.gz http://157.245.99.119/latest/ -P /tmp 2>&1 ) | sed -u 's/.* \([0-9]\+%\)\ \+\([0-9.]\+\.\) \(.*\)/\1\n# Herunterladen bei \2\/s, ETA \3/' | zenity --progress --title="Datei herunterladen..." --percentage=1 --pulsateFür weitere Fortschrittsoptionen führen Sie den folgenden Befehl im Terminal aus:
zenity --help-progressFür weitere Zenity-Optionen können Sie man Zenity und Zenity –help verwenden.
Fazit
In der obigen Anleitung haben Sie gelernt, wie Sie ein Bash-Skript schreiben können, um GUI-Dialoge mit Zenity anzuzeigen und Bash-Skripte benutzerfreundlicher zu gestalten. Zögern Sie nicht, mich zu fragen, wenn Sie Fragen haben.
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.

