blog · git · desktop · images · contact & privacy · gopher


Explizite Hyperlinks und Kontextinformationen im Terminal

In 2017 hat dieser Gist die Runde gemacht:

https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda

Es geht um eine neue Escape-Sequenz, die sich irgendwie im Zustand „Draft“ oder so befindet und derzeit von VTE unterstützt wird. Mit ihr ist es möglich, „explizite Hyperlinks“ im Terminal zu benutzen:

echo -e '\e]8;;http://example.com\aThis is a link\e]8;;\a'

Sieht so aus:

link

Im Endeffekt sollen diese Links analog zu HTML-Links funktionieren.

Genannt werden sie „explizit“, weil man explizit ein Linkziel angeben kann. Traditionell war es nur möglich, einfachen Text auszugeben und dann zu hoffen, dass das Terminal diesen als Link erkennt:

link

Das ist alles noch ziemlich neu und kaum ein Terminal hat Unterstützung dafür, ganz abgesehen von den im Terminal laufenden Anwendungen oder gar ncurses. Und selbst wenn dein Terminal im Hintergrund VTE benutzt, heißt das noch nicht, dass alles automagisch funktioniert, weil die eigentliche Terminalanwendung (also: LilyTerm, RoxTerm, Sakura, …) trotzdem neuen Code braucht, um mit den Links umzugehen. Das liegt daran, dass VTE schlicht nicht weiß, was genau passieren soll, wenn ein User auf einen solchen Link klickt. Soll ein Popup-Menü erscheinen, soll der Browser gestartet werden, … ? VTE stellt also nur ein paar Signale und Funktionen bereit, die die Anwendung auswerten muss.

Ende 2017 habe ich dann Support dafür in xiate eingebaut, sodass zumindest ich mit diesem Feature spielen kann. :-)

Eine der großen Fragen ist: Was soll denn passieren, wenn man auf einen solchen Link klickt? Dieser Frage bin ich in xiate ausgewichen, indem ich einfach ein vom User bereitgestelltes Programm aufrufe – wenn man in xiate auf einen Link klickt (sei er explizit oder vom Regex erkannt), dann wird xiate-link-handler gestartet. Dort kann der User dann tun, was auch immer er möchte.

So ein anderes klassisches Problem von „Hyperlinks“ ist: Wo zeigen die denn hin? Das will man wissen, bevor man draufklickt. Aus diesem Grund wird das nächste Release von xiate Tooltips mit dem Linkziel anzeigen, wenn man mit der Maus darüber hovert. (GNOME Terminal macht das auch so, wie mir dann aufgefallen ist.)

tooltip

(Das Default-Theme von GTK+ ist ein bisschen unglücklich mit seinem schwarz auf schwarz.)

Das muss man sich allerdings auf der Zunge zergehen lassen. Es ist jetzt möglich, irgendeinen Text im Terminal anzuzeigen und dann beliebige andere Information damit zu verknüpfen. Das ist natürlich kein neues Konzept und geht in GUIs schon seit Ewigkeiten, aber eben nicht im Terminal.

Ich habe da zum Beispiel dieses experimentelle mtr-basierte Traceroute-Programm, welches jetzt in der Lage ist, pro Hop noch einmal detailliertere Informationen in den Tooltips anzuzeigen:

netqual

Um ehrlich zu sein, finde ich das sogar interessanter als die eigentliche Hyperlink-Funktionalität.