Wir alle wissen, dass Linux-Bash-Skripte eine echte Stärke von Linux sind. Oft möchten wir eine grafische Benutzeroberfläche (GUI) in unseren Skripten anzeigen, um die Interaktion mit Benutzern zu vereinfachen. GUI macht jedes Skript benutzerfreundlicher und schöner.
Für GTK in Shell-Skripten stehen unter Linux viele Optionen und Tools zur Verfügung.
In diesem Artikel zeigen wir Ihnen, wie Sie mit Zenity GUI-Dialoge in Bash-Skripten anzeigen können.
Zenity ist eine Open-Source-Anwendung zum Anzeigen einfacher GUI in Shell-Skripten. Es macht Skripte benutzerfreundlicher, indem es GTK+-Dialoge anzeigt. Zenity ist ein praktisches Befehlszeilentool 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 Zenity-Installation 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 Apt installieren , dnf oder pacman Befehl.
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
Allgemeine Zenity-Optionen
Es gibt einige allgemeine Optionen, die unabhängig voneinander mit Zenity verwendet werden können. Allgemeine Optionen sind --title, --window-icon, --width, --height, --timeout
Sie können die Option ---title verwenden, um einen Titel für das Dialogfenster anzugeben.
Sie können die Option --window-icon verwenden, um ein Symbol anzugeben, das als Symbol für das Zenity-Dialogfeld verwendet wird.
Darüber hinaus können Sie Breite und Höhe für das Zenity-Dialogfeld festlegen, indem Sie die Optionen --width und --height im Zenity-Befehl festlegen.
Mit der Option --timeout können Sie eine Zeitüberschreitung des Dialogs festlegen, nach der das Dialogfeld automatisch geschlossen wird.
Zenity-Nachrichtenbox
Sie können einen einfachen und netten GUI-Nachrichtendialog mit einem einfachen Zenity-Befehl vom Terminal aus erstellen.
Vier Arten von Nachrichtendialogfeldern sind in Zenity verfügbar.
- Informationen
- 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
2. Ein Fehlerdialogfeld
Führen Sie den folgenden Befehl aus, um das Fehlerdialogfeld anzuzeigen
zenity --error --text="Error In Installation" --title="Error" --width=500 --width=200
3. Ein Fragedialogfeld
Sie können einfach ohne Frage nach Ja fragen, indem Sie den folgenden Befehl ausführen:
zenity --question --text="Do you want to reboot pc?" --width=200
Sie können den Zenity Question Dialog in einem Shell-Skript wie folgt 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 Warndialogfeld
zenity --warning --title="Update Available" --text="OS Update required" --width=200
Benachrichtigung
Sie können Benachrichtigungen mit Zenity anzeigen.
zenity --notification --text "Good Morning"
Zenity-Eingabefelder
Mit Zenity können Sie einfache Dialogfelder erstellen, die Benutzereingaben entgegennehmen und als Standardausgabe anzeigen.
Hier sind einige Eingabefelder:
Kalender
Kalender Das Dialogfeld zeigt einen Kalender an und gibt das vom Benutzer ausgewählte Datum als Standardausgabe zurück.
zenity --calendar
Output:
17/04/21
Texteingabedialog
Sie können die Option --entry verwenden, um einen Texteingabedialog zu erstellen. Es ist sehr nützlich, wenn Sie den Benutzer bitten möchten, 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 Daten für den Listendialog Spalte für Spalte, Zeile für Zeile eingeben. Sie können Checkbox oder Rediobox mit Listendialogfeld wie unten gezeigt verwenden:
zenity --list --title "Choose Processor" --radiolist --column "ID" --column="Name" 1 AMD 2 Intel
Sie können auch ein Kontrollkästchen mit der Option --list für die Mehrfachauswahl angeben.
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 Farbauswahlwert vom Benutzer zu übernehmen.
zenity --color-selection --show-palette
Dateiauswahldialog
Sie können die Option --file-selection verwenden, um ausgewählte Dateien oder Verzeichnisse als Standardausgabe zu erfassen. Sie können die Datei auch mit der Option --file-selection speichern.
zenity --file-selection --multiple --filename "/"
Fortschrittsdialog
Mit der Option --progress können Sie einen schönen Fortschrittsbalken erstellen. Dies ist oft nützlich, wenn Sie dem Benutzer den Fortschrittsbalken Ihrer Anwendung oder des Skriptabschlusses anzeigen möchten.
Below command with show you download progress bar.
(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 den folgenden Befehl im Terminal
auszenity --help-progress
Für weitere Zenity-Optionen können Sie man Zenity verwenden und Zenity --help .
Schlussfolgerung
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. Fühlen Sie sich frei, mich zu fragen, wenn Sie irgendwelche Fragen haben.