The suckless project values simplicity, clarity and frugality in software.

Our philosophy is about keeping things simple, minimal and usable. We believe this should become the mainstream philosophy in the IT sector.

As a user of most of their programs including the infamous dwm (a tiling window manager), dmenu (launcher), st (terminal emulator) and others tools, I can attest to benefits of using minimal and efficient software.

Patching

Programs are customised by patching the C source code. However, unlike typical open source projects, suckless source code is quite readable and hackable, a by-product of the philosophy.

Because dwm is customized through editing its source code [C], it’s pointless to make binary packages of it. This keeps its userbase small and elitist. No novices asking stupid questions.

Download a patch and apply it:

patch -p1 -i cool-dwm-feature-i-need-20191002-b46028b.diff

The first few patches generally apply cleanly. After that, the base source code gets too frankensteined for patch to work with. Don’t fear, manually applying the patches using your editor is quite enjoyable.

Some suckless conventions:

  • User configuration is defined in the config.def.h header. Always maintain this file and never config.h directly.
  • I patch the clean target in the Makefile to include a @rm -f config.h
  • When building always do a clean before running install, like this make clean && sudo make install
  • Don’t use too many patches (i.e. stay vanilla as possible)
  • Get in the habit of applying the patches, as opposed to forking the git repo. Forking results in an unmaintainable mess that gets out of sync with upstream suckless changes.
  • Every so often git pull (or re-cloning if your too heavily patched) the latest fixes and enhancements, and re-patching.

dwm

Tiling window manager.

Patches:

  • centre adds the ability to centre floating windows

config.def.h mods:

  • Change MODKEY to super key
  • Define the HYPER and MEH combinations
  • Register launcher strings (const char*) for each program I want shortcuts for.
  • Register the above launcher strings to specific key bindings (e.g. HYPER + I will launch pulsemixer in a centered floating window).

st

Terminal emulator.

Patches:

  • nordtheme color theme
  • scrollback ability to scoll using shift + page-up/down
  • scollback-mouse ability to scoll using shift + mouse-scroll

config.def.h mods:

  • set font string to FuraCode Nerd Font:pixelsize=14:antialias=true:autohint=true

slock

A graphical lock screen.

Patches:

  • messages adds text based message