Deutsch | English

Terminal-Emulationen erlauben uns den direkten Zugriff aufs System. Eine Übersicht diverser Emulatoren, die die VTE-Bibliothek verwenden.


Inhalt


VTE – Virtual Terminal Emulator

Die VTE-Bibliothek wurde ursprünglich als Back-End für das GNOME Terminal entwickelt und findet sich im Repository der GNOME Foundation ⁽¹⁾. Diese Bibliothek enthält unter anderem das Widget VteTerminal, das vorrangig für die Darstellung des Terminals verantwortlich ist. Die Übersicht der aufrufbaren Funktionen von VteTerminal findet sich hier ⁽²⁾. Die Referenz für die Schnittstellen des Widget selbst, RegEx und die Erzeugung von Pseudo-Terminals findet sich hier ⁽³⁾. VTE wurde von Beginn an entkoppelt von dem GNOME Terminal konzipiert. Das modulare Design ermöglicht die Verwendung des VteTerminal-Widgets als Teil der GTK-Bibliothek ⁽⁴⁾, sodass andere Terminal-Emulatoren und Applikationen es integrieren können. Der älteste Commit, der nicht mehr in einem privaten Repo stattfand, ist von 2002 ⁽⁵⁾. Wie man, in vereinfachter Form, einen Terminal-Emulator mit integrierter VTE-Bibliothek schreibt, lässt sich hier nachvollziehen ⁽⁶⁾.

  1. GNOME: GitLab: GNOME/vte → »Virtual Terminal library«
  2. GNOME: Help → Developers → »VTE Reference Manual« → »VteTerminal«
  3. GNOME: Help → Developers → »VTE Reference Manual«
  4. Website: »The GTK Project«
  5. GNOME: GitLab: GNOME/vte → »Virtual Terminal library« → Branch: »vte_0_1«
    Commit: 2002-04-25 | Autor: Nalin Dahyabhai
  6. Blog: MTU Ninja: »Write your own terminal emulator«
    Datum: 2017-02-07 | Autor: Vincent Bernat

Integrierte Terminals

Einige Applikationen, die auf die GTK-Bibliothek setzen, haben, unter Verwendung des VteTerminal-Widgets, ein Terminal integriert. Ein kurzer Blick auf drei Applikationen, die dieses unterschiedlich einsetzen.

Geany

Geany

Die IDE Geany verwendet standardmäßig ein integriertes VTE-Terminal ⁽¹⁾. Das Manual behandelt die Handhabung des Terminals ausführlicher ⁽²⁾. Ein Plugin, das zudem die Verwendung von Tabs ermöglicht, existiert auch und greift ebenfalls auf die VTE-Bibliothek zu ⁽³⁾.

  1. Website: »Geany – The Flyweight IDE«
  2. Website: Geany → Manual → »Virtual terminal emulator widget (VTE)«
  3. Geany: PlugIns → »MultiTerm«

GNOME Builder

GNOME Builder

Die Entwicklungsumgebung GNOME Builder ⁽¹⁾ erklärt den Wechsel vom Gtk.TextView-Widget ⁽²⁾ zu integrierten Pseudo-Terminals, um die Ausgabe während des Erstellungsprozesses zu erzeugen ⁽³⁾.

  1. GNOME: Wiki → Apps: »Builder – A toolsmith for GNOME-based applications«
  2. ReadtheDocs: »Python GTK+ 3 Tutorial« → »Multiline Text Editor«
  3. GNOME: Blogs → »Zen and the Art of GNOME« → »Builder 3.27 Progress«
    Datum: 2017-11-26 | Autor: chergert

Sunflower

Sunflower

Interessant ist auch der Dateimanager Sunflower ⁽¹⁾. Unter Arch Linux und Manjaro wird für die Einbindung des Terminals das Paket vte-legacy benötigt, das separat installiert werden muss ⁽²⁾, da Sunflower noch GTK 2 verwendet ⁽³⁾.

  1. Website: Sunflower – Zwei-Fenster Dateimanager
  2. Arch Linux: Arch User Repository → Packages: »vte-legacy«
    Letzte Aktualisierung: 2018-04-08 | Betreuer: bidulock
  3. Website: Sunflower – Twin-panel file manager → News: »Progress on GTK3, Python3 and new version«
    Datum: 2019-07-13 | Autor: Mladen Mijatov

Terminal-Emulatoren

Alle hier aufgeführten Terminal-Emulatoren setzen ebenfalls auf GTK als Toolkit.

Termite

Termite

