Window Rules
Window rules live in rules.toml (path is set via [rules] in wm.toml).
They are reloaded by Super+R together with wm.toml. A missing file means no rules.
Matching
Section titled “Matching”Rules are evaluated on manage_start and on app_id / title changes.
First match wins. At least one matcher (app_id, class, or title) is
required — rules with none are dropped with a warning.
[[window]]app_id = "dota2"layout = "game-mode"anchor = "center" # center | top | bottom | left | rightsize = "native" # "native" | "WxH" | "FxF"scale = 1.0tag = 9fullscreen = falseSizing another app
Section titled “Sizing another app”[[window]]class = "steam_app_570"layout = "game-mode"size = "1920x1080"Per-window opacity
Section titled “Per-window opacity”opacity is a 0.0..1.0 fraction; omit it to inherit the global [opacity]
default from wm.toml.
[[window]]app_id = "com.mitchellh.ghostty"opacity = 0.85
[[window]]app_id = "mpv"opacity = 1.0 # force fully opaqueGame-mode engine
Section titled “Game-mode engine”Options for the game-mode layout. They only apply when at least one rule
targets layout = "game-mode".
[game_mode]remainder_layout = "rows" # tile | grid | monocle | scrolling | float | rowsgaps_inner = 8fallback_layout = "grid" # used when no anchor window is present on the output