dwm patches
(last tallied 2024-09-27)

presentation

layout

bar

modules

tags

indicators

style

external

system

start / stop

titles

bar height
Allows absolute height of the bar to be user defined

barpadding
Adds space between the bar and the edge of the screen

bartabgroups
Window titles are arranged in groups (master, stack, floating)

arrangement

centeredmaster
The master area is centered with stack clients placed on the sides

awesomebar
All window titles are evenly shown and are clickable

centeredwindowname
Centers the client's name on the bar

centretitle
Centers the client's name on the bar (duplicate of centeredwindowtitle)

functionality

activetagindicatorbar
Changes client indicator to a bar above the tag

clientindicators
Each tag icon is overlayed with dots representing the number of clients

interaction

cmdcustomise
Adds command line options to specify font and color settings

keyboard

columns
As tile layout, but clients in master area are arranged in columns

cyclelayouts
Cycle through all available layouts

deck
master + monocle stack layout

mouse

fibonacci
Adds fibonacci spiral and dwindle layouts

flextile
Replaces the tile layout with a more flexible version

flextile-deluxe
A layout that expands on flextile adding more features

fancybar
All window titles are shown

notitle
Removes the display of the client title from the bar

alpha
Enables translucent bar while keeping text opaque

colorbar
Specify foreground and background color for each bar element

combo
Select multiple tags at once

cool autostart
Specify applications that start up automatically with dwm

dmenu

dmenumatchtop
Makes dmenu position respect topbar setting

status

dualstatus
Enables an extra status bar

control

extrabar
Enables an extra status bar

dwmfifo
Send commands to dwm via a FIFO file

tags

focus adjacent tag
Enables focusing on the tag on the immediate right or left of the currently focused tag

screen

freespace
Reserve space at the borders of the screen to give room to external panels

fsignal
Send "fake signals" to dwm using xsetroot name

gaps

fullgaps
Add even gaps between client windows

bottomstack
Stack clients are placed below the master

gappless grid
A grid layout that leaves no gaps

gaps
Adds inner gaps between clients

gestures
Adds support for simple mouse gestures

gridmode
Clients are arranged in a grid of equal sizes

hide vacant tags
Avoids drawing tags that are not occupied by any clients

interaction

horizontal grid
Clients are arranged in a grid with two rows

stack

inplacerotate
Changes order of clients within a given area (master, stack)

insets
Reserve space at the borders of the screen to give room to external panels

dwmc
Shell script using fsignal to communicate with dwm

ipc
Control dwm through a socket

colemak keys
Changes default keybindings to match the colemak keyboard layout

keychain
Chain multiple keybindings together

keycodes
Use keycodes (e.g. 36) instead of keysyms (e.g. XK_Return)

keymodes
Introduces different key modes (like in vim) for triggering shortcuts

keypressrelease
Keybindings can trigger on both KeyPress and KeyRelease

misc

layout

leftlayout
Moves the layout symbol to the left hand side of the bar

leftstack
Swaps the master and stack areas of the tile layout

mark
Focus or swap between two clients (current + marked)

layoutmenu
Shell script providing a layout context menu (using xmenu)

monocle count
Prints the number of clients next to the monocle layout symbol

monoclesymbol
Always show monocle symbol (no client count)

movestack
Move clients around the stack and swap them with the master

mdpcontrol
Control mdp (Music Player Daemon) via keybindings

multikey
Trigger a single key combination multiple times for different outcomes

nametag
Allows for the names of tags to be changed during runtime

emptyview
Have dwm start with no tag selected

next prev tag
Move to the next or previuos tag

nodmenu
Removes hardcoded dmenu integration from dwm

nrowgrid
Grid layout where the number of rows is controlled using nmaster

onlyquitonenmpty
Only allow dwm to be exited if the number of windows is less than criteria

pango
Adds support for pango markup for status messages

pertag
Layout, mfact, nmaster, etc. is controlled on a per tag basis

bsd

pledge
Restrict system operations on OpenBSD using pledge

push
Move (push) clients up and down the stack

pwkl
Adds per-window keyboard layout support

reorganizetags
Shift all clients per tag to leftmost unoccupied tags

resetlayout
Resets the layout and mfact if there is only one client visible

resetnmaster
Helper function to set nmaster back to 1

restartsig
Allows dwm to be restarted

rmaster
Changes the tile layout so that master and stack areas can swap places

rotatestack
Rotates the entire stack

ru gaps
Adds gaps that can be changed during runtime

colors

scheme switch
Allows for cycling through multiple color schemes

anybar
Allows dwm to manage external bars

script tags
Removes the drawing of the bar in favour of piping tag states to a FIFO file which can be read by external bars

selfrestart
Allows dwm to be restarted (allegedly)

setstatus
Adds a command line option to set dwm status (root name)

showselmon
Unselected monitors use inverted colors in the bar to make the selected monitor stand out

single tagset
A single set of tags are shared by all monitors (rather than one tagset per monitor)

singular borders
Makes client borders overlap (tile layout hack)

smartborders
Remove the client border when there is only one window visible (tile layout hack)

splitstatus
Adds a center status (replacing window title)

stacker
Keybindings to focus on, or push, any client in the stack

stackmfact
Vertically resize clients in the stack

staticstatus
Status is shown on a specific monitor, rather than following focus

statusallmons
The status is shown on all monitors, rather than following focus

status2d
Enables colors and rectangle drawing in the status area

statusbutton
Adds a clickable button on the left hand side of the bar

statuscmd
Adds click functionality for the status

statuscolors
Adds support for colors in the status (based on predefined color schemes)

statuscolors
Adds support for colors in the status (based on predefined color schemes)

statuspadding
Allows for adjustments to the bar height and the left/right padding

stdin
Allows for status text to be read from standard in

swapfocus
Single shortcut to focus on the previous client

cfacts
A client's size compared to others in the stack is determined by weight

swaptags
Swaps the clients between two tags

alttagsdecoration
Tags change when occupied by clients

systray
Adds a simple systray for the dwm bar

tab
A tabbed layout (monocle hack)

tagall
Move all (or only floating) windows from one tag to another

taggrid
Presents tags in a grid

tagintostack
Clients attach into the stack area when a new tag is toggled into view leaving master area unchanged

tagothermonitor
Move a window to a specific tag on an adjacent monitor

tatami
Clients are arranged like tatami tiles

three column
A three column layout similar to that of the centered master

tilegap
Adds gaps for the tile layout

titlecolor
Adds a new color scheme used by the window title

transfer
Let's you move clients between master and stack areas while incrementing or decrementing nmaster respectively

transferall
Swaps all clients between the master and stack areas

urgentborder
Adds a new color scheme for urgent windows

uselessgap
Adds even gaps between clients and border (resizeclient hack)

vanitygaps
Control inner, outer, horizontal and vertical gaps independently

viewontag
Follow a window to the tag it is being moved to

vtcolors
Makes dwm to read colors from the linux virtual console

warp
Warps the mouse cursor to the currently focused window

winview
Switch to a client's tag from the all-window view (MOD+0)

xkb
Remembers the xkb layout per client

xrdb
Allows dwm to read colors from xrdb (.Xresources) at run time

xresources
Reads colors and additional settings from Xresources

xtile
Provides 16 possible layouts controlled by attributes that determine how master and stack areas are arranged

zoomswap
Swaps the current and master window leaving other clients in place

dragmfact
Lets you change the split between master and tile using the mouse

dragmfact (smooth)
Variant of dragmfact providing direct feedback

dragcfact
Lets you change a client's cfact using the mouse

monitorrules
Preconfigure what layouts are used on what monitors / tags

shiftviewclients
Cycle through tags that have clients (skips empty tags)

shiftview
Cycle through tags with a circular shift

tagallmon
Moves all visible clients on one monitor to an adjacent monitor

tagswapmon
Swaps all visible clients on one monitor with all visible clients on an adjacent monitor

tagicons
Combines and expands on multiple tag patches

monitortags
Define tag icons on a per-monitor basis

barmodules
Rewrites the bar to be more modular

sortscreens (2)
Sorts screens such that the leftmost screen is monitor 0

