Switching from urxvt to st
Author: Jake Bauer | Published: 2020-02-14
I spend most of my time working in the terminal. Whether it’s email with Neomutt, music with ncmpcpp, programming with Neovim, or administrating my systems, I feel the most comfortable and in control when using the terminal. That’s why it’s really important for me to have a terminal application that performs well, feels good to use, and has every feature that I need without me noticing that something isn’t working or doesn’t look quite right.
Unfortunately, since I started using urxvt about a year ago now, I’ve slowly begun to notice things missing or not working quite right. For example, despite being called “rxvt-unicode-256color”, urxvt doesn’t really handle unicode characters that well. Take a look at the example below:

This was really noticeable and, even though those unicode characters aren’t super important, it would still annoy me when I saw boxes where characters should be. This was even worse when I was browsing the Internet using lynx in urxvt (this page is the W3 Schools HTML5 Symbols Reference):

Not to mention, urxvt doesn’t have truecolour support which, while not super important to me, is definitely a bonus in st’s favour. The screenshot below shows urxvt’s output for this truecolour test:

I heard about st from other people on the Internet and from videos that I came across on Youtube and it intrigued me because of Suckless’ (the creators of st) unique philosophy regarding software development. I also gave some other terminals a try (kitty, konsole, xfce4-terminal) but either found them to need far too many dependencies, have far too many unnecessary features, or take far too long to load so I decided to give st a shot.
Once I got done configuring it and patching it with the couple additions that I wanted (a scrollback buffer and the ability to copy URLs so that I could open them in my browser), I compiled it and started playing around with it. Immediately I noticed that it felt just as fast as urxvt, it used less RAM (something like 10-15M per window instead of 20-25M), and, when testing side-by-side with urxvt, I would sometimes forget which terminal was which because st looked and felt just like urxvt. It was essentially a drop-in replacement even for the scripts that I have which launched applications using urxvt.
But, of course, I was really after better unicode and truecolour support. St delivered perfectly despite only being told to use my regular font (fallback fonts aren’t supported in st without a patch). Have a look:



I am very happy with st and I don’t at all mind the fact that I have to re-compile it when I want to make changes or if a new version is released. It feels like a personal build of the software tailored to my needs without anything else that I don’t need or don’t want.
If you want to try out st, follow this link to the st website. You can view my build of st in my dotfiles repository.