Login
Newsletter
Werbung

Fr, 20. Mai 2011, 09:48

Software::UNIX

TermKit - moderne grafische Shell mit neuem Ansatz

Der Entwickler Steven Wittens hat in einem längeren Artikel TermKit beschrieben, seine Vision einer modernen grafischen Shell.

Ausgabe von ls in Termkit

Steven Wittens

Ausgabe von ls in Termkit

Die heutigen Shell-Tools wurden bereits Anfang der 1970er-Jahre konzipiert und bis heute nicht grundlegend geändert. Für den Entwickler Steven Wittens bedeutet das, dass interaktive Methoden zur Eingabeunterstützung und grafische Ausgaben weitgehend fehlen. Pipelines beruhen darauf, dass ein Programm die Ausgabe des vorhergehenden Programmes korrekt interpretieren kann. Ist die Ausgabe nicht so wie erwartet, bricht die Pipeline zusammen. Insgesamt sei die Benutzerfreundlichkeit der Shell ziemlich schlecht.

Termkit will diese Probleme beseitigen, indem es auf eine grafische Oberfläche setzt. Um dabei nicht von Grund auf neu anfangen zu müssen, beruht TermKit auf der Web-Engine WebKit. Die aktuelle, recht rudimentäre Implementierung benutzt offenbar JavaScript, eine C-Bibliothek ist jedoch geplant.

Die Idee, auf eine Browser-Engine zu setzen, ist nicht neu. Wie ein Kommentator anmerkte, implementierte R. Saravanan von Mozilla schon vor elf Jahren mit XMLterm, kam allerdings nie über das Prototyp-Stadium hinaus. Andere Versuche einer grafischen Shell sind entweder eingestellt wie die Hotwire Shell oder wesentlich eingeschränkter in ihren Möglichkeiten wie GUSH.

Programme in TermKit können ihre Ausgaben so aufbereiten, dass sie grafisch dargestellt werden, dafür stehen alle Elemente von HTML5 bereit. Ein modifiziertes ls beispielsweise kann eine Ausgabe erzeugen, die der eines grafischen Dateimanagers ähnelt. Zusätzlich können JavaScript-Bibliotheken eingesetzt werden, um beispielsweise Fortschrittsbalken anzuzeigen.

Zwei weitere originelle Ideen zeichnen TermKit aus. Beide haben mit Pipes zu tun, einem traditionellen Konzept, um Programme zusammenarbeiten zu lassen. Bisher unterscheiden Programme nur rudimentär, ob die Ein- oder Ausgabe in eine Pipe erfolgt oder interaktiv. Dabei ist diese Unterscheidung laut Wittens wesentlich, und ihr Fehlen führt zu vielfältigen Einschränkungen. Dieses Problem will er mit zwei zusätzlichen Kanälen beheben, die zur Zeit »View In« und »View Out« benannt sind. Während »Data In« und »Data Out«, die bisherige Standard-Ein- und Ausgabe binäre Daten transportieren sollen, dienen »View In« und »View Out« zur Ein- und Ausgabe auf dem Terminal. Die View-Pipes nutzen das JSON-Format, was laut Wittens in Zukunft allerdings nicht zwingend ist.

Die zweite Neuerung ist die Ergänzung der Daten-Pipes um Typ-Informationen. Dazu soll den Daten ein MIME-ähnlicher Header vorangestellt werden. So weiß das empfangende Programm, wie es die Daten verwenden muss, und kann auch die Verarbeitung abbrechen, wenn es mit dem Datentyp nicht umgehen kann. Es ist klar, dass nur eigens für TermKit geschriebene Programme in TermKit ablaufen können, für alle anderen müsste ein Kompatibilitätsmodus geschaffen werden.

Wittens hat außerdem bereits an die Ausführung von TermKit auf anderen Rechnern gedacht. Die Trennung von TermKit in einen Server und einen Client soll dies möglich machen, womit die mitunter zu beobachtende Verzögerung bei der Eingabe vermieden werden soll, wenn über SSH gearbeitet wird.

Der Prototyp von TermKit läuft nur unter Mac OS X und kann von der Projektseite heruntergeladen werden. Eine Portierung auf Linux hängt nur davon ab, wann sich ein Freiwilliger dafür findet.

Werbung
Kommentare (Insgesamt: 34 || Alle anzeigen )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung