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.
  • 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.
  • 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.
  • Mit YAD komfortable Dialoge für Shell-Skripte schreiben
    Moderne Dialog-Programme bieten mehr als nur ein schnelles Eingabefenster für Daten. YAD verfügt über nicht weniger als ein Dutzend Grundfunktionen.
  • 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.
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: 201 Punkte bei 31 Stimmen.
Den Beitrag bewerten: Gut / Schlecht

Infos zur Publikation

LU 05/2015: Daten visualisieren

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

Grammatikprüfung in LibreOffice nachrüsten
Grammatikprüfung in LibreOffice nachrüsten
Tim Schürmann, 24.04.2015 19:36, 0 Kommentare

LibreOffice kommt zwar mit einer deutschen Rechtschreibprüfung und einem guten Thesaurus, eine Grammatikprüfung fehlt jedoch. In ältere 32-Bit-Versionen ...

Aktuelle Fragen

Admin Probleme mit Q4os
Thomas Weiss, 30.03.2015 20:27, 6 Antworten
Hallo Leute, ich habe zwei Fragen zu Q4os. Die Installation auf meinem Dell Latitude D600 verl...
eeepc 1005HA externer sound Ausgang geht nicht
Dieter Drewanz, 18.03.2015 15:00, 1 Antworten
Hallo LC, nach dem Update () funktioniert unter KDE der externe Soundausgang an der Klinkenbuc...
AceCad DigiMemo A 402
Dr. Ulrich Andree, 15.03.2015 17:38, 2 Antworten
Moin zusammen, ich habe mir den elektronischen Notizblock "AceCad DigiMemo A 402" zugelegt und m...
Start-Job behindert Bootvorgang, Suse 13.2, KDE,
Wimpy *, 20.02.2015 10:32, 4 Antworten
Beim Bootvorgang ist ein Timeout von 1 Min 30 Sec. weil eine Partition sdb1 gesucht und nicht gef...
Konfiguration RAID 1 mit 2 SSDs: Performance?
Markus Mertens, 16.02.2015 10:02, 6 Antworten
Hallo! Ich möchte bei einer Workstation (2x Xeon E5-2687Wv3, 256GB RAM) 2 SATA-SSDs (512GB) al...