Getting Started With ST - the simple terminal
December 26, 2019
st is a simple terminal emulator from suckless tools. It provides the core features you need from a virtual terminal without being a bloated mess. While I like
st is smaller, simpler and a touch faster. Like most suckless tools,
st provides a minimal feature set, with the expectation that users will patch in additional features as wanted, or compose
st with other tools (e.g.
dmenu) to provide a more complex experience. This approach may seem a bit spartan to many - editing C for configuration isn’t the most friendly interface - but what you get is solid, easy to understand, and is very hackable. I use it on my systems because I like its minimalism.
Getting the source and building
st you’ll need a few libraries for building X applications, in particular
None of the following is surprising - clone the source, read the
README, adjust as needed, build and install.
Getting the source and basic build
Clone the source code directly from suckless.
$ git clone https://git.suckless.org/st
Change directory into the source tree
At this point, you may want to checkout the latest release tag (at time of writing it’s
git checkout 0.8.2
I’m happy building straight off master.
A simple build can be done by running
$ make st
and the binary is emitted to the source directory. It can be tested with
This is useful for testing customizations without installing system wide.
The built binary can be installed system wide using
$ sudo make clean install
Alternatively, a user installation can be done by editing
config.mk, changing the
PREFIX variable to, e.g.
~/.local/bin is on your path).
PREFIX = ~/.local
$ make clean install
If you need manpages for
st, then you will need to update your
MANPATH to include
Be aware that the
st manpage conflicts with the SCSI tape device manuals - you may want to rename the man page. Maybe you don’t care.
You can also read the man pages by telling
man about the local search path
$ man -M ~/.local/share/man st
st is usually done through editing the C files. I find it works pretty well out of the box (with
tmux used from scrollback etc). Basic settings can be changed in the
config.h configuration header file.
Further customization can be achieved by editing the C source code directly. The
st webpage has a collection of patches from other users which can be applied to add new features. I find the default setup pretty much good to go - all I do usually is tweak the font size a little in
git branch is useful for managing a collection of customizations. Changes can be rebased onto newer (or older)
st versions, and new patch files can be generated using