Dieser Artikel wird momentan von cornix und Julian92 erstellt. Als Fertigstellungsdatum wurde der 01.07.2012 angegeben.
Achtung: Insbesondere heißt das, dass dieser Artikel noch nicht fertig ist und dass wichtige Teile fehlen oder sogar falsch sein können. Bitte diesen Artikel nicht als Anleitung für Problemlösungen benutzen!
yad (yet another dialog) ermöglicht das Erzeugen grafischer Dialoge aus Shell-Skripten heraus oder auf der Kommandozeile. YAD ist eine Abspaltung (Fork) von Zenity, und bringt einige Verbesserungen mit sich. So kennt yad nicht nur mehr, sondern auch komplexere Dialoge. Die Syntax von YAD ähnelt der von Zenity sehr.
Dieser Artikel ist keine vollständige Dokumentation der Möglichkeiten von YAD. Er gibt einen Einstieg in den Umgang mit dem Programm. Für weitere Hilfe sei auf die Manpage und die Hilfeoptionen des Programmes verwiesen.
Das Programm ist noch nicht in den offiziellen Paketquellen enthalten, kann aber über das PPA [1] des Y PPA Managers
bezogen werden:
Adresszeile zum Hinzufügen des PPAs:
ppa:webupd8team/y-ppa-manager
Zusätzliche Fremdquellen können das System gefährden.
Weitere Informationen bietet die
PPA-Beschreibung vom Benutzer/Team webupd8team.
Damit Pakete aus dem PPA genutzt werden können, müssen die Paketquellen neu eingelesen werden.
Nach dem Auffrischen der Paketquellen kann folgendes Paket installiert [2] werden:
yad (ppa)
yad wird von der Kommandozeile oder aus Skripten heraus aufgerufen. Die Rückgabe erfolgt auf der Standardausgabe oder wird in Skripten in Variablen oder Arrays gesichert.
yad --text 'Hallo Welt!'
Dieses einfache Beispiel kann man mit weiteren Argumenten verfeinern:
yad --title 'Beispiel Fenster' \ --window-icon=gtk-about \ --geometry=400x100 \ --button=gtk-close \ --text 'Hallo Welt!'
Dies ein Einzeiler, der der besseren Lesbarkeit halber auf mehrere Zeilen verteilt wurde, weshalb die Zeilenumbrüche mit dem Backslash \ maskiert werden.
Die Ausgabe und bei einigen Aktionen auch die Eingabe nutzt Separatoren zum Trennen einzelner Einträge. Voreingestellt sind das Zeichen | zum trennen der Einträge und das Zeichen ! zum Trennen der einzelnen Wertzuweisungen in einem Eintrag. Fragt man also zwei Werte, eine Zahl und ein Wort, mittels yad ab, so wird die Ausgabe beispielsweise
1|eins
lauten. Übergibt man yad, beispielsweise bei einem Formular, Argumente, so sieht die Eingabe etwa so aus:
Wert1!Wert2
Etwas komplexer wird dies bei der Anzeige im Benachrichtigungsfeld, wenn mehrere Einträge im Kontextmenü gewünscht sind (Symbole (Icons) für Menüeinträge im Benachrichtigungsfeld sind erst ab svn-Revision 471 verfügbar):
menu:EINTRAG1!AKTION1!ICON1|EINTRAG2!AKTION2!ICON2
Hier wird der Unterschied zwischen den Haupt-Separatoren | (--separator) und den Separatoren für einzelne Einträge ! (--item-separator) deutlich. Die Separatoren können über die entsprechenden Optionen festgelegt werden.
Ein Formular (--form) besteht aus Feldern (--field). Felder beinhalten Einträge, die durch Separatoren getrennt sind und in denen mehrere Werte übergeben werden können, welche durch weitere Separatoren getrennt sind.
Folgende Tabelle zeigt die verschiedenen Typen der Felder.
| Feldtypen in Formularen | |
| Typ | Beschreibung |
RO | read only - nur lesbares Feld |
NUM | numeric - Dezimalzahl |
CHK | Checkbox |
CBE | combobox - editierbare Combobox |
FL | Schaltfläche für Dateiauswahl |
SFL | Feld zum Erstellen einer Datei |
DIR | Schaltfläche für Verzeichniswahl |
CDIR | Feld zum Erstellen eines Verzeichnisses |
FN | Schaltfläche für Schriftauswahl |
MFL | Multiple Dateiauswahl |
DT | Datumsfeld |
CLR | Farbauswahl |
BTN | Schaltfläche |
LBL | Textfeld (leer == horizontaler Trenner) |
Wie die Felder in der Praxis aussehen und wie die Optionen verwendet werden, kann man an folgendem kleinen Beispiel sehen.
Zugehöriger Befehl:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | yad \ --title="Field Optionen" \ --form \ --item-separator=, \ --separator=" " \ --field="Nur lesbares Feld:RO" Text \ --field="Auswahl einer Zahl:NUM" \ --field="Ich bin eine Checkbox:CHK" \ --field="Editierbares Feld:CBE" Text \ --field="Dateiauswahl:FL" \ --field="Hier kannst du eine Datei erstellen:SFL" \ --field="Verzeichnisauswahl:DIR" \ --field="Hier kannst du ein Verzeichnis erstellen:CDIR" \ --field="Schriftartauswahl:FN" \ --field="Hier kannst du mehrere Dateien wählen:MFL" \ --field="Wähle ein Datum:DT" \ --field="Wähle eine Farbe:CLR" \ --field="Ich bin ein klickbarer Button:BTN" \ --field="Ich bin ein Textfeld:LBL" \ --field="Texteingabe:TEXT" \ --button="Ich bin Button 1" \ --button="Ich bin Button 2" \ --button="Ich bin Button 3" \ --button="Ich bin Button 4" |
Auch dies ein Einzeiler, der der besseren Lesbarkeit halber auf mehrere Zeilen verteilt wurde. Zeilenumbrüche wurden mit einem Backslash \ maskiert.
1 2 3 4 | #! /bin/bash eingabe="$(yad --entry --hide-text --button="Auswerten" --title="Passwort" --text="Gebe ein Passwort ein:")" yad --info --text="Die Eingabe war $eingabe" |
Es wird nach einer Eingabe (--entry) gefragt. Die Eingabe soll durch Sternchen verschleiert werden (--hide-text). Mit (--text) sagen wir dem Benutzer, was er zu tun hat. Was im Fenstertitel steht, definieren wir mit der Option (--title). Abschließend gibt es noch einen Button, der den Dialog beendet (--button).
Die Eingabe des Benutzers wird im vorliegenden Beispiel in einer Variable ($eingabe) gespeichert.
Mit dem zweiten YAD-Befehl lassen wir uns den Inhalt dieser Variable in einem Textdialog ausgeben.
1 2 3 4 5 6 7 8 | #! /bin/bash array=($(yad \ --item-separator="," \ --separator="\\n" \ --form \ --field="Wähle einen Wert":NUM 5,1..10,1)) yad --info --text="Der Wert ist ${array[0]}" |
In diesem Formular (--form) fragen wir in einem Zahlenfeld (--field) nach einem Wert. Dieser Wert wird in einem Array gespeichert.
Mit dem zweiten YAD-Befehl wird die Eingabe des Benutzers in einem Textdialog ausgegeben.
..
Diese Revision wurde am 23. Mai 2012 18:50 von Hexe25 erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen:
Shell, Programmieren
2004 – 2012 ubuntuusers.de • Einige Rechte vorbehalten