bar border
Adds a border around the bar similar to that of clients

dwmblocks (2)
Adds support for clickable dwmblocks via statuscmd

on empty keys
Enables special keybindings for empty tags

powerline
Adds powerline status and powerline tags

powerline
Adds powerline status and powerline tags

zoomfloating
Allows floating windows to be (force tiled) and zoomed

autostart
Have dwm run designated shell scripts on startup

clients per tag
Adds a limit on the number of visible clients per tag

alternativetags
Switch between two sets of tags

placemouse
Lets you change a client's position in the stack using the mouse

riodraw
Draw the area on the screen where a window is to spawn (or resize)

togglelayout
Toggle layout using the usual layout keybindings

toggletag
Toggle tags using the same tag shortcut (e.g. MOD+4)

rainbowtags
Each tag has a unique color when selected

blanktags
Replaces tag numbers with squares

accessnthmonitor
Focus on, or send windows to, a specific monitor

spawnprograms
Have dwm spawn predefined programs on startup

azerty
Use appropriate shortcuts for azerty keyboards

goback
Go back to the previously active tag (across monitors)

graballkeycodes
Increases the amount of symbolic keys that can be bound in config.h

nmaxmaster
Limits the number of clients in the master area

rearrangebar (a.k.a. rightlayout)
Moves the layout symbol to the right hand side of the bar

stickyindicator
Adds a special indicator for sticky clients

taglabels
Includes the master client's name in the tag

underlinetags
Underline the active or all tags

columngaps
Adds gaps for the columns layout

functionalgaps
Combines fullgaps with singular borders and noborder patches

cursorwarp
Warps the mouse cursor when changing windows and/or monitors

rotatetags
Rotates tags left / right. Duplicate of the shiftview patch.

winicon
Adds window icons next to the window title(s) in the bar

xfce4-panel
Misguided attempt at integrating the xfce4-panel into dwm

environmentvars
Read terminal emulator from the TERMINAL environment variable instead of hardcoding it in the configuration file

layoutscroll
Cycle through all available layouts

relativecontrols (2)
Allows movement between tags relative to the currently selected tag

sendmoncenter
Floating clients sent to an adjacent monitor will be centered

shift-tools
Compilation of shiftview, shiftviewclients, focusadjacenttag patches and more

tag-previews
Show a preview when hovering the mouse cursor over a tag

sxp layout
Enables custom layouts using simplified s-expressions

keychord
Allows for the mapping of a sequence of key strokes for keybindings

layoutmonitorrules
Adds support for automatic adjustment of mfact/nmaster based on the resolution of the monitor

statusbarfont
Allows for a separate font to be used for the status

locktagsfor
Locks the currently selected tags for a duration (prevents changing tags)

statusmon
Status is shown on a specific monitor, rather than following focus (duplicate of staticstatus)

defaultlayoutpermonitor
Allows for set a default layout on a per monitor basis

barconfig
Allows for the bar layout to be controlled using config

doublepressquit
Keybinding to quit dwm must be pressed twice to quit

integrated-status-text
Integrates dwmblocks implementation within dwm itself

bidi
Adds support for right-to-left (RTL) languages such as Farsi, Arabic or Hebrew.

sgrstatus
Allows the use of CSI SGR escape sequences to change text formatting

xtheme
Use compile time scripts to change colors

win31theme
Instructions for how to make config changes to make dwm look like Windows 3.1

clientmonoclesymbol
Adds alternative symbols for monocle layout depending on the number of clients

mainmon
Status is shown on a specific monitor, rather than following focus
(duplicate of staticstatus and statusmon)

stairs
Similar to the deck layout, but clients in the stack area are arranged like stairs

tilewide
As tile layout, but clients in master area are arranged in columns (duplicate of the columns patch)

truecenteredtitle
Centers the title within the area of the bar designated for the window title

viewonrulestag
Follow a window to the tag it is assigned to, but only if tags are set via client rules. Alternative to viewontag and switchtotag patches.

switch all monitor tags
Option to switch the selected tags on all monitors in unison. Also see the desktop patch.

