Aufmacher

Klacker, Klacker, Klick, Klick

GUI-Komfort für Bash, Shell und Co.

01.06.2008
Häufig erledigen Skripte ihre Aufgaben unsichtbar im Hintergrund. Mancher User wünscht sich aber ein visuelles Feedback. Dank Zenity und KDialog fügen sich Ihre Skripte nativ in die KDE- oder Gnome-Umgebung ein.

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.

Listing 1
#!/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.

Abbildung 1: Über einen Schieberegler generieren Anwender mit Hilfe eines grafischen Tools Zahlen.
Listing 2
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"
Abbildung 2: Zenity listet den Inhalt eines Verzeichnisses auf und sortiert ihn beim Klick auf Verzeichnisinhalt alphabetisch.

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).

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.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 

Ähnliche Artikel

  • Shell-Skripte mit grafischen Dialogen
    Dass sich Shell-Programmierung und grafische Oberflächen nicht ausschließen, zeigt KDialog: Nie war es leichter, Shell-Skripte um User-Interaktion zu ergänzen.
  • Alles Schiebung
    Viele neue Dateien finden täglich den Weg auf Ihren Rechner. Fsniper nimmt die Neuankömmlinge in Empfang und verarbeitet sie nach Ihren Regeln weiter.
  • Mehr Komfort
    Von einfachen Abfragen bis hin zu komplexen Menüs: Mit dem Toolkit Dialog bauen Sie eine grafische Oberfläche für Shell-Skripte, die oft nicht mehr als eine zusätzliche Zeile brauchen.
  • Textbasierte User-Interfaces (Teil 1)
    Die Kommandozeile halten viele Anwender für trist und schlecht bedienbar. Das muss aber nicht so sein: Mithilfe von Dialog und Whiptail werten Sie Ihre eigenen Skripts unkompliziert mit Fenstern, Menüs und Dialogen auf.
  • Portabel programmieren mit Dialog, Gdialog und Kdialog
    Bash-Skripte sind meist nur für die Verwendung auf der Kommandozeile gedacht und schrecken Nicht-Experten mit unübersichtlichen Ausgaben ab. Das muss aber nicht so sein: Die Programme Dialog, Gdialog und Kdialog verstecken die Kommandozeile vollständig vor dem Benutzer.
Kommentare
zenity und kdialog
someone (unangemeldet), Sonntag, 08. Februar 2009 11:03:26
Ein/Ausklappen

Wäre gut, wenn beide programme die selben parameter hätten,
oder einen Kompatibilitäts-schalter. Warum können gnome u. kde Entwickler nicht ein bisschen zusammenarbeiten, anstatt immer Extrawürste zu braten ?

Will nicht rummeckern, aber das wäre sicher leicht machbar und vor allem SINNVOLL, ausserdem nicht mit viel mehr Arbeit verbunden gewesen.


Bewertung: 199 Punkte bei 29 Stimmen.
Den Beitrag bewerten: Gut / Schlecht

Infos zur Publikation

LU 01/2015: E-Books im Griff

Digitale Ausgabe: Preis € 4,95
(inkl. 19% MwSt.)

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

HINWEIS ZU PAYPAL: Die Zahlung ist auch ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!       

Tipp der Woche

Ubuntu 14.10 und VirtualBox
Ubuntu 14.10 und VirtualBox
Tim Schürmann, 08.11.2014 18:45, 0 Kommentare

Wer Ubuntu 14.10 in einer virtuellen Maschine unter VirtualBox startet, der landet unter Umständen in einem Fenster mit Grafikmüll. Zu einem korrekt ...

Aktuelle Fragen

ICEauthority
Thomas Mann, 17.12.2014 14:49, 2 Antworten
Fehlermeldung beim Start von Linux Mint: Could not update ICEauthority file / home/user/.ICEauth...
Linux einrichten
Sigrid Bölke, 10.12.2014 10:46, 5 Antworten
Hallo, liebe Community, bin hier ganz neu,also entschuldigt,wenn ich hier falsch bin. Mein Prob...
Externe USB-Festplatte mit Ext4 formatiert, USB-Stick wird nicht mehr eingebunden
Wimpy *, 02.12.2014 16:31, 0 Antworten
Hallo, ich habe die externe USB-FP, die nur für Daten-Backup benutzt wird, mit dem YaST-Partition...
Steuern mit Linux
Siegfried Markner, 01.12.2014 11:56, 2 Antworten
Welches Linux eignet sich am besten für Steuerungen.
Nach Ubdates alles weg ...
Maria Hänel, 15.11.2014 17:23, 5 Antworten
Ich brauche dringen eure Hilfe . Ich habe am wochenende ein paar Ubdates durch mein Notebook von...