Terminals

More realistically, terminal emulators, because anyone who owns an actual working VT102 these days is not using it to do work

October 11, 2018 — September 24, 2024

computers are awful
faster pussycat
plain text
POSIX
Figure 1

1 Graphics in terminal

Kinda sometimes possible but annoying. The mediocre de facto standard is Sixels There is a program called Chafa (Introduction) which renders graphics to all the other standards created by people who got annoyed by mediocrity.

2 Which terminal?

2.1 iterm2

A terminal famous for thoughtful UI. macOS only. 🏗 It has many features. tmux integration. Little utilities that do useful things like scp files from a remote host to your local folder. Python API. I cannot help but feel superstitiously that a python API for a terminal is begging for security holes. This feels like adding a web server to your pacemaker. Anyway, it is simple and easy and works.

If you are using other systems than macOS, read on.

2.2 Hyper

If you are worried that your current terminal doesn’t use enough RAM, you can use hyper which is a JavaScript app version of terminal. It’s not too bad for one of these web technology desktop app things based on electron or similar, although it is not hard. It has lots of sexy features and nice graphics, to compensate for the obviously hefty RAM usage.

Weird quirk 1: It does not support dragging files into the terminal, which pretty much every alternative does. qweasd1’s hyper-drop-file extension enables that.

hyper install hyper-drop-file

Weird quirk 2: Anything which looks remotely like a URL in the terminal becomes a link which the terminal will aggressively open if you click on it or even drag over it which is annoying and slightly dangerous. Apparently this behaviour has become configurable now and I can put webLinksActivationKey: ctrl in your config file to only do it on Ctrl-Click.

2.3 VS code built-in terminal

VS Code has a built-in terminal. It is pretty good, just so long as you do not need to full-screen it, and is ubiquitous and therefore useful.

2.4 Cmder/ConEmu

Windows consoles that also speak Linux terminal: Cmder seems to be a passable default. Per default, it is a friendlified/packaged version of ConEmu. Neat features: POSIX terminals

Cmder can also work best with bash on Windows. Bash is the default shell found on *NIX systems such as Linux and macOS.

It doesn’t even need ConEmu, apparently:

For the best experience, we suggest that you integrate your favourite IDEs with Cmder – it makes your editor terminal work as productive as Cmder shell itself.

2.5 st

simple terminal aims to have fewer lines of code than anything else and as few features as useful. It still does lots of stuff and is tiny.

2.6 Alacritty

Alacritty (Source) is a GPU-accelerated terminal editor that aims to draw text real fast and be otherwise minimalistic. That is not my main problem with terminals, so I have not used it. I recant. A fast simple terminal that is not quite so hardline about the simplicity as st is useful. It is written in Rust which gets it some kind of hip points. There are fewer features to break than Hyper has. POSIX/Windows.

Project announcement

The project’s architecture and features are guided by a set of values:

  1. Correctness: Alacritty should be able to properly render modern terminal applications like tmux and vim. Glyphs should be rendered properly, and the proper glyphs should be displayed.
  2. Performance: Alacritty should be the fastest terminal emulator available anywhere.
  3. Appearance: Alacritty should have beautiful font rendering and look fantastic on all supported platforms.
  4. Simplicity: Alacritty should be conservative about which features it offers. As we’ve learned from past terminal emulators, it’s far too easy to become bloated. st taught us that it doesn’t need to be that way. Features like GUI-based configuration, tabs and scrollback are unnecessary. The latter features are better provided by a terminal multiplexer like tmux.
  5. Portability: Alacritty should support major operating systems including Linux, macOS, and Windows.

2.7 Warp

Warp, the “The blazingly fast, Rust-based terminal” has presumably even more rust hipness points than Alacritty. Has lots of hype-compatible features such as shared/networked connections and encrypted stuff and multiple cursors and inline manuals.

USD180/year for the pro version; there is a free version with usage caps.

2.8 xterm

Is old and messy; let it go.

2.9 Tilix

Tilix is a terminal emulator that Gnome people tend to like. It has consistent keyboard shortcuts, tiles (but tiles terminals only) and integrates into the Gnome Experience. The tiles do not spark joy for me; if I wanted to tile things I would tile more than only terminals.

2.10 kitty

Kovid Goyal made a terminal with C inner loops and Python UI extensibility called kitty. It’s not famous, but probably worth checking since Kovid is a powerhouse of feature-packed development. If anything, I should probably be suspicious that it may have too many features, because that would be on-brand for Kovid. macOS/Unices.

2.11 terminator

terminator seems to be an acceptable default option for a pure native GNOME app without many frills.

2.12 Terminus

terminus supports some HTML graphics, and appears to work-ish.

2.13 TermKit

Designerly graphics-friendly terminal aims to reinvent terminal protocols! Has a vision statement! However it’s dead in the water.

Some cool features

  • Smart token-based input with inline autocomplete and automatic escaping
  • Rich output for common tasks and formats, using MIME types + sniffing
  • Asynchronous views for background / parallel tasks
  • Full separation between front/back-end

TermKit is not a…

  • …Web application. It runs as a regular desktop app.
  • …Scripting language like PowerShell or bash. It focuses on executing commands only.
  • …Full terminal emulator. It does not aim to e.g. host ‘vim’.
  • …Reimplementation of the Unix toolchain. It replaces and/or enhances built-in commands and wraps external tools.

3 Terminal multiplexers

See terminal session management