So verwenden Sie grafische Widgets in Bash -Skripten mit Zenity
- 3406
- 218
- Matteo Möllinger
Zenity ist ein sehr nützliches Dienstprogramm, mit dem wir grafische Benutzeroberflächen für unsere Shell -Skripte erstellen können. Es gibt mehrere Widgets und können verwendet werden, indem das Programm mit den jeweiligen Optionen aufgerufen wird. Die Widgets basieren auf dem Gtk
Toolkit und geben Sie das Ergebnis der Benutzerinteraktion entweder in der Standardausgabe oder als Rückgabecode zurück.
In diesem Tutorial lernen Sie:
- Was sind die allgemeinen Zenity -Optionen?
- Was sind einige der nützlichsten verfügbaren Widgets und wie sie verwenden?
Softwareanforderungen und Konventionen verwendet
Kategorie | Anforderungen, Konventionen oder Softwareversion verwendet |
---|---|
System | Verteilungsunabhängige |
Software | Das Zenity -Dienstprogramm |
Andere | Vertrautheit mit der Shell (in diesem Fall Bash) und Konzepte wie Unterschalen- und Ausgangscodes |
Konventionen | # - erfordert, dass gegebene Linux -Befehle mit Root -Berechtigungen entweder direkt als Stammbenutzer oder mit Verwendung von ausgeführt werden können sudo Befehl$ - Erfordert, dass die angegebenen Linux-Befehle als regelmäßiger nicht privilegierter Benutzer ausgeführt werden können |
Installation
Der Zenität
Das Paket ist in den Repositories aller wichtigen Linux -Verteilungen enthalten und kann bereits installiert sein, wenn Sie die verwenden Gnom
Desktop -Umgebung. Um es zu installieren, können wir unseren bevorzugten Vertriebspaketmanager in verwenden, in Fedora
, Zum Beispiel können wir verwenden DNF
:
$ sudo dnf Installieren Sie Zenity
Bei Verwendung von Debian- und Debian-basierten Verteilungen wie Ubuntu können wir den Befehl APT-Get verwenden:
$ sudo apt-Get Installieren Sie Zenity
Zenity ist bereits im Archlinux enthalten extra
Repository, daher können wir es über installieren Pacman
:
$ sudo pacman -s zenity
Generische Optionen
Bevor wir anfangen, einige der nützlichsten Widgets zu sehen, die von bereitgestellt werden von Zenität
, Wir sollten einige der verfügbaren generischen Optionen erwähnen, mit denen wir das Programmverhalten ändern können.
Wir nennen sie generisch, weil sie unabhängig vom gewählten Widget angewendet werden können: --Titel
, --Witwe-Ikon
, --Breite
, --Höhe
Und --Auszeit
.
Erstens haben wir das --Titel
Option: Wir können es verwenden, um einen Titel für das Dialogfenster anzugeben. Ebenso die --Fenster
Option lassen Sie uns ein Symbol angeben, das als Symbol für das Fenster verwendet wird und beispielsweise in der Taskleiste sichtbar ist. Um ein Symbol im Widget anzuzeigen, können wir stattdessen das verwenden --Symbolname
Option und geben Sie einen der zulässigen Symbolnamen an (hier ist die vollständige Liste) als Argument. Um die in den Dialoge für Fehler, Infos, Frage oder Warndialoge angegebenen Aktiensymbole zu verwenden, können wir jeweils angeben: Dialog-Fehler
, Dialoginfo
, Dialogfragung
oder Dialogwarnung
.
Der --Breite
Und --Höhe
Optionen sind ziemlich selbsterklärend: Sie lassen uns die Geometrie unseres Dialogfensters definieren.
Schließlich durch die Verwendung der --Auszeit
Option Wir können eine Zeitüberschreitung in Sekunden für den Dialog festlegen: Nach der angegebenen Zeit wird sie automatisch geschlossen.
Die verfügbaren Widgets
Es gibt mehrere Widget, die wir dank Zenity verwenden können: Jeder von ihnen hat einen bestimmten Zweck. Lassen Sie uns einige von ihnen sehen.
Das Kalender -Widget
Das Kalender -Widget zeigt einen Kalender an und lässt den Benutzer ein Datum auswählen, indem er den Monat, Tag und Jahr auswählt. Die ausgewählten Werte werden auf dem zurückgegeben Standardausgabe
. Um den Widget -Kalender zu starten, müssen wir nur Zenity mit dem aufrufen --Kalender
Möglichkeit:
$ zenity -Kalender
Wir können eine Reihe von Optionen verwenden, um das Verhalten des Widgets beispielsweise durch die Verwendung zu optimieren --Tag
, --Monat
, --Jahr
und anbieten Int
Als Wert können wir den Standardtag, Monat und Jahr festlegen, der im Widget angezeigt wird. Um ein bestimmtes Format anzugeben, in dem das ausgewählte Datum zurückgegeben werden soll, können wir das verwenden --Datum
Option und geben Sie das Muster in der an Strftime
Stil.
Das Kalender -Widget
Das Eintrags -Widget
Das Eintrags -Widget ist wirklich nützlich, wenn wir den Benutzer nach Text fragen müssen. Sagen Sie zum Beispiel, wir müssen den Benutzer bitten, seinen Namen einzugeben. Wir können den folgenden Befehl ausführen:
$ zenity -INTRY -TITEL "Name Anfrage" -Text "Bitte geben Sie Ihren Namen ein:"
Hier haben wir die benutzt --Titel
Und --Einstiegstext
Optionen zum Anpassen des Titels und des Etiketts für das Widget. Sobald wir den obigen Befehl ausgeführt haben, wird das Widget angezeigt:
Das Eintrags -Widget
Der vom Benutzer eingegebene Text wird in die Standardausgabe zurückgegeben.
Dateiauswahl -Widget
Mit dem Widget der Dateiauswahl können wir eine schöne grafische Schnittstelle anzeigen, damit der Benutzer eine oder mehrere Dateien auswählen kann. Genau wie in den vorherigen Beispielen können wir eine Reihe von Optionen verwenden, um das Verhalten und das Aussehen des Dialogs zu ändern. Einer der wichtigsten ist --Dateinamen
mit deren Datei/Verzeichnis, das standardmäßig ausgewählt wird, festgelegt werden. Hier finden Sie einen kurzen Überblick über die Optionen und die Funktionen, die sie bieten:
Möglichkeit | Funktion |
---|---|
-Dateinamen | Setzen Sie das Standardverzeichnis/die Datei, die im Widget ausgewählt wird |
-mehrere | Aktivieren Sie die Möglichkeit, mehrere Dateien gleichzeitig auszuwählen |
-Dateifilter | Geben Sie einen Filter für Dateinamen an |
-Verzeichnis | Beschränken Sie die Auswahl auf Verzeichnisse |
-speichern | Führen Sie das Widget im "Speichern" -Modus aus. |
-Bestätigungswrite | Fragen Sie den Benutzer um eine Bestätigung, wenn Sie eine vorhandene Datei überschreiben |
-Separator | Geben Sie einen Trennzeichen an, mit dem Sie Pfade trennen können, wenn mehrere Dateien sind ausgewählt |
Lassen Sie uns ein Beispiel für die Verwendung des Widgets sehen. Sagen Sie, wir möchten den Benutzer mehrere Dateien auswählen lassen und den Inhalt des Benutzers möchten $ Home
Verzeichnis, das beim Öffnen im Widget angezeigt werden soll. Wir müssen nur den folgenden Befehl ausführen:
$ zenity-Dateiauswahl-Multiple-FileName "$ home/"
Sie können feststellen, dass wir eine Nachverfolgung zur Verfügung gestellt haben /
auf den Pfad: Auf diese Weise wird der Inhalt des Verzeichnisses anstelle des Verzeichnisses selbst angezeigt. Hier ist unser Widget:
Das Dateiauswahl -Widget
Sobald wir auf die Schaltfläche „OK“ klicken, wird der absolute Pfad der ausgewählten Datei (n) in der Standardausgabe zurückgegeben, die durch ein Zeichen getrennt ist, das standardmäßig ist |
:
/home/egdoc/downloads/a.txt |/home/egdoc/downloads/b.txt
Wir können das Trennzeichen problemlos ändern und das Charakter bereitstellen, das wir als Argument der Option -Parator -Option verwenden möchten.
Wenn wir den Dialog öffnen sicherer Modus
, Der Benutzer wird gebeten, den Namen der Datei anzugeben, die er speichern möchte. Wenn die Datei existiert und wir die zur Verfügung gestellt haben --Bestätigungswrite
Option, er wird aufgefordert zu bestätigen, dass er es überschreiben möchte:
$ zenity-file-selektion--Save-konfirm-overwrite-fileName "$ home/"
Der gewählte Pfad wird in die Standardausgabe zurückgegeben, und wir können ihn in unserem Skript verwenden.
Das Fortschritts -Widget
Ein weiteres interessantes Widget ist der Fortschritt: Wir können es mithilfe von Zenity mit dem starten --Fortschritt
Möglichkeit. Wir können es zum Beispiel verwenden, um den Fortschritt von langjährigen Operationen zu zeigen. Hier sind einige der nützlichsten Optionen, die wir mit dem Widget verwenden können:
Möglichkeit | Funktion |
---|---|
-Prozentsatz | Legt den anfänglichen prozentualen Wert der Fortschrittsleiste fest |
-automatisch schließen | Schließen Sie den Dialog automatisch, wenn der Fortschritt abgeschlossen ist |
-Auto-Kill | Töten Sie den übergeordneten Prozess, wenn der Dialog mit dem Abbrechen geschlossen wird Taste |
-No-Cancel | Zeigen Sie nicht die Schaltfläche Abbrechen an |
Hier ist ein Beispiel dafür, wie wir das Widget in einem Bash -Skript verwenden können:
#!/bin/bash # # Dummy -Skript, um das Zenity -Fortschritts -Widget zu demonstrieren! (Echo 25 Echo "# einrichten ..." Schlaf 2 Echo 30 Echo "# Lesen Dateien ..." Sleep 2 Echo 70 Echo "# Inhalte erstellen ..." Sleep 1 Echo 100 echo "# erledigt!") | Zenity-Title" Progress Bar Beispiel "-progress-auto-kill
Kopieren Das obige Skript führt keine Operation durch, aber es ist nützlich zu verstehen, wie das Widget funktioniert. Es gibt zwei wichtige Dinge, die im Code bemerkt werden sollten: Zunächst werden die zu ausgeführten Befehle zwischen Klammern eingewickelt und daher in einem ausgeführt Unterschale
: Dies ist erforderlich, damit das Widget korrekt funktioniert. Zweitens, wenn wir eine Zeile mit einer Zahl widerspiegeln, wird dies als Prozentsatz des Fortschrittsbalkens interpretiert.
Auf die gleiche Weise, wenn wir eine Linie wiedergeben, die mit dem beginnt #
Zeichen, es wird als Text verwendet, der im Widget angezeigt wird. Hier ist ein kurzes Video des Skripts in Aktion:
Info, Warn- und Fehler -Widgets
Um Informationen, Warn- oder Fehlermeldungen anzuzeigen, können wir Zenity mit dem verwenden --die Info
, --Warnung
Und --Fehler
Optionen jeweils. In diesem Fall verwenden wir die --Text
Option zum Angeben der Nachricht. Hier ist ein Beispiel für eine Benachrichtigung:
$ zenity ---info - -width = 400 -height = 200 --text "Dies ist eine Benachrichtigung!"
Das Benachrichtigungs -Widget
Das Warn -Widget ist genauso einfach:
$ Zenity -Warnung --Width = 400 - -hohe = 200 --text "Dies ist eine Warnung!"
Das Warnwidget
Dies ist stattdessen ein Beispiel für eine Fehlermeldung:
$ zenity -eRror - -width = 400 -height = 200 --text "Dies ist ein Fehler!"
Das Fehler -Widget
Das Frage -Widget
Um dem Benutzer eine Frage zu stellen und seine Antwort zu erhalten, können wir die verwenden Frage
Widget, das Zenity mit dem aufruft --Frage
Möglichkeit. Wir geben die Frage mit dem an --Text
Option und definieren Sie die Beschriftungen der Schaltflächen "OK" und "Abbrechen", wobei jeweils die --OK-Label
Und --Abbrechen-Label
Optionen. Hier ist ein Beispiel:
$ zenity -Frage -Text "Sind Sie sicher, dass Sie beenden möchten??"-no wrap --ok-label" yes "-cancel-label" nein "
Das Frage -Widget
In diesem Fall haben wir auch die verwendet --No-Wrap
Option, um ein Textverpackung im Widget zu vermeiden. Das Ergebnis der Benutzerauswahl wird nicht in der Standardausgabe angezeigt. Stattdessen setzt der Befehl seinen fest Code beenden
Dementsprechend wird es zurückkehren 0
Wenn der Benutzer auf die Schaltfläche "OK" klickt, und 1
Wenn er auf den 'abbrechen' klickt oder das Fenster schließt (dies kann kontraintuitiv erscheint, aber denken Sie daran, als ein Beschließungscode von 0 bedeutet, dass ein Befehl mit Erfolg in der Shell ausgeführt wurde).
Das Passwort -Widget
Dies ist das Widget, das wir verwenden sollten, wenn der Benutzer ein Kennwort oder eine sensible Informationen eingibt: Der, den er eingibt, wird von Kugeln maskiert:
Das Passwort -Widget
Während der vom Benutzer eingegebene Text maskiert ist, ist der vom Widget zurückgegebene Wert auf der Standardausgabe deutlich sichtbar.
Das Farbauswahl -Widget
Dies ist ein weiteres schönes Widget. Durch die Verwendung können wir den Benutzer dazu bringen, eine Farbe aus einer Palette auszuwählen. Um es auszuführen, verwenden wir Zenity mit dem --Farbauswahl
Möglichkeit. Wir können die ursprünglich ausgewählte Farbe mit verwenden --Farbe
und liefern die Farbe als Argument. Hier ist ein Beispiel:
Das Farbauswahl -Widget
Optional können wir stattdessen die Farbpalette mit dem anzeigen --Show-Palette
Möglichkeit:
$ zenity-Farbauswahl-Farbton rot --how-palette
Die Farbauswahl -Widget -Palette
Die vom Benutzer ausgewählte Farbe wird in zurückgegeben RGB
Notation auf der Standardausgabe. Beispielsweise wird bei der Auswahl der Farbe Rot Folgendes zurückgegeben:
RGB (255,0,0)
Die Liste Widget
Das nächste Widget, das wir uns ansehen werden, ist das Listen -Widget. Damit können Sie einen Multi-Säulen-Dialog erstellen und den Benutzer optional eine oder mehrere Optionen über Kontrollkästchen oder Optionsfelder auswählen lassen. Damit Zenity diese Art von Dialog anzeigen lässt, verwenden wir die --Liste
Option und definieren Sie die Spalten und deren Inhalt; Wenn wir sie weglassen, fällt der Befehl fehl:
$ zenity -list keine Spalten Titel für den Listendialog angegeben.
Kopieren Um einen Säulenkopf zu definieren, verwenden wir die --Spalte
Option und geben Sie eine Zeichenfolge als Argument an. Wir wiederholen den Befehl für jede Spalte, die wir erstellen möchten:
$ zenity -list -Säulenauswahl -Spaltverteilung
Mit dem obigen Befehl haben wir zwei Spalten erstellt, mit den Headern "Auswahl" und "Verteilung". Jetzt werden wir dem Benutzer eine Reihe von Zeilen zur Verfügung stellen, von denen jede eine Linux -Verteilung darstellt. In der ersten Spalte jeder Zeile platzieren wir ein Kontrollkästchen, damit der Benutzer den entsprechenden Eintrag auswählen lässt:
$ zenity -list -Säule Auswahl -Spalte Verteilung Falsch Debian True Fedora -radiolist
Jede Zeichenfolge, die wir nach der Definition der Spalten angeben, ist je nach Erscheinungsreihenfolge den Spalten zugeordnet. Wie Sie sehen können, haben wir zwei Zeilen erstellt. In der ersten Spalte jeder Zeile haben wir einen Wert geliefert: Wir haben verwendet FALSCH
Damit das entsprechende Kontrollfeld oder Optionsfeld nicht ausgewählt wird, wenn das Widget angezeigt wird, und WAHR
So stellen Sie die Eingabe standardmäßig fest. Hier ist das generierte Widget:
Die Liste Widget
Wenn wir auf die Schaltfläche „OK“ klicken und unsere Auswahl ausführen, wird der Wert der Zeile in der Standardausgabe angegeben. Wenn wir den Benutzer mehrere Zeilen auswählen möchten, können wir die verwenden --Checkliste
Option: die | Das Zeichen wird verwendet, um die ausgewählten Werte zu trennen.
Schlussfolgerungen
In diesem Tutorial haben wir gelernt zu wissen Zenität
, Ein Dienstprogramm, mit dem wir grafische Dialoge in unseren Shell -Skripten verwenden können. Wir haben gesehen, welche generischen Optionen wir mit allen Widgets verwenden können, wie --Breite
Und --Höhe
, Und wir haben gelernt, einige der nützlichsten Widgets zu verwenden, die wir mit dem Programm generieren können. Mehr darüber lernen Zenität
Sie können seine Manpage konsultieren!
Verwandte Linux -Tutorials:
- Eine Einführung in Linux -Automatisierung, Tools und Techniken
- Mastering -Bash -Skriptschleifen beherrschen
- Dinge zu installieren auf Ubuntu 20.04
- Verschachtelte Schleifen in Bash -Skripten
- Mint 20: Besser als Ubuntu und Microsoft Windows?
- Umgang mit Benutzereingaben in Bash -Skripten
- Dinge zu tun nach der Installation Ubuntu 20.04 fokale Fossa Linux
- GDB -Debugging -Tutorial für Anfänger
- Linux -Konfigurationsdateien: Top 30 am wichtigsten
- Hung Linux System? Wie man zur Befehlszeile entkommt und…
- « So erweitern Sie den Gnome Nautilus -Dateimanager mit benutzerdefinierten Skripten
- Einführung in MySQL/Mariadb -Datenbank SQL -Ansichten »