desktop
Makes all monitors view the same tag, giving the impression that the tag spans all monitors and that there are only nine tags

preserveonrestart
Makes clients retain their tags following restart

alt-tab
Adds alt-tab functionality to dwm allowing cycling through open windows

restoreafterrestart
Makes clients retain their tags following restart

horizontal-vertical-i3
Changes nmaster to a toggle of 1 or 0 clients in the master area

quitprompt
Replaces the default quit behaviour with a dmenu prompt

tagshift
Cycle through tags with a circular shift. Duplicates the shiftview patch and functionality of shift-tools.

holdbar
Only show the bar when a designated key is held down

bartoggle
Allows toggling of individual modules on the bar

toggletopbar
Allows toggling between top and bottom bar

exitmenu
Integrated menu to exit dwm

tagfun
Re-use tags as function triggers invoked with middle mouse button

unicode-ellipsis
Use the unicode ellipsis (ā€¦) rather than three periods for long text

taglayouts
Sets default layout for each tag (depends on pertag)

multimon
Collection of patches for multi-monitor setups

zeroastag
Modifies the 0 keybinding to make it a regular tag.

window management

EWMH

_IS_FLOATING
Sets the _IS_FLOATING property for clients

windowrolerule
Allows the WM_WINDOW_ROLE to be taken into account for rule filtering

netclientliststacking
Adds _NET_CLIENT_LIST_STACKING to dwm

ewmhtags
Adds EWMH support for _NET_NUMBER_OF_DESKTOPS, _NET_CURRENT_DESKTOP, _NET_DESKTOP_NAMES, and _NET_DESKTOP_VIEWPORT

default transparency
Sets the _NET_WM_WINDOW_OPACITY for new clients

decoration hints
Makes dwm respect _MOTIF_WM_HINTS to not draw borders around windows that request it

current desktop
Sets _NET_NUMBER_OF_DESKTOPS and _NET_CURRENT_DESKTOP

clientopacity
Allows opacity to be specified on a per-client basis

togglebartag
Allows for the bar to be toggled on each tag separately (without pertag)

masterstacker
Variant of the stacker patch that differentiates between master and stack areas

banish
Automatically hides the mouse cursor when keyboard is used

qubesdecorations
Allows dwm to read QubesOS specific window properties for presentation purposes

client

fullscreen

fakefullscreen
Only allow clients to go fullscreen within the space currently given to them

fullscreen
Applies monocle layout and hides the bar

selectivefakefullscreen
Adds rule indicating whether a client should fake fullscreen or not

fakefullscreenclient
Enable fake fullscreen on a per client basis

fullscreen compilation
Collection of patches aimed at solving most fullscreen issues

losefullscreen
Fullscreen windows lose fullscreen when they lose focus

tagmonfixfs
Allows a fullscreen window to be moved to an adjacent monitor

togglefullscreen
Use a single keybinding to toggle fullscreen

actualfullscreen
Toggles fullscreen for a window

ratiofullscreen
Intended for old games that do not handle fullscreen correctly thus not occupying the entire monitor

focusfullscreen
Allows you to cycle focus through different clients while in actual fullscreen

functionality

alwaysontop
Clients can be toggled to always be shown on top of others

cropwindows
Creates cropped views of existing windows

killunsel
Kill all visible clients except the selected one

save floats
Saves and restores size and position of floating windows

sizehints
Makes dwm obey even soft sizehints for new clients

steam
Hacks to make the Steam client misbehave less

sticky
Make clients sticky (visible on all tags)

alwayscenter
Forcing all floating windows to be centered on the screen

swallow
Enables "window swallowing" as known from Plan 9's rio

unfloatvisible
Forces all floating clients to be tiled, optionally sets a layout

dynamicswallow
Like swallow, but with manual control over which windows swallows what

togglefloatingcenter
Tiled windows that are toggled to be floating will be centered

swallow-tmux
Patch for the swallow patch to enable swallowing of terminals within tmux

move / resize

aspectresize
Resize windows while keeping the aspect ratio constant

autoresize
Allows windows to be resized even if they are not visible

