Stuff that rocks

Written on 2020-09-20

This is a list of friction-free software that I recommend using, in the spirit of the suckless list.


bspwm is a tiling window manager. It manages windows very well and does nothing else. It is controlled via a Unix socket, often via the bspc utility that it ships with. Keybindings must be handled by another program such as sxhkd (which is often packaged with bspwm). This separation of concern makes the window manager very flexible and fully scriptable.

Besides it's flexibility, it is also rock-solid, handles multiple monitors well, supports floating windows and provides nice quality of life features. Different programs can be assigned different rules to have default layouts/monitors/desktop associated with them. focus_follows_pointer and pointer_follows_focus are also very pleasant to use.

Window nodes are stored in a binary tree. The default behavior of bspwm is to split the current window in half when spawning a new window, but it also natively supports making the new window the biggest one. Again, bspwm is fully-scriptable so any layout can be implemented instead.


lf is a terminal file manager. It is very similar to ranger except that it is much snappier due to being written in Go rather than Python. It is very easy to extend, as demonstrated here. The pane layout makes it very convenient to explore directories and the client/server architecture makes it a breeze to move lots of files around by using multiple instances at once. It also ships as a single statically linked binary, which is very convenient.


pass is a password manager. It really is only a wrapper around gpg and git, which makes it safe and removes the risk of vendor/platform lock-in. Many extensions exist for it, making it easy to manage and query passwords using different programs. There are also a lot of scripts to migrate from other password management systems to pass.


borg is a stable backup system forked from Attic that provides encryption and deduplication. It can resume interrupted backups, prune backups and is generally very flexible. Note that it has two important downsides to keep in mind: both the client and server must have borg install and borg is required to recover data from backups.


fzf is a fuzzy filter. It reads lines of text from stdin, let's the user fuzzily select one or more of them and prints them to stdout. It can easily be integrated with Vim, lf, be used to fuzzily change directories, navigate shell histories, kill processes, manage passwords and much more. Like lf, it ships as a single statically linked binary.


Neovim is a community fork of Vim, which I like better for reasons explained here. Note that there are quite a few more differences between the two project, which are likely to increase over time. This article only highlights the ones that I care most about.