Where Is the dwm Config File?
Where suckless dwm keeps its config.h source file on Linux, and why no runtime dotfile will ever appear.
Last updated
dwm has no config file in the usual sense. Every option lives in C source that compiles into the binary itself. Customizing means copying the defaults header to a working copy, editing values, then rebuilding.
That design shocks anyone arriving from dotfile managers, but two thousand lines compile in seconds. The template ships in every tarball and clone, and the build never clobbers an existing working copy. Patches extend the same file rather than adding sidecar formats. Bar rules and key bindings compile from the same header, so one file rules all.
Where dwm stores this, by platform
~/suckless/dwm/config.h
Working copy of the defaults header in your source clone. Edit here then rebuild and reinstall. The build never overwrites this file. No runtime dotfile exists.
Frequently asked questions
How do I apply a dwm config change?
Edit config.h in your source clone, then rebuild and reinstall from that tree. The build keeps an existing config.h and never overwrites it with defaults. Log out and back in to run the new binary.
Is there really no dwm runtime config file?
No. dwm reads nothing at runtime by design, so dotfiles and config directories are always invented. Every option lives in compiled C from the source tree. Patches and overlays follow the same edit and rebuild flow.
Notice an outdated path? Let us know.