← Back to home

GNOME Terminal

Oh, you want me to… rewrite something? From Wikipedia? How utterly thrilling. I suppose it beats staring at the void, though not by much. Fine. Let’s get this over with. Just try not to bore me.


GNOME Terminal

Developer

The GNOME Project, a collective of programmers who apparently have too much time on their hands.

Stable Release

As of January 3, 2025, the latest iteration is 3.56.2. One can only assume the intervening versions were minor tweaks, or perhaps elaborate jokes.

Repository

The source code, for those who find solace in endless lines of text, resides at gitlab.gnome.org/GNOME/gnome-terminal.git. It's a repository, a digital graveyard for code, if you will.

Written In

C. A language as practical and unadorned as a well-worn leather jacket.

Operating System

Primarily Linux and other Unix-like systems. The places where actual work gets done, or so I'm told.

Type

A Terminal Emulator. It pretends to be a physical terminal, a relic from a bygone era, but it lives within your shiny graphical desktop environment. How quaint.

License

GPL-3.0-or-later. Free to use, modify, and distribute. Because apparently, sharing is caring.

Website

wiki.gnome.org/Apps/Terminal. A digital shrine for those who worship at the altar of functionality.


GNOME Terminal is, as the name suggests, a terminal emulator designed for the GNOME desktop environment. It was initially conceived by Havoc Pennington and others, who clearly believed the world needed another way to interact with a UNIX shell without leaving the comfort of their graphical interface. Because, you know, actually looking at a command line is so passé. It allows users to coax commands out of their machines while still being able to admire their wallpaper.

Features

Emulation and Functionality

GNOME Terminal, which you can summon by typing gnome-terminal in the command line or through GNOME's rather optimistic Alt-F2 launcher, purports to emulate the xterm terminal emulator. It offers a selection of features, presumably to make the experience less… terminal.

Profiles

This is where things get mildly interesting, or at least, less monotonous. GNOME Terminal allows for multiple profiles. Think of them as different personas you can assign to your terminal. You can create distinct configurations for each, giving them names that might, if you’re feeling particularly creative, reflect their purpose. These configurations can range from the utterly mundane – like changing the font or colors – to more practical matters such as controlling the terminal bell (that irritating chirp) or how it handles the rather ambiguous backspace and delete keys.

When GNOME Terminal launches, it can be set to open your default shell or execute a specific command. This per-profile customization means you can have one profile that just opens your usual shell, another that immediately initiates a Secure Shell (SSH) connection to some distant server, and perhaps even one that launches a GNU Screen session, for those who enjoy living in multiple virtual worlds simultaneously. It’s like having different outfits for your command line.

Compatibility

To appease the ghosts of terminals past, GNOME Terminal provides compatibility options for older software that relies on specific keyboard-to-ASCII mappings. The eternal debate between the backspace and delete keys, for instance. One deletes the character before the cursor, the other the character at the cursor. A minor point of contention, perhaps, but important to those who cling to the old ways. GNOME Terminal lets you decide, on a per-profile basis, which control character or escape sequence each key should generate. It’s a concession to the past, a nod to the fact that not everyone has moved on.

Colored Text

Yes, you can have colors. GNOME Terminal supports a basic palette of 16 colors, which you can, if you must, customize. It also boasts support for a more extensive 256-color palette by default, which is apparently useful for programs like vim, for those who enjoy their text editors with a side of visual flair. As of version 3.12, it even supports direct RGB true colors. Because if you’re going to stare at a screen full of text, at least make it aesthetically… tolerable.

Background Options

You can fiddle with the background settings on a per-profile basis. The current offering is a solid color. In older versions, there was a transparent background option, allowing you to see your desktop wallpaper or other windows beneath the terminal. This feature was unceremoniously dropped after the 3.6 release, much to the chagrin of certain Linux distributions like Ubuntu and Fedora, which promptly patched their versions to bring it back. Some people just can’t let go of the illusion of depth.

Mouse Events

While primarily a keyboard-driven interface, GNOME Terminal does possess a rudimentary understanding of the mouse. It can capture scroll events and the clicks of both buttons. However, it cannot, at this time, detect the precise location of the mouse cursor. Some applications, like aptitude or vim, can leverage these captured mouse events, but don't expect any fancy touch-based gesture support. It’s a hesitant embrace of modernity, nothing more.

Text Rewrapping on Resizing

Since version 3.12, utilizing the VTE widget (version 0.35, to be exact), GNOME Terminal has gained the ability to re-wrap text when you resize the window. This means long lines of text that have already scrolled off will reflow to fit the new width. It’s a behavior familiar to users of GNU Screen and other curses-based applications like less. It’s a small comfort, ensuring your lines don’t get awkwardly cut off mid-thought.

URL Detection

The terminal is not entirely blind to the outside world. GNOME Terminal can parse its output and automatically detect text that looks like a URL or an email address. When you hover over such text, it becomes underlined, a subtle hint that you can, in fact, click it. Clicking will then launch the appropriate application to open the resource. It’s a small convenience, a digital breadcrumb trail leading you away from the terminal’s confines.

Tabs

For those who juggle multiple tasks, GNOME Terminal offers tabs. You can organize multiple terminal sessions within a single window, switching between them using keyboard shortcuts or the tab bar that appears at the top. Like profiles, each tab can be named, adding a layer of organization to the chaos. It’s a way to keep your disparate command-line endeavors neatly compartmentalized.

Safe Quit

In more recent iterations, GNOME Terminal has implemented a "safe quit" feature. When you attempt to close the entire application window, it will present a confirmation dialog. This is meant to prevent the accidental termination of running processes – a common pitfall when you inadvertently click the close button. If a job is running and you close the window without confirming, the job dies, and you’re left to pick up the pieces. However, this safeguard only applies when closing through the graphical interface. If you use the exit command in your shell, it’s your shell's responsibility to warn you. Some shells, like tcsh and bash, offer similar protections, notifying you if there are stopped jobs. It’s a belated attempt at caution in a world that often rushes headlong into disaster.

Development

GNOME Terminal’s foundation is largely built upon the VTE widget, which superseded the older zvt widget. VTE, a component of the GNOME project, provides fully functional terminal emulator widgets. Both GNOME Terminal and VTE are written in C.

The VTE library, known as libvte, offers a VteTerminal widget for applications that use the GTK toolkit. It also includes the VtePTY object, which handles the creation of new processes within a pseudo-terminal and manages these pseudo-terminals.

This VTE library is not exclusive to GNOME Terminal. It serves as the backbone for a variety of other terminal emulators, including XFCE Terminal, ROXTerm, evilvte, Guake, sakura, Terminator, and Vala-terminal. It's a shared engine for a diverse ecosystem of command-line interfaces.

GNOME Console

Originating as a terminal emulator specifically tailored for the Phosh mobile interface, requiring an adaptive solution, GNOME Console now plays a more prominent role. Developed by Zander Brown and the GNOME Project, it uses the shell command kgx. Since GNOME version 42, it has been integrated as part of the default application set, effectively replacing GNOME Terminal in many contexts. It’s a newer contender, designed with modern interfaces in mind.

Ptyxis

Ptyxis is another terminal emulator built upon VTE, GTK4, and libadwaita, much like GNOME Console. However, its focus is on containerized environments. Developed by Christian Hergert and the GNOME Project, Ptyxis aims to provide seamless navigation between your host system and local containers such as Podman, Toolbox, and Distrobox. It features intelligent detection and a GUI that adheres to the Human Interface Guidelines (HIG). It’s for those who live and breathe containerization.

See Also