This is a list of friction-free software that I recommend using, in the spirit of the suckless list.
bspwm
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
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
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
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
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
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.