So verwenden Sie grafische Widgets in Bash -Skripten mit Zenity

So verwenden Sie grafische Widgets in Bash -Skripten mit Zenity

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

Softwareanforderungen und Linux -Befehlszeilenkonventionen
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:

Zenity -Dateiauswahl -Widget -Optionen
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…