Deutsch | English

Terminal emulations allow us direct access to the system. An overview of various emulators using the VTE library.


Inhalt


VTE – Virtual Terminal Emulator

The VTE library was originally developed as a backend for GNOME Terminal and can be found in the repository of the GNOME Foundation ⁽¹⁾. This library contains, inter alia, the widget VteTerminal, which is primarily responsible for the presentation of the terminal. The overview of the callable functions of VteTerminal can be found here ⁽²⁾. The reference for the interfaces of the widget itself, RegEx and the generation of pseudo terminals can be found here ⁽³⁾. VTE was designed from the beginning decoupled from GNOME Terminal. The modular design allows the use of the VteTerminal widget as part of the GTK library ⁽⁴⁾ so that other terminal emulators and applications can integrate it. The oldest commit that no longer took place in a private repo is from the year 2002 ⁽⁵⁾. How to write a terminal emulator with integrated VTE library in simplified form can be retraced here ⁽⁶⁾.

  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 | Author: Nalin Dahyabhai
  6. Blog: MTU Ninja: »Write your own terminal emulator«
    Date: 2017-02-07 | Author: Vincent Bernat

Integrated terminals

Some applications that rely on the GTK library have integrated a terminal using the VteTerminal widget. A quick look at three applications that deploy this differently.

Geany

Geany

By default, the IDE Geany uses an integrated VTE terminal ⁽¹⁾. The manual deals with the handling of the terminal in more detail ⁽²⁾. A plugin that additionally allows the use of tabs exists  also and accesses the VTE library too ⁽³⁾.

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

GNOME Builder

GNOME Builder

The GNOME Builder ⁽¹⁾ development environment explains the transition from the Gtk.TextView widget ⁽²⁾ to built-in pseudo terminals to produce the output during the build process ⁽³⁾.

  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«
    Date: 2017-11-26 | Author: chergert

Sunflower

Sunflower

Also interesting is the file manager Sunflower ⁽¹⁾. Under Arch Linux and Manjaro, the terminal requires the vte-legacy package, which must be installed separately ⁽²⁾, because Sunflower is still using GTK 2 ⁽³⁾.

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

Terminal emulators

All terminal emulators listed here also rely on GTK as toolkit.

Termite

Termite

Termite is the only one of the featured terminal emulators that has two modes. An insert mode in which text can be entered and a command mode in which shortcuts can be used to execute simple commands. The command mode is based on the commands of the editor Vim ⁽¹⁾. In addition, a modified version of the VTE widget ⁽²⁾ must be compiled; the rationale can be found in the ReadMe of Termite on the GitHub repository ⁽³⁾. The communication of recent years concerning this matter with the GNOME maintainers can be followed here ⁽⁴⁾. Adjustments are made in a configuration file ⁽⁵⁾. Due to the keyboard control, Termite is more predestined for use with a tiling window manager or a window manager in which windows are organized in tabs. For use with a tiling window manager under Wayland, there is a customized variant of Termite without client-side decorations in the Arch User Repository ⁽⁶⁾.

  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]«
    Reported: 2012-07-10 | Bug: 679658
  5. Arch Linux: Wiki → »Termite« → »Configuration«
  6. Arch Linux: Arch User Repository → Packages: »termite-nocsd«
    Last updated: 2019-07-13 | Maintainer: unit73e

GNOME Terminal

GNOME Terminal

GNOME Terminal is a conventional terminal emulator ⁽¹⁾. Several sessions can be organized in tabs within a terminal window ⁽²⁾. As an analogy, the concept of several virtual workspaces under the desktop environment, in which working windows will be grouped, tailored to the own workflow. A further administration or backup of these sessions is not provided. It is solely possible to manage various profiles with specific default settings ⁽³⁾. In one of the following articles, we will find another solution for managing multiple sessions at the command line level—in the form of terminal multiplexers.
There is an indication in the repository that the GNOME Terminal mainly covers the menu bar, toolbar and command line options ⁽⁴⁾. The core of the terminal emulator, which is responsible for the actual presentation, is the VTE library developed therefor.

  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 exists since the end of 2015, at that time under the name Terminix ⁽¹⁾. It is written in D, except for the integrated VTE widget, and uses gtkD as wrapper ⁽²⁾. The repository is located on GitHub and is actively maintained ⁽³⁾—in contrast to Terminator ⁽⁴⁾, which offers similar functionality. A look at the recent commits of the last years ⁽⁵⁾.
Tilix names and treats tabs as sessions. In these, several terminals can be opened and placed horizontally and vertically in the window area. Terminals regularly inherit the selected profile of the session, though profiles can be manually or automatically assigned to each terminal. Both profiles and the layout (arrangement of terminals) of individual sessions can be saved in a JSON file and recalled ⁽⁶⁾.
In the last part of the article series, the problem of client-side decorations (CSD) has already been addressed ⁽⁷⁾. For window managers which draw the decoration of windows by themselves this poses a problem. Tilix is interesting because the developer deliberately chose to develop a terminal emulator that follows these guidelines to seamlessly integrate with the GNOME desktop. At the same time there was awareness of this difficulty, as can be seen from this interview ⁽⁸⁾. Thus, it is possible to activate various modes in the settings that rely on server-side decorations (SSD) or completely disable window frames.

  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 under Wayland: Sway« → »Client-side decorations versus server-side decorations«
    Published: 2019-06-24 | Author: Markus Richter
  8. Blog: »The D Blog« → »On Tilix and D: An Interview with Gerald Nunn«
    Date: 2017-08-11 | Interviewer: Joakim | Developer: Gerald Nunn

Creative Commons License
This article is licensed under a
Creative Commons Attribution-ShareAlike 4.0 International License.