This dwm 6.4 (9f88553, 2023-09-22) side project has a different take on dwm patching. It uses preprocessor directives to decide whether or not to include a patch during build time. Essentially this means that this build, for better or worse, contains both the patched and the original code. The aim being that you can select which patches to include and the build will contain that code and nothing more. Due to the complexity of some of the patches dwm-flexipatch has diverged from mainstream dwm by making some core patches non-optional for maintenance reasons. For the classic dwm-flexipatch build refer to branch dwm-flexipatch-1.0.
For example to include the alpha
patch then you would only need to flip this setting from 0 to 1 in patches.h:
#define BAR_ALPHA_PATCH 1
So if you have ever been curious about trying out dwm, but have been discouraged by manual patching, then this may be a good starting point to see what a "fully fledged" dwm can look like. Want to try out the pertag
patch? Just flip a config and recompile. Once you have found out what works for you and what doesn't then you should be in a better position to choose patches should you want to start patching from scratch.
Alternatively if you have found the patches you want, but don't want the rest of the flexipatch entanglement on your plate then you may want to have a look at flexipatch-finalizer; a custom pre-processor tool that removes all the unused flexipatch code leaving you with a build that contains the patches you selected.
Refer to https://dwm.suckless.org/ for details on the dwm window manager, how to install it and how it works.
If you are experiencing issues then you may want to check out the Known Issues discussion category.
Browsing patches? There is a map of patches diagram which tries to organise patches into categories.
2023-12-22 - Added the do-not-die-on-color-allocation-failure patch
2023-12-01 - Added the sendmoncenter patch
2023-11-12 - Added the focusmaster-return patch variant
2023-06-27 - Added the focusfollowmouse and unmanaged patches
2023-06-25 - Added the toggletopbar patch
2023-01-18 - Added the view history patch
2022-10-08 - Added the alt-tab patch
2022-08-12 - Added the nametag patch
2022-08-02 - Added the bidi patch
2022-07-05 - Added the tagpreview patch
2022-07-04 - Added the shift-tools patch(es) with individual toggles
2022-06-20 - Added the renamed scratchpads patch
2022-06-17 - Ported the seamless restart feature from dusk into dwm-flexipatch
2022-02-11 - Added the isfreesize version of the sizehints patch and the tagsync patch (contributed by Bagelli)
2021-11-23 - Added the taglabels and underlinetags patches
2021-09-08 - Added the alwayscenter patch
2021-07-27 - Added the winicon patch
2021-05-30 - Added togglelayout and toggletag patches
2021-04-16 - Vanitygaps: replaced smartgaps with smartgaps_fact, allowing gaps to be disabled or increased when there is only one client.
2021-04-14 - Upgraded the dwmblocks patch for statuscmd which changes the signalling mechanism from SIGUSR1 to SIGRTMIN which is likely to cause issues for those that already have a working setup. A compatibility option has been added which changes this back to SIGUSR1. Note that configuration was also changed.
2021-04-07 - Added xkb patch
2021-04-06 - Added the distributetags patch
2021-04-04 - Added option for having different gaps on a per tag basis
2021-03-31 - Added tapresize patch (contributed by verschmelzen)
2021-03-29 - Removed alwaysfullscreen patch (merged into dwm 6.2)
2021-03-09 - Added the tab patch and the LG3D patch
2021-02-11 - Added the riodraw and focusdir patches
2021-01-22 - Added the placemouse patch
2021-01-02 - Added the Layoutmenu patch
2020-10-26 - Added the _NET_CLIENT_LIST_STACKING patch
2020-09-29 - Added the on_empty_keys patch (ported from InstantOS)
2020-09-28 - Added the _IS_FLOATING patch (embedded in the EWMHTAGS patch)
2020-09-18 - Added the nomodbuttons patch allowing for toggleable mouse button bindings that have no modifiers
2020-09-10 - Added the anybar patch (with experimental support for dwm bar(s) + anybar)
2020-09-09 - Added the bar border patch
2020-09-08 - Added ipc v1.5.5 patch
2020-09-07 - Scratchpads improvement (multi-monitor support)
2020-09-05 - Assortment of fullscreen improvements
2020-08-27 - Added aspectresize patch
2020-08-25 - Unified tag icon handling while adding support for different icons per monitor. Added alttagsdecoration patch.
2020-08-22 - Added logic to auto-hide bars if nothing is drawn on them (e.g. for standalone bars that only show certain clients). Added clientindicators patch and unified indicator code. Simplified Pango integration by settling on common function signatures.
2020-08-21 - Simplification of color configuration; settling on a set of color schemes that is shared between multiple patches (urgentborder, floatborder and titlecolor patches made non-optional)
2020-08-20 - Added experimental flexwintitle patch based on bartabgroups
2020-08-13 - Added bartabgroups patch
2020-08-11 - Added decoration hints and focusmaster patches
2020-08-10 - Added cool autostart, insets and steam patches
2020-08-02 - Added reorganizetags patch
2020-07-19 - Added barmodules patch - making extrabar, leftlayout, staticstatus and statusallmons patches redundant, added powerline patch
2020-07-18 - Note: Up until now building dwm-flexipath without any patches selected would have given you something more or less identical with mainstream dwm. In order to reduce complexity when it comes to maintainance future versions of dwm-flexipatch may diverge from this by making some patches non-optional. For the classic dwm-flexipatch and its many patch integration hints refer to branch dwm-flexipatch-1.0 which will be subject to bug fixes and mainstream dwm updates as far as feasible.
2020-07-05 - Extrabar compatibility improvements (staticstatus, status2d, dwmblocks) and fix for systray randomly causing dwm to crash when first systray application starts
2020-06-24 - Added resizepoint, statusbutton and sendmon_keepfocus patches
2020-06-21 - Added floatpos and bar_height patches
2020-06-19 - Added tagothermonitor patch
2020-06-15 - Added sizehints patch
2020-06-14 - Added RULE macro to replace rules setup making the default config less of an abomination and making it simpler to include new rules based patches
2020-06-11 - Added the pango patch
2020-06-10 - Added the staticstatus patch
2020-05-31 - Added the keymodes patch
2020-05-29 - Added the color emoji patch
2020-05-26 - Added the status2d patch (with alpha, systray, statuspadding and dwmblocks compatibility, no statuscolors or extrabar compatibility)
2020-05-21 - Added the moveplace and moveresize patches
2020-05-03 - Added the shiftviewclients patch and the no transparent borders patch which removes opacity from window borders when the alpha patch is not used
2020-05-02 - Added dwmblocks patch
2020-04-27 - Upgraded the tagmonfixfs patch to better support moving fullscreen windows to adjacent monitors
2020-04-26 - Expanded monitor rules patch to include nmaster, showbar and topbar options
2020-04-23 - Improved swallow and switchtag compatibility
2020-04-16 - Upgraded the scratchpad patch to the multiple scratchpads patch [ref]. Updated the statuscolors patch with the width computation fix [ref].
2020-04-13 - Added statuscmd patch
2020-03-31 - Added the rounded corners patch
2020-03-27 - Revamped the dragmfact patch to support both horizontal and vertical layout splits as well as centered master variants
2020-03-25 - Added dragcfact patch
2020-03-23 - Added stacker patch
2020-03-21 - Reworked a series of layouts to re-allocate remaining pixels following an even (or cfacts) split with the aim of presenting a pixel perfect layout. This affects the following layouts: tile, bstack, bstackhoriz, centered master, centered floating master, columns, deck, and corresponding flextile-deluxe layouts
2020-02-11 - Added swaptags and vtcolor patches
2020-02-09 - Added alternative scratchpad patch
2020-02-02 - Added fsignal and transferall patches
2020-01-29 - Added swapfocus and shiftview patches
2020-01-26 - Added transfer patch
2020-01-24 - Added barpadding patch (incl. statusallmons, statuspadding, statuscolors, systray, alpha, holdbar and extrabar patch compatibility). Moved patches.h to patches.def.h to mimic the config pattern of having default and personal settings.
2020-01-17 - Added inplacerotate patch
2019-12-15 - Updated dragmfact patch to include fix patch to make it work with multiple monitors
2019-11-26 - Added dmenumatchtop patch, added improvements to the switchtag patch based on ideas from the switchtotag patch
2019-11-21 - Added fakefullscreenclient patch
2019-10-24 - Added dragmfact, extrabar, exresize and nodmenu patches
2019-10-22 - Added ispermanent and swallow patches
2019-10-16 - Introduced flexipatch-finalizer
2019-10-11 - Added the patch to ignore Xft errors when drawing text in the status bar
2019-10-10 - Added mpdcontrol, scratchpad and spawn_cwd cpatches
2019-10-08 - Added columns layout and fakefullscreen patch
2019-10-07 - Added sortscreens and dwmc patches, fixed minor cross-compatibility issues for combo, holdbar, leftlayout, hidevacanttags, taggrid and activetagindicatorbar
2019-10-06 - Added statuscolors and statusallmons patches, fixed minor cross-compatibility issues for killunsel, fullscreen, noborder, tagintostack patches
2019-10-05 - Added killunsel, taggrid, hidevacanttags and cmdcustomize patches
2019-10-04 - Added maximize, movestack, monoclesymbol, noborder, tagall and tagintostack patches
2019-10-03 - Added onlyquitonempty and switchcol patches
2019-10-02 - Added restartsig, emptyview, focusurgent and focusadjacenttag patches
2019-10-01 - Added leftlayout, fullscreen, holdbar and unfloatvisible patches
2019-09-30 - Replaced flextile with flextile-deluxe, refactored monitor rules to support predetermined layouts per tag
2019-09-15 - Added focusonclick, xrdb, viewontag, urgentborder and winview patches
2019-09-14 - Added setborderpx, selfrestart and push (no master variant), sticky and warp patches
2019-09-13 - Added titlecolor and push patches
2019-09-12 - Added activetagindicatorbar, alwaysfullscreen and autoresize patches
2019-09-11 - Added monitor rules, combo and ewmhtags patches
2019-09-10 - Minor tweaks to awesomebar patch (incl. alpha and systray compatibility). Added floatbordercolor patch.
2019-09-09 - Added deck, fibonacci (dwindle and spiral), gridmode, gapplessgrid, horizgrid, nrowgrid, centeredmaster and flextile layouts. Added alternativetags and awesomebar patches.
2019-09-08 - Added cfacts and vanitygaps patches, added bstack and bstackhoriz layouts
2019-09-07 - Added cyclelayouts, resizecorners, rotatestack, savefloats, statuspadding, switchtag, center and windowrolerule patches
2019-09-06 - Added attachabove, attachaside, attachbelow, attachbottom, autostart, fancybar, focusonnetactive and losefullscreen patches
2019-09-05 - Alpha, systray, togglefullscreen, tagallmon, tagmonfixfs, tagswapmon, pertag and zoomswap patches added
~/.dwm/autostart_blocking.sh
and ~/.dwm/autostart.sh &
on startup~color_emoji~
do-not-die-on-color-allocation-failure
extrastatus
flexwintitle
ignore-xft-errors-when-drawing-text
LG3D
nomodbuttons
seamless_restart
MOD+m
switches to monocle layout, hitting the same keybinding again brings
you back to the previous layoutMOD+4
lets you view tag 4 and hitting the keybinding a second time brings
you back to where you were beforeviewhistory
MOD
+Tab (view(0)
) can be pressed multiple times to go further back to earlier tag
selections