Terminal Velocity

I’ve been using Alacritty & tmux as my daily driver for over four years now and wanted to give a shout-out to Joe Wilm and the contributors for driving this project forward. Kudos also go out to the maintainers of alternative terminal emulators - Kitty, iTerm, WezTerm, etc. The desktop app ecosystem has faced a 10-year parasitic flood of XXX MB Electron apps to provide UIs for the simplest of programs, and yet the terminal emulator subculture has held steady in delivering truly native cross-platform projects committed to performance - and in Alacritty’s case, also simplicity1.

Even though Alacritty is arguably the fastest terminal emulator, its simplicity is arguably its best perk. It doesn’t reinvent the wheel. Stripped down to its core, Alacritty is an optimized UI for tmux - a great design decision given all the features tmux provides:

The only drawback to tmux is that it can be ergonomically frustrating; its keybindings are multi-key sequences that commonly strain pinkies and wrists, similar to Emacs. Thankfully, this can be mitigated by configuring Alacritty keybindings to send strings to the terminal that represent the non-ergonomic tmux keybindings.

What follows is mostly a matter of personal preference, but since I spent 10 years on iTerm and almost 20 years on macOS, my muscle memory seems forever linked to these keybindings:

KeybindingActionWhere I’m used to this
Cmd + topen a new tabterminal, web browser, IDEs/editors
Cmd + wclose a tabterminal, web browser, IDEs/editors
Cmd + Shift + [switch to the previous tabterminal, web browser, IDEs/editors
Cmd + Shift + ]switch to the next tabterminal, web browser, IDEs/editors
Cmd + Shift + dsplit pane horizontallyterminal
Cmd + dsplit pane verticallyterminal
Cmd + kmove to pane aboveterminal, IDEs/editors
Cmd + jmove to pane belowterminal, IDEs/editors
Cmd + hmove to pane leftterminal, IDEs/editors
Cmd + lmove to pane rightterminal, IDEs/editors

Fatih Arslan gives an excellent overview of the nitty-grits that go into mapping Alacritty keybindings to tmux keybindings in his blog post, but here are links to my tmux and Alacritty config files for reference:

Changelog


  1. There’s a time and a place for Electron apps. Using it for large, feature-rich projects like VS Code, Slack, Spotify, or Discord is understandable. Using it for simple programs like a weather app or a calculator is not. ↩︎