This document is a WORK IN PROGRESS.
This is just a quick personal cheat sheet: treat its contents with caution!
Suckless tools is a group of quality software such as
st and plenty of other
tools, with a focus on simplicity, clarity and frugality. The Suckless philosophy is about keeping
things simple, minimal and usable (believing this should become the mainstream philosophy in the IT
sector). While unfortunately, the tendency for complex, error prone and slow software seems to be
prevalent in the present-day software industry. Suckless tools intend to prove the opposite.
Table of content¶
Needed dependency for building
~/bin folder to install locally (user wide) the Suckless tools and add it to your
sucklesstools folder and clone the Suckless tools you want (e.g.
Now build them, and symlink their binary to the previously created
$ cd ~/apps/src-apps/sucklesstools/dwm $ git checkout 6.2 # checkout to the last stable release (e.g. 6.2) $ make $ ln -s /home/user/apps/src-apps/sucklesstools/dwm/dwm /home/user/bin/ $ cd ~/apps/src-apps/sucklesstools/st $ git checkout 0.8.3 # checkout to the last stable release (e.g. 0.8.3) $ make $ ln -s /home/user/apps/src-apps/sucklesstools/st/st /home/user/bin/ $ cd ~/apps/src-apps/sucklesstools/dmenu $ git checkout 4.9 # checkout to the last stable release (e.g. 4.9) $ make $ ln -s /home/user/apps/src-apps/sucklesstools/dmenu/dmenu /home/user/bin/ $ ln -s /home/user/apps/src-apps/sucklesstools/dmenu/dmenu_run /home/user/bin/ $ ln -s /home/user/apps/src-apps/sucklesstools/dmenu/dmenu_path /home/user/bin/ $ cd ~/apps/src-apps/sucklesstools/slock $ git checkout 1.4 # checkout to the last stable release (e.g. 1.4) $ make $ sudo make install # you will get errors if you don't install slock this way
After building and symlinking
dwm, you might want to add it to your
~/.xinitrc file in
order to execute it automatically when running
$ startx (for starting the
If you want more Suckless tools: https://tools.suckless.org/
If you are interested in my fork of the Suckless tools: https://gitlab.com/stephane.tzvetkov/sucklesstools
See my config as an example.
apply a patch¶
One should keep track of patches by downloading them in a folder like this one:
Find a nice patch in https://dwm.suckless.org/patches/, download it in
~/apps/src-apps/sucklesstools/patches and apply it with:
Or "by hand" reading the
patchname.diff patch, applying the diff line by line.
Finally, do not forget to:
st 0.8.3 patches examples¶
$ cd ~/apps/src-apps/sucklesstools/patches $ curl https://st.suckless.org/patches/alpha/st-alpha-0.8.2.diff > st-alpha-0.8.2.diff $ curl https://st.suckless.org/patches/scrollback/st-scrollback-20200419-72e3f6c.diff > st-scrollback-20200419-72e3f6c.diff $ curl https://st.suckless.org/patches/ligatures/0.8.3/st-ligatures-alpha-scrollback-20200430-0.8.3.diff > st-ligatures-alpha-scrollback-20200430-0.8.3.diff $ curl https://st.suckless.org/patches/keyboard_select/st-keyboard_select-0.8.2.diff > st-keyboard_select-0.8.2.diff $ curl https://st.suckless.org/patches/font2/st-font2-20190416-ba72400.diff > st-font2-20190416-ba72400.diff $ curl https://st.suckless.org/patches/vertcenter/st-vertcenter-20180320-6ac8c8a.diff > st-vertcenter-20180320-6ac8c8a.diff $ curl https://st.suckless.org/patches/anysize/st-anysize-0.8.1.diff > st-anysize-0.8.1.diff
ligaturespatch (after installing
Now one might notice that applying the
keyboard-selectpatch isn't possible after all the previous patches. In this case, patching "by hand" is the only solution: open the
st-keyboard_select-0.8.2.diffpatch in one editor and apply the diff line by line in an other.
With the following difference...
st-font2-20190416-ba72400.diffby hand (no differences) (note that it won't compile until you merge the
st-vertcenter-20180320-6ac8c8a.diffby hand (no differences)
st-anysize-0.8.1.diffby hand (no differences)
On Ubuntu, one might encounter the following error when trying to build
was not found in the pkg-config search path.
In this case install the following package:
To identify x11 input key codes, the
xev utility can be used. Just run
$ xev in your
terminal and enter the key in order to get its details. A lot of information will be output,
with the following command you can start
xev and show only the relevant parts:
If you get this error
slock: getgrnam nogroup: group entry not found, then you might want to apply this:Then don't forget to change
config.haccording to the new
If you get this error
slock: unable to disable OOM killer. Make sure to suid or sgid slock., then you might want to build
$ make clean && sudo make installto install it system wide and not just user wide.
If this cheat sheet has been useful to you, then please consider leaving a star here.