Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Configuration

dwm-titus uses two TOML config files that live-reload on save — no recompile needed for most changes.

FilePurpose
config/hotkeys.tomlAll keybindings
config/themes.tomlColors, themes, border size

For deeper changes (window rules, fonts, refresh rate), edit config.h and run make && sudo make install.


config.h Essentials

config.h is your personal copy of config.def.h. It is created automatically by make if it doesn’t exist.

$EDITOR config.h
make && sudo make install

Key Options

SettingDescription
refresh_rateMatch your monitor (default 60; set 120 for high-refresh)
fonts[]Font family and size used in the bar
colors[]Managed by themes.toml — rarely edit directly
autostart[]Programs launched on dwm start
rules[]Per-app window rules (floating, tag assignment, terminal flag)
keys[]Fallback static keybinds (prefer hotkeys.toml)
MODKEYMod4Mask = Super, Mod1Mask = Alt

Window Rules

Rules in config.h let you assign windows to specific tags or force float:

/* class      instance  title   tags mask  isfloating  isterminal  noswallow  monitor */
{ "Gimp",     NULL,     NULL,   0,         1,          0,           0,        -1 },
{ "Firefox",  NULL,     NULL,   1 << 1,    0,          0,          -1,        -1 },

hotkeys.toml — Live Keybinds

Add or change bindings without recompiling. Save the file and they apply instantly.

[vars]
terminal = "ghostty"
webapp   = "webapp-launch"

keys = [
  { mod="SUPER",       key="x",  desc="Terminal",    func="spawn", exec=["$terminal"] },
  { mod="SUPER SHIFT", key="f",  desc="Firefox",     func="spawn", exec=["firefox"] },
]

Modifier Syntax

Use space-separated modifiers: "SUPER", "SUPER SHIFT", "SUPER CTRL", "SUPER CTRL SHIFT".

Available Functions

funcParametersDescription
spawnexec=[...] or cmd="..."Run a program
killclientClose focused window
zoomPromote/demote master
focusstacki=1 or i=-1Focus next/prev window
movestacki=1 or i=-1Reorder in stack
incnmasteri=1 or i=-1Change master count
setmfactf=0.05 or f=-0.05Resize master area
setcfactf=0.25 / f=-0.25 / f=0.00Resize window slot
setlayoutlayout_idx=0/1/20=tile, 1=float, 2=monocle
togglefloatingFloat/tile window
fullscreenTrue fullscreen
togglefakefullscreenFullscreen with bar
togglebarShow/hide bar
focusmoni=1 or i=-1Focus monitor
tagmoni=1 or i=-1Send window to monitor
viewui=-1 = all tagsSwitch tag
quitExit dwm

Tag Bindings

Tag bindings auto-generate all four variants (switch, toggle-view, move, toggle-tag):

tag_keys = [
  { key="1", tag=0 },
  { key="2", tag=1 },
]

Notes on XDG Autostart

Recommend using Flatpak to install programs on startup:

flatpak install flathub io.github.flattool.Ignition

or you can create your own .desktop file in ~/.config/autostart/

set-refresh.desktop Example:

[Desktop Entry]
Type=Application
Exec=xrandr --output HDMI-0 --primary --mode 1920x1080 --pos 0x0 --rotate normal --rate 120 --output DP-0 --off --output DP-1 --off --output DP-2 --off --output DP-3 --off --output DP-4 --off --output DP-5 --off
Hidden=false
X-GNOME-Autostart-enabled=true
Name=Set Refresh
Last change: