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
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.
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.
The project’s architecture and features are guided by a set of values:
- Correctness: Alacritty should be able to properly render modern terminal applications like
tmux
andvim
. Glyphs should be rendered properly, and the proper glyphs should be displayed.- Performance: Alacritty should be the fastest terminal emulator available anywhere.
- Appearance: Alacritty should have beautiful font rendering and look fantastic on all supported platforms.
- 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 liketmux
.- 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.