Linux-Anfänger jubeln selten begeistert auf, wenn sie auf die Kommandozeile müssen: Der Schritt weicht vom gewohnten Umgang mit Computern ab. Aber auch fortgeschrittene Anwender wüssten mitunter gern, was das selbstgebaute Skript gerade so treibt. Wer gern viel mit der Maus erledigt, dem erleichtern Gnomes Zenity und KDEs KDialog das Leben.
Die Software landet bei der Installation von OpenSuse, Ubuntu und Kubuntu automatisch auf Ihrem Rechner – abhängig davon, ob Sie Gnome oder KDE installieren. Auch KDE 4 hat bereits KDialog im Gepäck, wie die Screenshots beweisen. Andernfalls installieren Sie die Pakete kde4-dialog respektive zenity nach. Wollen Sie Ihr Skript weitergeben, sollten Sie eine kleine Abfrage einbauen, die prüft, ob Zenity und KDialog auf dem fremden Rechner laufen. Anschließend statten Sie Ihre Bash- und Shell-Skripte mit Gnomes GTK-Dialogen und KDEs Qt-Fenstern aus.
Starten Sie dann ein Skript, poppen Dialogfenster auf, die Fragen stellen, Informationen liefern oder Sie über den Fortgang eines Prozesses informieren. Dieses grafische Feedback fehlt in Skripten gewöhnlich. Auch Fehlermeldungen und allgemeine Statusinformationen liefern Zenity und KDialog in Form von visuellen Rückmeldungen. Pfade tippen Sie nicht mehr mühevoll per Hand ein, sondern wählen sie über einen grafischen Dateimanager aus. Schön auch: Zenity und KDialog lassen sich sehr einfach einbinden. Wir zeigen Ihnen, welche Arten von Dialogfenstern es gibt und wie Sie diese einsetzen.
Zenity in Aktion
Sie beginnen am besten mit dem einfachen Shell-Skript aus Listing 1. Speichern Sie es unter dem Namen zenity, machen Sie es über chmod u+x zenity ausführbar und rufen Sie es dann über ./zenity auf. Sie sehen nun einen Schieberegler wie in Abbildung 1. Da das Dialogfenster keinen Namen trägt und der Text für den Schieberegler noch fehlt, greift Zenity auf Standardbeschriftungen zurück.
#!/bin/sh zenity --scale
Die Tabelle "Zenity" zeigt, welche Typen von Dialogfenstern es gibt. Links sehen Sie den Parameter, mit dem Sie Zenity aufrufen. Daneben sehen Sie jeweils ein Bild des Dialogfeldes.
Wie man dort sehen kann, gibt es auch Felder, in die Sie Werte eingeben. Die liest die Bash nach einem Klick auf OK ein, etwa beim Eingabefeld (--entry). Nutzen Sie den Schieberegler (--scale), um der Bash einen bestimmten Zahlenwert zu übergeben. Gefundene Informationen listen Sie mit Hilfe von --list auf – sie lassen sich nach einem Klick auf den Feldnamen auch sortieren. Einen Fortschrittsbalken setzen Sie nur dort ein, wo es auch Fortschritt gibt: So lässt sich etwa eine Suchaktion grafisch begleiten. Zunächst aber ein paar Basics.
Aufbauspiel
Um Fenstern einen eigenen Namen zu geben, setzen Sie generell --title ein (Listing 2, Zeile 1). Das sieht dann aus wie in Abbildung 1, aber nun fehlt noch etwas Funktionalität. Die Zeile 2 von Listing 2 zeigt, wie Sie Benutzer Werte zwischen Eins (--min-value=1) und Zehn (--max-value=10) auswählen und mit einem Standardwert von Fünf (--value=5) beginnen lassen.
zenity --scale --title "Schieberegler" --text "Schieben Sie ruhig ein bisschen…" zenity --scale --title "Schieberegler" --text "Schieben Sie ruhig ein bisschen…" --min-value=1 --max-value=10 --value=5
Natürlich gibt es nicht unendlich viele Parameter, mit denen Sie den Schieberegler füttern dürfen: man zenity zeigt in einem eigenen Abschnitt mit der Überschrift Scale Options, welche Optionen zusammen mit --scale funktionieren. Für ein Warnfeld (--warning) können Sie beispielsweise nur den Text festlegen und Umbrüche markieren.
Einige Typen entfalten ihre Wirkung auch nur in Verbindung mit anderen Befehlen. Das folgende Kommando zeigt die Dateien eines Verzeichnisses in einer Liste an und sortiert sie alphabetisch, sobald Sie auf Verzeichnisinhalt klicken (Abbildung 2):
ls | zenity --list --column "Vererzeichnisinhalt"
Zwar bastelt Zenity Ihnen schöne grafische Menüs, das Entwickeln der Programmlogik nimmt es Ihnen allerdings nicht ab. Um zu entscheiden, was ein Skript tut, wenn Sie auf OK oder Abbrechen drücken, schreiben Sie eine kleine If-Abfrage (Listing 3).
kdialog --yesno "Wollen Sie die Datei wirklich löschen?"
if [ $? = 0 ]; then
echo "OK gewählt"
Hier fügen Sie beliebigen Code zum Ausführen ein.
else
echo "Abbrechen gewählt"
fi
Generell gibt es bei Zenity und KDialog zwei interne Rückgabewerte für die eingesetzten Dialogfelder: Ein positives Ergebnis (OK) gibt "0", ein negatives "1" (Abbrechen) und ein drittes Ergebnis – beispielsweise Cancel von KDialog – "2" zurück. Abfragen können Sie diese Rückgabewerte, indem Sie die Variable $? auswerten.