exresize
Allows changing the size and position of floating windows using the keyboard

maximize
Helper functions for maximizing floating clients horizontally and vertically

move on tagmon
Moves floating windows if their monitor changes (assumes monitors of equal size)

moveplace
Position floating windows at 9 predefined positions N, NW, W, etc.

moveresize
Move and resize clients using keyboard shortcuts

movethrow
Move windows to the edge of the screen in any four directions

movetoedge
Position floating windows at 9 predefined positions

resizecorners
Resize windows from any corner, not just the bottom right

resizepoint
Resize windows from any point (cursor won't warp to corner)

tapresize
Allows resizing of windows using a touchpad

floatpos
Provides comprehensive ways of positioning floating windows

placedir
Move tiled a window in a given direction (up, down, right, left)

movecenter
Adds a keybinding to center focused windows

movekeyboard
Move floating windows on the x and y axis using the keyboard

attach

attachabove
Clients attach above (before) the selected client

attachaside
Clients attaches after the first master

attachasideandbelow
Combination between attachaside and attachbelow

attachbelow
Clients attach below (after) the selected client

attachbottom
Clients are attached at the end of the stack

attachdirection
Combination of attachabove, -aside, -below, -bottom and -top

attachtop
Clients are attached at the top of the stack

rules

allowkillrule
Avoid clients from being killed using killclient (duplicate of ispermannet)

canfocusrule
Prevent clients from receiving focus

center
Control which floating clients are initially centered on the screen

clientopacity
Allows opacity to be specified on a per-client basis

floatrules
Allow rules for absolute positioning of floating clients

ispermanent
Avoid clients from being killed using killclient

selectivefakefullscreen
Adds rule indicating whether a client should fake fullscreen or not

sizehints
Adds a rule making dwm obey even soft sizehints for new clients

switchtotag
Adds a rule option to switch to the designated tag when a window opens, then switch back when it closes

xkb
Adds a rule to specify an xkb layout per client

floatpos
Allows for monitor relative or absolute positioning of floating clients

switchtag
Adds a rule option to switch to, or enable, the designated tag when a window opens, then optionally switch back when it closes

windowrolerule
Allows the WM_WINDOW_ROLE to be taken into account for rule filtering

notallowed
Automatically kills windows that are marked as not allowed

centerfirstwindow
Rule to center the window if it is the only visible window

unmanaged
Adds a rule option indicating that the window is not to be managed by the window manager

rulerefresher
Allows client rules to be run again when a window changes name

ignore transient windows
Adds a client rule option to ignore transient windows as a workaround for applications that do not behave correctly

qubesrules
Allows QubesOS specific window properties _QUBES_LABEL and _QUBES_VMNAME to be used for rule matching

style / border

float border color
Allows a different border color to be specified for floating windows

noborder
Remove the client border when there is only one window visible

removeborder
Remove the client border when there is only one window visible

setborderpx
Change a client's border pixels during runtime

singular borders
Makes client borders overlap (tile layout hack)

smartborders
Remove the client border when there is only one window visible (tile layout hack)

urgentborder
Adds a new color scheme for urgent windows

no transparent borders (2)
Makes borders opaque despite transparency set by compositors

roundedcorners
Decorates client windows with rounded corners

hideborder
Changes the border color of active client to the background color

fadeinactive
Canges the opacity of inactive windows

noborderflicker
Defers setting the window border to avoid flickering when changing focus

floatborderwidth
Allows tiled and floating windows have different border sizes

toggleborder
Toggles the display of the border for the selected client on and off

windowmap
Makes windows unmap and map when changing tags to achieve fading effects when using a compositor

focus

focusmaster
Switch focus to the master client

focusonclick
Removes sloppy focus in favour of explicit click to focus

focusonnetactive
Allow clients sending _NET_ACTIVE_WINDOW requests to be focused (rather than setting urgency bit)

focusurgent
Change focus to the client that is marked as urgent

switchcol
Switch focus between the master and stack areas

focusdir
Focus on clients in a given direction (up, down, left, right)

sendmon keepfocus
Allow clients to keep focus when being sent to another monitor

destroyfocus
Focus on the client under the mouse cursor rather than the next in the stack when a window is closed

canfocusfloating
Allows disabling focus on floating clients

killfocusnext
Focus on the next client when killing a client

windowfollow
Makes view follow a window when it is moved to another tag or monitor (toggleable)

spawn

scratchpads

scratchpad
Adds a single scratchpad application

scratchpads
Enables multiple scratchpads via special tags

namedscratchpads
Allows for the creation of multiple named scratchpad windows

dynamicscratchpads (2)
A scratchpad where clients are stacked (lifo).

multimonitorscratchpads
A scratchpad implementation for multiple monitors

renamedscratchpads
An evolution of the namedscratchpads patch

multipledynamicscratchpads
Allows the spawning and restoring of multiple floating windows

scratchtagwins (2)
Scratchpad tags support for named scratchpads

spawn cwd
Spawned applications inherit selected client's working directory

ssh aware spawn
Spawn a new terminal that try to ssh to same server as currently selected terminal

riodraw
Draw the area on the screen where a window is to spawn (or resize)

spawntag
Middle-click on tags to spawn predefined programs

default tag applications
Spawn predefined programs depending on what tag is active

spawnprograms
Have dwm spawn predefined programs on startup

tagspawn
Spawn predefined programs depending on what tags are active

commands

goatcmd
Adds a spawn command to play goat windows on the fly

rebootcmd
Adds a spawn command to reboot your computer

shutdowncmd
Adds a spawn command to shut down your computer

focusfollowmouse
Mouse cursor determines what window gets focus when changing tags

focusfollowmouse
Mouse cursor determines what window gets focus when changing tags

tagcolorscheme
Removes indicators in favour of tag colour schemes

tagcolorscheme
Removes indicators in favour of tag colour schemes

focusbynum
Duplicate of the stacker patch that only supports focus change

stacker
Keybindings to focus on, or push, any client in the stack

baratanyedge
Allows for the bar to be rotated and become a vertical bar

activemonitor
Always show which monitor is active / selected regardless of whether there are clients present

alt-tab-class
Variant of the alt-tab patch that additionally allows the user to alt-tab between windows that share the same class

desktoponly
Configuration change to make dwm use a launcher other than dmenu_run

fixmultimon
Workaround patch to avoid window under the mouse cursor to get input focus when operating on another monitor using keybindings

horizontal
Arranges clients as columns; same as the col(umns) layout just without nmaster support

refreshrate
Removes the frame rate restriction for move and resize operations

resizehere
Resize windows from any point (cursor won't warp to corner)

setxkbgroup
Allows keyboard layout to be switched using keyboard shortcuts

borderrule
Allows client border size to be specified via client rules

statusbarfont
Use a separate font for the status text

tiledmove
Move tiled clients around the stack using the mouse, similar to placemouse

autostarttags
Allows dwm to execute commands on specific tags during startup (bypasses rules)

alttab2
Simplified variant of the alt-tab patch that depends on winview

bulkill
Adds options to kill all visible windows, or all but selected like killunsel

launcher-colors
Adds program launcher icons that can be assigned individual colors

launcher
Command shortcuts accessible directly from the bar

focusvisibletagstacks
Cycle through visible windows across monitors

colorschemes
Define multiple color schemes and cycle between them

autodarkmode
Have dwm switch between a light and dark mode based on the presence of a file in your home directory

dash_above_activeWindow
Adds a line above the active window title instead of changing the background colour

foreground
Have tiled windows that are in the foreground of other windows, (e.g. like centered floating master)

cyclewindows
Change focus between windows of the same class

effects

preview-all-windows
A full-screen ExposƩ-style standalone task switcher similar to skippy-xd

autoraise-windows
Automatically raise floating windows on hover

centered tags
Places the tags section in the middle of the bar and removes the window title

preventfousshift
Fullscreen windows lose fullscreen when new window is spawned (duplicate of losefullscreen)

torus
Allows the mouse cursor wrap around the screen

autoswitch
Automatically switch to monocle layout after opening N windows

clientresizehints
Allows for whether to respect size hints or not to be controlled on a per client basis