Inhaltsverzeichnis
Zenity ermöglicht es uns aus einfachen Shell Skripten GUI Fenster anzuzeigen.
Es gibt User, die nicht, sobald der Computer hochgefahren ist, als erstes die Shell starten (man soll es nicht für möglich halten, aber empirische Studien haben ergeben, dass das sogar auf die Mehrheit an Usern zutrifft ;)). Da es nun für manche Aufgaben einen unnötigen Overhead bedeutet an stelle von Shell Skripting auf Skriptsprachen wie Perl oder Python zurückzugreifen, welche GUIs über Module zur Verfügung stellen, gibt es Tools - wie zB Zenity - die das als ausfürbare Anwendung auch für Shells zur Verfügung stellen.
zenity wird einfach aus dem Skript gestartet und stellt je nach übergebenem Paramter zB Einfabedialoge, Infodialoge oder Warndialoge bereit, die vom User Input verlangen oder aber einfach nur den aktüllen Status anzeigen.
Am einfachsten lässt es sich allerdings anhand eines Beispieles beschreiben. Dazu wird im Folgendem ein sehr simples Interface gebaut, mit dem Dateien mittels wget aus dem Internet geladen werden können.
Als erstes muss ein File vorbereitet werden:
echo "#!/bin/sh" > zenity-wget.sh; chmod +x zenity-wget.sh;
nun geht es auch schon zur Sache. Dazu benötigen wir 2 Files: ein logfile und ein tmpfile
tmpfile=/tmp/wget.$$ logfile=/tmp/wget-log.$$
jetzt muss der User gefragt werden, welche Datei heruntergeladen werden soll
zenity--entry
--title=wget
--text="Choose a file to Download" >> $tmpfile
Falls der Cancel Button gedrückt wurde soll das Programm nun beendet werden
if [ $? == 1 ] rm -f $logfile rm -f $tmpfile then exit 1 fi
Nun kann auch schon wget gestartet werden:
for file in `cat $tmpfile` do wget -o $logfile $file
Bis hierher sollte alles klar sein. Nun möchte der User allerdings auch wissen, wann der Download beendet ist, und ob es erfolgreich war.
if [ $? == 0 ] then zenity --info --title=wget \ --text="$file was downloaded successfull" else zenity --error --title=wget \ --text="An error occoured while downloading $file" fi
So wird im Erfolgsfall ein Inforamtionsdialog angezeit, der dem User mitteilt, dass der Download der Datei $file erfolgreich verlaufen ist. Anderenfalls bekommt der User eine Fehlermeldung. Nun sind nur noch einige Abschlussarbeiten zu erledingen
done rm -f $logfile rm -f $tmpfile exit 0
Es ist also sehr einfach mit zenity den einen oder anderen Terminal aufruf zu umgehen. Es könnten nun auch noch weitere Features eingebaut werden, wie zB das Downloaden mehrerer Files, eine Progress Bar (ja, das ist auch mit Zenity möglich) oder es kann ein bestimmter Termin zum Runterladen eingestellt werden (zenity --calendar). Evtl. könnte auch noch ein Zielordner abgefragt werden, aber das sind dann alles Spielereien. Genautere Informationen bietet wie immer `man zenity`.