Termite besitzt als einziger der vorgestellten Terminal-Emulatoren zwei Modi. Einen Einfügemodus, in dem Text eingegeben werden kann und einem Befehlsmodus, in dem durch Tastenkombinationen einfache Befehle ausgeführt werden können. Der Befehlsmodus ist angelehnt an die Kommandos des Editors Vim ⁽¹⁾. Zusätzlich kompiliert werden muss eine modifizierte Version des VTE-Widgets ⁽²⁾, die Begründung findet sich in der ReadMe von Termite auf dem GitHub-Repository ⁽³⁾. Die diesbezügliche Kommunikation der letzten Jahre mit den GNOME-Maintainern lässt sich hier verfolgen ⁽⁴⁾. Anpassungen werden in einer Konfigurationsdatei vorgenommen ⁽⁵⁾. Termite ist durch die Tastatursteuerung eher prädestiniert für eine Verwendung mit einem Tiling-Window-Manager oder einem Fenstermanager, in dem Fenster in Tabs verwaltet werden. Für die Verwendung mit einem Tiling-Window-Manager unter Wayland liegt im Arch User Repository eine angepasste Variante von Termite ohne Client-Side-Decorations ⁽⁶⁾.

  1. GitHub: thestinger/termite → »A keyboard-centric VTE-based terminal, aimed at use within a window manager with tiling and/or tabbing support.«
  2. GitHub: thestinger/vte-ng → »enhanced vte terminal widget«
  3. GitHub: thestinger/termite → »A keyboard-centric VTE-based terminal, aimed at use within a window manager with tiling and/or tabbing support.« → »Dependencies«
  4. GNOME: Bugzilla → Product: vte → »Expose functions for setting text selection [PATCH]«
    Gemeldet: 2012-07-10 | Bug: 679658
  5. Arch Linux: Wiki → »Termite« → »Configuration«
  6. Arch Linux: Arch User Repository → Packages: »termite-nocsd«
    Letzte Aktualisierung: 2019-07-13 | Betreuer: unit73e

GNOME Terminal

GNOME Terminal

GNOME Terminal ist ein konventioneller Terminal-Emulator ⁽¹⁾. Mehrere Sessions können innerhalb eines Terminalfensters in Tabs organisiert werden ⁽²⁾. Analog hierzu das Konzept mehrerer virtueller Arbeitsflächen in der Desktop-Umgebung, auch hier werden, angepasst an den eigenen Workflow, Arbeitsfenster auf diese Weise gruppiert. Eine weitergehende Verwaltung oder Sicherung dieser Sessions ist hierbei nicht vorgesehen. Verwaltet werden können lediglich diverse Profile mit jeweils spezifischen Voreinstellungen ⁽³⁾. Wir werden in einem der folgenden Artikel eine andere Lösung zur Verwaltung mehrerer Sessions auf der Kommandozeilenebene – in Form von Terminal-Multiplexern – wiederfinden.

Im Repository findet sich ein Hinweis darauf, dass das GNOME Terminal hauptsächlich die Menüleiste, die Symbolleiste und Kommandozeilenoptionen abdeckt ⁽⁴⁾. Das Kernstück des Terminal-Emulators, das für die eigentliche Darstellung verantwortlich ist, ist die hierfür entwickelte VTE-Bibliothek.  

  1. GNOME Help: Users → »Terminal«
  2. GNOME Help: Users → »Terminal« → »Getting started« → »Use tabs«
  3. GNOME Help: Users → »Terminal« → »Customize behavior« → »Terminal preferences« → »Manage profiles«
  4. GNOME: GitLab → »gnome-terminal« → »HACKING«

Tilix

Tilix

Tilix existiert seit Ende 2015, damals noch unter dem Namen Terminix ⁽¹⁾. Er ist, bis auf das integrierte VTE-Widget, in D geschrieben und verwendet gtkD als Wrapper ⁽²⁾. Das Repository findet sich auf GitHub und wird aktiv betreut ⁽³⁾ – im Gegensatz zu Terminator ⁽⁴⁾, der ähnliche Funktionalität bietet. Ein Blick auf die erfolgten Commits der letzten Jahre ⁽⁵⁾.

Tilix benennt und behandelt Tabs als Sessions. In diesen können mehrere Terminals geöffnet und horizontal und vertikal in dem Fensterbereich platziert werden. Terminals erben regulär das gewählte Profil der Session, jedoch können Profile manuell oder automatisiert den einzelnen Terminals zugeordnet werden. Sowohl Profile, als auch das Layout (Anordnung von Terminals) einzelner Sessions können in einer JSON-Datei gespeichert und wieder aufgerufen werden ⁽⁶⁾.

Im letzten Teil der Artikelserie wurde bereits auf die Problematik von Client-Side-Decorations (CSD) eingegangen ⁽⁷⁾. Für Fenstermanager, die die Dekoration von Fenstern selber zeichnen stellt dies ein Problem dar. Tilix ist interessant, weil der Entwickler sich bewusst dafür entschieden hat einen Terminal-Emulator zu entwickeln, der diesen Richtlinien folgt, um nahtlos in den GNOME-Desktop integriert zu sein. Zeitgleich bestand ein Bewusstsein für diese Problematik, wie aus diesem Interview hervorgeht ⁽⁸⁾. Somit lassen sich in den Einstellungen verschiedene Modi aktivieren, die auf Server-Side-Decorations (SSD) setzen oder Fensterrahmen vollständig deaktivieren.

  1. Website: »Tilix«
  2. Website: »gtkD«
  3. GitHub: gnunn1/tilix → »A tiling terminal emulator for Linux using GTK+ 3« → »Commits«
  4. Website: »Terminator – The robot future of terminals«
  5. Launchpad: »gnome-terminator« → »Code«
  6. Website: »Tilix« → »Features«
  7. Blog: »semantic design« → »Tiling-Window-Manager unter Wayland: Sway« → »Client-Side-Decorations versus Server-Side-Decorations«
    Veröffentlicht: 2019-06-24 | Autor: Markus Richter
  8. Blog: »The D Blog« → »On Tilix and D: An Interview with Gerald Nunn«
    Datum: 2017-08-11 | Interviewer: Joakim | Entwickler: Gerald Nunn

Creative Commons Lizenzvertrag
Dieser Artikel ist lizenziert unter einer
Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 4.0 International Lizenz.