So zeigen Sie GUI-Dialoge in einem Bash-Skript 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 unter Linux viele Optionen und Werkzeuge.

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 von einfachen GUI in Shell-Skripten. Es macht Skripte benutzerfreundlicher, indem es GTK+-Dialoge anzeigt. Zenity ist ein praktisches Kommandozeilen-Tool 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 ein Teil des GNOME-Desktops und wird standardmäßig auf den meisten Linux-Distributionen installiert. Sie können die Installation von Zenity auf Ihrem System überprüfen, indem Sie den folgenden Befehl im Terminal ausführen.

zenity --version

Wenn 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 zenity

Für RedHat-basierte Systeme:

dnf install zenity

Für Arch-basierte Systeme:

pacman -S zenity

Zenity Allgemeine Optionen

Es gibt einige allgemeine Optionen, die mit Zenity unabhängig voneinander verwendet werden können. Allgemeine Optionen sind –title, –window-icon, –width, –height, –timeout

Mit der Option –title können Sie einen Titel für das Dialogfenster angeben.

Mit der Option –window-icon können Sie ein Symbol festlegen, das als Symbol für das Zenity-Dialogfenster verwendet wird.

Darüber hinaus können Sie mit den Optionen –width und –height im Zenity-Befehl die Breite und Höhe der Zenity-Dialogbox festlegen.

Mit der Option –timeout können Sie einen Timeout des Dialogs einstellen, nach dem die Dialogbox automatisch geschlossen wird.

Zenity-Nachrichtenfeld

Mit einem einfachen Zenity-Befehl aus dem Terminal können Sie einige einfache und schöne GUI-Meldungsdialoge erstellen.

Vier Arten von Meldungsdialogen 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 Available." --width=500

Infotext-Dialog mit Bash-Skript anzeigen

2. Ein Fehlerdialogfeld

Führen Sie den folgenden Befehl aus, um ein Fehlerdialogfeld anzuzeigen

zenity --error --text="Error In Installation" --title="Error" --width=500 --width=200

Fehlerdialog mit Bash-Skript anzeigen

3. Ein Frage-Dialogfeld

Sie können einfach eine Ja- oder Nein-Frage stellen, indem Sie den folgenden Befehl ausführen:

zenity --question --text="Do you want to reboot pc?" --width=200

Dialogfelder in der Bash
Sie können Zenity Question Dialog in einem Shell-Skript wie diesem verwenden:

#/bin/bash
touch demo.txt
if zenity --question --title="Confirm deletion" --text="Are you sure you want to demo.txt file?" --no-wrap
    then
    rm demo.txt
    zenity --info --title="Success" --text="demo.text was removed" --no-wrap
fi

4. Ein Warn-Dialogfeld

zenity --warning --title="Update Available" --text="OS Update required" --width=200

Bash-Dialogfeld "Warnung anzeigen

Benachrichtigung

Sie können mit Zenity eine Benachrichtigung anzeigen.

zenity --notification --text "Good Morning"

Anzeigen von Desktop-Benachrichtigungen in GNOME mit Bash-Skripten

Zenity-Eingabefelder

Mit Zenity können Sie einfache Dialogboxen erstellen, die Eingaben des Benutzers entgegennehmen und als Standardausgabe anzeigen.

Hier sind einige Eingabefelder:

Kalender

Kalender-Dialogboxen zeigen einen Kalender an und geben das vom Benutzer ausgewählte Datum als Standardausgabe zurück.

zenity --calendar
Output:
17/04/21

Kalendereingabe aus Bash-Skript

Texteingabe-Dialog

Mit der Option –entry können Sie einen Texteingabe-Dialog erstellen. Er ist sehr nützlich, wenn Sie den Benutzer auffordern wollen, einen Text einzugeben.

zenity --entry --title "User Info" --text "Please enter your name"

Listendialog

Sie können die Option –list verwenden, um einen mehrspaltigen Dialog zu erstellen. Hier müssen Sie die Daten für den Listendialog spaltenweise und zeilenweise eingeben. Sie können ein Kontrollkästchen oder eine Rediobox mit einem Listendialog verwenden, wie unten gezeigt:

zenity --list  --title "Choose Processor" --radiolist  --column "ID" --column="Name" 1 AMD 2 Intel

Dialogfeld "Liste

Sie können auch ein Kontrollkästchen mit der Option –Liste für die Mehrfachauswahl verwenden.

Checkbox-Optionen mit der Bash

zenity --list --title "Packages" --list  --text "select packages you want to install" --checklist --column "id"  --column "Name" 1 "Google Chrome" 2 "VLC" 3 "Firefox" 4 "GIMP"
Output
Google Chrome|VLC|Firefox

Farbauswahldialog

Sie können die Option –color-selection verwenden, um den Wert für die Farbauswahl vom Benutzer zu übernehmen.

zenity --color-selection --show-palette

Bash-Skript Farbwähler

Dialogfeld „Dateiauswahl

Sie können die Option –file-selection verwenden, um ausgewählte Dateien oder Verzeichnisse als Standardausgabe zu erfassen. Mit der Option –file-selection können Sie auch eine Datei speichern.

zenity --file-selection --multiple --filename "/"

Dateiauswahlbox aus der Bash öffnen

Fortschrittsdialog

Mit der Option –progress können Sie einen schönen Fortschrittsbalken erstellen. Dies ist oft nützlich, wenn Sie dem Benutzer einen Fortschrittsbalken für die Fertigstellung Ihrer Anwendung oder Ihres Skripts anzeigen möchten.

Untenstehender Befehl zeigt Ihnen den Fortschrittsbalken für den Download an.

(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# Downloading at \2\/s, ETA \3/' | zenity --progress --title="Downloading File..." --percentage=1 --pulsate

Für weitere Fortschrittsoptionen führen Sie folgenden Befehl im Terminal aus

zenity --help-progress

Fü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 das Bash-Skript benutzerfreundlicher zu gestalten. Wenn Sie Fragen haben, können Sie sich gerne an mich wenden.

Das könnte dich auch interessieren …