"It's dwm on steroids..."
MODWM is a fork of dwm 6.2 (aaad5f, 2020-07-08). It has a different take on dwm patching. Giving you two config files patches.def.h to select modules & config.def.h to configure them. It uses preprocessor directives to decide whether or not to include a patch during build time. Essentially this means that this build is modular and 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 MODWM has diverged from mainstream dwm by making some core patches non-optional for maintenance reasons. Credit to bakkeby for his upstream work on dwm-flexipatch & the suckless team for dwm which this project wouldn't be possible without.
To include the alpha
patch module you would only need to flip this setting from 0 to 1 in patches.h:
#define BAR_ALPHA_PATCH 1
Fonts: JetBrains Mono & Siji
Configuration of MODWM is done by its two config files patches.def.h & config.def.h. Simply edit patches.def.h & select which modules you want, then edit config.def.h to configure them.
This build is customised for FreeBSD (cause that's what I use). Modify the build flags in config.mk to suit your system, Linux for example. Then run:
make install
Then you can put something like this at the end of your ~/.xinitrc file:
exec dwm
MODWM supports color schemes, you can define your scheme by editing colors.h.
MODWM also includes a statusbar. It uses 'siji' to draw glyphs (icons) so please install it. You can customize the statusbar by editing the file 'statusbar.sh'. Then source it from your ~/.xinitrc like so exec /path/to/modwm/statusbar.sh &
For more quality suckless software to complement MODWM, check out my suckless utilities collection
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 modwm 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 modwm 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.
Please see commits for a more up-to-date changelog.
2021-01-30 - Added setstatus patch - Enables to set the status with dwm itself. No more xsetroot bloat! - https://dwm.suckless.org/patches/setstatus/
2021-01-02 - Added Wireless AP name and signal to /statusbars/gruvbox.statusbar this is the default statusbar now.
2020-12-31 - Added new "underline" window title indicator for tiled windows.
2020-11-30 - Added Tatami layout and layout menu patch. Install xmenu for layout menu to work.
2020-10-23 - Added 'colors' to support changing color schemes on the fly. Source them in config.def.h by #include "colors.h" Also added 'statusbar.sh' to support themed statusbars. Please install 'siji' to see glyphs.
2020-10-14 - Changed color scheme and added some extra key bindings for my ~/bin files
2020-09-13 - Added Siji tiling glyphs for the layouts button. Please install Siji font to render properly.
2020-09-12 - Added extra keybidings for suckless tools
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 modwm 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 mdpcontrol, 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 startupcolor_emoji
extrastatus
flexwintitle
ignore-xft-errors-when-drawing-text