Switching From St to Alacritty

Written By: Jake Bauer | Posted: 2020-07-24 | Last Updated: 2020-07-31

This post was originally also about separating creators from their work but, thanks to the discussion on the Fediverse, I was alerted to the following Lobste.rs thread containing responses from one of the Suckless folk (username “FRIGN”).

I have since moved the redacted text to its own page so you can view what I was wrong about on this page of removals. I decided to move the stuff because it was making this post hard to read and, since none of the non-technical stuff was true, this post should just be about the technical reasons for my switch.

I’ve been a pretty happy user of St, the Simple Terminal from Suckless for quite a few months now but a few annoying issues with it have tempted me to switch.

I’ve been eyeing Alacritty as an alternative if I ever got tired of St because it seems to also be lightweight, fast, and supportive of the features I left urxvt for. It also still has a scrollback buffer, zooming in and out, clickable URLS, and it seems a Vi mode is also coming in the next release which I am very excited for. The only thing I didn’t really like about it was the YAML configuration and its size in RAM.

I did give some alternatives a shot. I tried Termite but found it to be too big a pain in the butt to compile because of the need to also compile vte-ng which itself was a pain, Kitty felt like it took too long to load coming from St’s ~100ms launch time, and other terminals like xfce4-terminal or konsole wanted to bring in extra libraries and dependencies which I didn’t want.

The only things I’ve noticed that I would consider inferior about Alacritty is that each terminal window uses about 30-40M of RAM (RES minus SHR) compared to St’s 4-5M and it still feels noticeably slower to launch. I’d estimate it takes Alacritty about twice as long to launch as St (somewhere in the ballpark of 200-300ms) but I don’t have a great way of measuring it. The size of the Alacritty binary is 41M whereas the size of the St binary is 104K—a significant increase, but ultimately meaningless when you consider the size of contemporary storage. Also, Alacritty is configured with YAML which is a very annoying configuration format because it’s white space sensitive (like Python).

The technical advantages Alacritty does have over St is its support of colour eomji without the libxft-bgra patch and the ability to properly make use of the Delete key without needing to set set enable-keypad on in my inputrc (which didn’t even work on remote machines over SSH). Both of these workarounds are needed because Suckless refuses to patch what are technically flaws in different programs—libxft and bash respectively (and I could never get St to behave with the Delete key even after trying some patches).

As always, my dotfiles can be found in the dotfiles git repository (mirror).

This is my seventy-ninth post for the #100DaysToOffload challenge. You can learn more about this challenge over at https://100daystooffload.com.