Another copy of my dotfiles. Because I don't completely trust GitHub.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

690 lines
39 KiB

  1. This dwm 6.2 (bb2e72, 2020-07-08) 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](https://github.com/bakkeby/dwm-flexipatch/tree/dwm-flexipatch-1.0).
  2. For example to include the `alpha` patch then you would only need to flip this setting from 0 to 1 in [patches.h](https://github.com/bakkeby/dwm-flexipatch/blob/master/patches.def.h):
  3. ```c
  4. #define BAR_ALPHA_PATCH 1
  5. ```
  6. 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.
  7. 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](https://github.com/bakkeby/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.
  8. Refer to [https://dwm.suckless.org/](https://dwm.suckless.org/) for details on the dwm window manager, how to install it and how it works.
  9. ---
  10. ### Changelog:
  11. 2021-02-11 - Added the riodraw and focusdir patches
  12. 2021-01-22 - Added the placemouse patch
  13. 2021-01-02 - Added the Layoutmenu patch
  14. 2020-10-26 - Added the \_NET\_CLIENT\_LIST\_STACKING patch
  15. 2020-09-29 - Added the on\_empty\_keys patch (ported from InstantOS)
  16. 2020-09-28 - Added the \_IS\_FLOATING patch (embedded in the EWMHTAGS patch)
  17. 2020-09-18 - Added the nomodbuttons patch allowing for toggleable mouse button bindings that have no modifiers
  18. 2020-09-10 - Added the anybar patch (with experimental support for dwm bar(s) + anybar)
  19. 2020-09-09 - Added the bar border patch
  20. 2020-09-08 - Added ipc v1.5.5 patch
  21. 2020-09-07 - Scratchpads improvement (multi-monitor support)
  22. 2020-09-05 - Assortment of fullscreen improvements
  23. 2020-08-27 - Added aspectresize patch
  24. 2020-08-25 - Unified tag icon handling while adding support for different icons per monitor. Added alttagsdecoration patch.
  25. 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.
  26. 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)
  27. 2020-08-20 - Added experimental flexwintitle patch based on bartabgroups
  28. 2020-08-13 - Added bartabgroups patch
  29. 2020-08-11 - Added decoration hints and focusmaster patches
  30. 2020-08-10 - Added cool autostart, insets and steam patches
  31. 2020-08-02 - Added reorganizetags patch
  32. 2020-07-19 - Added barmodules patch - making extrabar, leftlayout, staticstatus and statusallmons patches redundant, added powerline patch
  33. 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](https://github.com/bakkeby/dwm-flexipatch/tree/dwm-flexipatch-1.0) which will be subject to bug fixes and mainstream dwm updates as far as feasible.
  34. 2020-07-05 - Extrabar compatibility improvements (staticstatus, status2d, dwmblocks) and fix for systray randomly causing dwm to crash when first systray application starts
  35. 2020-06-24 - Added resizepoint, statusbutton and sendmon_keepfocus patches
  36. 2020-06-21 - Added floatpos and bar_height patches
  37. 2020-06-19 - Added tagothermonitor patch
  38. 2020-06-15 - Added sizehints patch
  39. 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
  40. 2020-06-11 - Added the pango patch
  41. 2020-06-10 - Added the staticstatus patch
  42. 2020-05-31 - Added the keymodes patch
  43. 2020-05-29 - Added the color emoji patch
  44. 2020-05-26 - Added the status2d patch (with alpha, systray, statuspadding and dwmblocks compatibility, no statuscolors or extrabar compatibility)
  45. 2020-05-21 - Added the moveplace and moveresize patches
  46. 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
  47. 2020-05-02 - Added dwmblocks patch
  48. 2020-04-27 - Upgraded the tagmonfixfs patch to better support moving fullscreen windows to adjacent monitors
  49. 2020-04-26 - Expanded monitor rules patch to include nmaster, showbar and topbar options
  50. 2020-04-23 - Improved swallow and switchtag compatibility
  51. 2020-04-16 - Upgraded the scratchpad patch to the multiple scratchpads patch \[[ref](https://lists.suckless.org/hackers/2004/17205.html)\]. Updated the statuscolors patch with the width computation fix \[[ref](https://lists.suckless.org/hackers/2004/17207.html)\].
  52. 2020-04-13 - Added statuscmd patch
  53. 2020-03-31 - Added the rounded corners patch
  54. 2020-03-27 - Revamped the dragmfact patch to support both horizontal and vertical layout splits as well as centered master variants
  55. 2020-03-25 - Added dragcfact patch
  56. 2020-03-23 - Added stacker patch
  57. 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
  58. 2020-02-11 - Added swaptags and vtcolor patches
  59. 2020-02-09 - Added alternative scratchpad patch
  60. 2020-02-02 - Added fsignal and transferall patches
  61. 2020-01-29 - Added swapfocus and shiftview patches
  62. 2020-01-26 - Added transfer patch
  63. 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.
  64. 2020-01-17 - Added inplacerotate patch
  65. 2019-12-15 - Updated dragmfact patch to include fix patch to make it work with multiple monitors
  66. 2019-11-26 - Added dmenumatchtop patch, added improvements to the switchtag patch based on ideas from the switchtotag patch
  67. 2019-11-21 - Added fakefullscreenclient patch
  68. 2019-10-24 - Added dragmfact, extrabar, exresize and nodmenu patches
  69. 2019-10-22 - Added ispermanent and swallow patches
  70. 2019-10-16 - Introduced [flexipatch-finalizer](https://github.com/bakkeby/flexipatch-finalizer)
  71. 2019-10-11 - Added the patch to ignore Xft errors when drawing text in the status bar
  72. 2019-10-10 - Added mpdcontrol, scratchpad and spawn_cwd cpatches
  73. 2019-10-08 - Added columns layout and fakefullscreen patch
  74. 2019-10-07 - Added sortscreens and dwmc patches, fixed minor cross-compatibility issues for combo, holdbar, leftlayout, hidevacanttags, taggrid and activetagindicatorbar
  75. 2019-10-06 - Added statuscolors and statusallmons patches, fixed minor cross-compatibility issues for killunsel, fullscreen, noborder, tagintostack patches
  76. 2019-10-05 - Added killunsel, taggrid, hidevacanttags and cmdcustomize patches
  77. 2019-10-04 - Added maximize, movestack, monoclesymbol, noborder, tagall and tagintostack patches
  78. 2019-10-03 - Added onlyquitonempty and switchcol patches
  79. 2019-10-02 - Added restartsig, emptyview, focusurgent and focusadjacenttag patches
  80. 2019-10-01 - Added leftlayout, fullscreen, holdbar and unfloatvisible patches
  81. 2019-09-30 - Replaced flextile with flextile-deluxe, refactored monitor rules to support predetermined layouts per tag
  82. 2019-09-15 - Added focusonclick, xrdb, viewontag, urgentborder and winview patches
  83. 2019-09-14 - Added setborderpx, selfrestart and push (no master variant), sticky and warp patches
  84. 2019-09-13 - Added titlecolor and push patches
  85. 2019-09-12 - Added activetagindicatorbar, alwaysfullscreen and autoresize patches
  86. 2019-09-11 - Added monitor rules, combo and ewmhtags patches
  87. 2019-09-10 - Minor tweaks to awesomebar patch (incl. alpha and systray compatibility). Added floatbordercolor patch.
  88. 2019-09-09 - Added deck, fibonacci (dwindle and spiral), gridmode, gapplessgrid, horizgrid, nrowgrid, centeredmaster and flextile layouts. Added alternativetags and awesomebar patches.
  89. 2019-09-08 - Added cfacts and vanitygaps patches, added bstack and bstackhoriz layouts
  90. 2019-09-07 - Added cyclelayouts, resizecorners, rotatestack, savefloats, statuspadding, switchtag, center and windowrolerule patches
  91. 2019-09-06 - Added attachabove, attachaside, attachbelow, attachbottom, autostart, fancybar, focusonnetactive and losefullscreen patches
  92. 2019-09-05 - Alpha, systray, togglefullscreen, tagallmon, tagmonfixfs, tagswapmon, pertag and zoomswap patches added
  93. ### Patches included:
  94. - [activetagindicatorbar](https://dwm.suckless.org/patches/activetagindicatorbar/)
  95. - this patch changes the rectangle indicating if a tag is used by a client into a bar above the tag name
  96. - [alpha](https://dwm.suckless.org/patches/alpha/)
  97. - adds transparency for the status bar
  98. - [alternativetags](https://dwm.suckless.org/patches/alternativetags/)
  99. - adds alternative tags which can be toggled on the fly for the sole purpose of providing visual aid
  100. - [alttagsdecoration](https://dwm.suckless.org/patches/alttagsdecoration/)
  101. - provides the ability to use alternative text for tags which contain at least one window
  102. - [alwaysfullscreen](https://dwm.suckless.org/patches/alwaysfullscreen/)
  103. - prevents the focus to drift from the active fullscreen client when using focusstack\(\)
  104. - [anybar](https://dwm.suckless.org/patches/anybar/)
  105. - enables dwm to manage external status bars such as lemonbar and polybar
  106. - dwm treats the external bar as it would its own, so all regular dwm commands such as togglebar affect the external bar in the same way
  107. - [aspectresize](https://dwm.suckless.org/patches/aspectresize/)
  108. - allows windows to be resized with its aspect ratio remaining constant
  109. - [attachabove](https://dwm.suckless.org/patches/attachabove/)
  110. - new windows are placed above selected client
  111. - [attachaside](https://dwm.suckless.org/patches/attachaside/)
  112. - new windows are placed on top of the stack
  113. - [attachbelow](https://dwm.suckless.org/patches/attachbelow/)
  114. - new windows are placed below selected client
  115. - [attachbottom](https://dwm.suckless.org/patches/attachbottom/)
  116. - new windows are placed at the bottom of the stack
  117. - [autoresize](https://dwm.suckless.org/patches/autoresize/)
  118. - by default, windows that are not visible when requesting a resize/move will not get resized/moved, with this patch, however, they will
  119. - [autostart](https://dwm.suckless.org/patches/autostart/)
  120. - makes dwm run `~/.dwm/autostart_blocking.sh` and `~/.dwm/autostart.sh &` on startup
  121. - [awesomebar](https://dwm.suckless.org/patches/awesomebar/)
  122. - enhanced taskbar that allows focus / hiding / unhiding of windows by clicking on the status bar
  123. - [bar_border](https://codemadness.org/paste/dwm-border-bar.patch)
  124. - adds a border around the bar similarly to how client windows have borders
  125. - [bar_height](https://dwm.suckless.org/patches/bar_height/)
  126. - allows the bar height to be explicitly set rather than being derived from font
  127. - [barmodules](https://github.com/bakkeby/patches/wiki/barmodules/)
  128. - splits the dwm bar into modules allowing for re-arrangement of the bar and easier integration for new features
  129. - [barpadding](https://dwm.suckless.org/patches/barpadding/)
  130. - adds vertical and horizontal space between the statusbar and the edge of the screen
  131. - [bartabgroups](https://dwm.suckless.org/patches/bartabgroups/)
  132. - turns the titlebar area into a mfact-respecting tab-bar showing each client's title
  133. - [center](https://dwm.suckless.org/patches/center/)
  134. - adds an iscentered rule to automatically center clients on the current monitor
  135. - [cfacts](https://dwm.suckless.org/patches/cfacts/)
  136. - the cfacts patch provides the ability to assign different weights to clients in their respective stack in tiled layout
  137. - [clientindicators](https://dwm.suckless.org/patches/clientindicators/)
  138. - draws a dot indicator overlayed on each tag icon for each client
  139. - the selected client is drawn as a larger horizontal line
  140. - [cmdcustomize](https://dwm.suckless.org/patches/cmdcustomize/)
  141. - allows color attributes to be set through the command line
  142. - [colorbar](https://dwm.suckless.org/patches/colorbar/)
  143. - lets you change the foreground and background color of every statusbar element
  144. - color_emoji
  145. - enables color emoji in dmenu by removing a workaround for a BadLength error in the Xft library when color glyphs are used
  146. - enabling this will crash dwm on encountering such glyphs unless you also have an updated Xft library that can handle them
  147. - [combo](https://dwm.suckless.org/patches/combo/)
  148. - allows you to select multiple tags by pressing all the right keys as a combo, e.g. hold MOD and press and hold 1 and 3 together to view those two tags
  149. - [cool_autostart](https://dwm.suckless.org/patches/cool_autostart/)
  150. - allows dwm to execute commands from an array in the config.h file
  151. - when dwm exits all processes from the autostart array will be killed automatically
  152. - [cyclelayouts](https://dwm.suckless.org/patches/cyclelayouts/)
  153. - lets you cycle through all your layouts
  154. - [decoration_hints](https://dwm.suckless.org/patches/decoration_hints/)
  155. - make dwm respect \_MOTIF\_WM\_HINTS property, and not draw borders around windows requesting for it
  156. - some applications use this property to notify window managers to not draw window decorations
  157. - not respecting this property leads to issues with applications that draw their own borders, like chromium (with "Use system title bar and borders" turned off) or vlc in fullscreen mode
  158. - [dmenumatchtop](https://dwm.suckless.org/patches/dmenumatchtop)
  159. - updates the position of dmenu to match that of the bar
  160. - i.e. if topbar is 0 then dmenu will appear at the bottom and if 1 then dmenu will appear at the top
  161. - [dragcfact](https://github.com/bakkeby/patches/wiki/dragcfact/)
  162. - lets you resize clients' size (i.e. modify cfact) by holding modkey + shift + right-click and dragging the mouse
  163. - [dragmfact](https://github.com/bakkeby/patches/wiki/dragmfact/)
  164. - lets you resize the split in layouts (i.e. modify mfact) by holding the modkey + shift + left-click and dragging the mouse
  165. - this is a bespoke patch that supports vertical and horizontal layout splits as well as centered master variants
  166. - [dwmblocks](https://gist.github.com/danbyl/54f7c1d57fc6507242a95b71c3d8fdea)
  167. - signal integration to use dwm with a patched [dwmblocks](https://github.com/torrinfail/dwmblocks)
  168. - combined with the statuscmd patch this gives a clickable statusbar
  169. - [dwmc](http://dwm.suckless.org/patches/dwmc/)
  170. - a simple dwmc client using a fork of fsignal to communicate with dwm
  171. - [emptyview](https://dwm.suckless.org/patches/emptyview/)
  172. - allows no tag at all to be selected
  173. - dwm will start with no tag selected and when a client with no tag rule is started and no tag is selected then it will be opened on the first tag
  174. - [ewmhtags](https://dwm.suckless.org/patches/ewmhtags/)
  175. - adds EWMH support for \_NET_NUMBER_OF_DESKTOPS, \_NET_CURRENT_DESKTOP, \_NET_DESKTOP_NAMES and \_NET_DESKTOP_VIEWPORT, which allows for compatibility with other bars and programs that request workspace information, e.g. polybar's xworkspaces module
  176. - [exresize](https://dwm.suckless.org/patches/exresize/)
  177. - this patch allows the user to change size and placement of floating windows using only the keyboard
  178. - it also allows for temporary vertical and horizontal extension of windows similar to other WMs fill command
  179. - [~extrabar~](https://dwm.suckless.org/patches/extrabar/)
  180. - ~enables an extra status bar in dwm in a similar manner to the dualstatus patch~
  181. - ~if the primary status is at the top via topbar then the extra status bar will be placed at the bottom and vice versa~
  182. - extrastatus
  183. - formerly extrabar - now only splits the status into to statuses by using a status separator
  184. - [fakefullscreen](https://dwm.suckless.org/patches/fakefullscreen/)
  185. - only allow clients to "fullscreen" into the space currently given to them
  186. - as an example, this will allow you to view a fullscreen video in your browser on one half of the screen, while having the other half available for other tasks
  187. - [fakefullscreenclient](https://github.com/bakkeby/patches/wiki/fakefullscreenclient/)
  188. - similarly to the fakefullscreen patch this patch only allows clients to "fullscreen" into the space currently given to them
  189. - as an example, this will allow you to view a fullscreen video in your browser on one half of the screen, while having the other half available for other tasks
  190. - the "twist" with this patch is that fake fullscreen can be toggled on a per client basis rather than applying to all clients globally
  191. - [fancybar](https://dwm.suckless.org/patches/fancybar/)
  192. - shows the titles of all visible windows in the status bar
  193. - flexwintitle
  194. - based on the bartabgroups patch, this is a layout aware barmodules module for handling window titles intended to be used with flextile-deluxe
  195. - [~floatbordercolor~](https://dwm.suckless.org/patches/float_border_color/)
  196. - ~this patch allows a different border color to be chosen for floating windows~
  197. - [floatpos](https://github.com/bakkeby/patches/wiki/floatpos/)
  198. - adds a float rule allowing the size and position of floating windows to be specified
  199. - control the size and position of floating windows similar to exresize, moveresize, moveplace patches
  200. - specify size and position using absolute, relative or fixed co-ordinates or
  201. - position floating windows in a grid-like manner
  202. - [focusadjacenttag](https://dwm.suckless.org/patches/focusadjacenttag/)
  203. - provides the ability to focus the tag on the immediate left or right of the currently focused tag
  204. - it also allows to send the focused window either on the left or the right tag
  205. - [focusdir](https://github.com/bakkeby/patches/wiki/focusdir)
  206. - allows focusing on clients based on direction (up, down, left, right) instead of client order
  207. - [focusmaster](https://dwm.suckless.org/patches/focusmaster/)
  208. - a simple patch that just puts focus back to the master client
  209. - [focusonclick](https://dwm.suckless.org/patches/focusonclick/)
  210. - this patch makes you switch focus only by mouse click and not sloppy (focus follows mouse pointer)
  211. - [focusonnetactive](https://dwm.suckless.org/patches/focusonnetactive/)
  212. - by default, dwm responds to \_NET_ACTIVE_WINDOW client messages by setting the urgency bit on the named window
  213. - this patch activates the window instead
  214. - [focusurgent](https://dwm.suckless.org/patches/focusurgent/)
  215. - adds a keyboard shortcut to select the next window having the urgent flag regardless of the tag it is on
  216. - [fsignal](https://dwm.suckless.org/patches/fsignal/)
  217. - send "fake signals" to dwm for handling, using xsetroot
  218. - this will not conflict with the status bar, which also is managed using xsetroot
  219. - [fullscreen](https://dwm.suckless.org/patches/fullscreen/)
  220. - applies the monocle layout with the focused client on top and hides the bar
  221. - when pressed again it shows the bar and restores the layout that was active before going fullscreen
  222. - [hidevacanttags](https://dwm.suckless.org/patches/hide_vacant_tags/)
  223. - prevents dwm from drawing tags with no clients (i.e. vacant) on the bar
  224. - [holdbar](http://dwm.suckless.org/patches/holdbar/)
  225. - with this patch dwm's built-in status bar is only shown when HOLDKEY is pressed
  226. - additionally the bar will now overlay the display
  227. - [ignore-xft-errors-when-drawing-text](https://groups.google.com/forum/m/#!topic/wmii/7bncCahYIww)
  228. - sometimes dwm crashes when it cannot render some glyphs in window titles (usually emoji)
  229. - this patch is essentially a hack to ignore any errors when drawing text on the status bar and may be removed if a more appropriate solution comes up
  230. - [inplacerotate](https://dwm.suckless.org/patches/inplacerotate/)
  231. - allows rotation of all clients in the master or stack area without affecting the other area
  232. - [insets](https://dwm.suckless.org/patches/insets/)
  233. - lets custom insets from each edge of the screen to be defined
  234. - an example use case would be to make space for an external bar
  235. - [ipc](https://github.com/mihirlad55/dwm-ipc)
  236. - implements inter-process communication through a UNIX socket for dwm
  237. - allows for the window manager to be queried for information, e.g. listen for events such as tag or layout changes, as well as send commands to control the window manager via other programs
  238. - [\_IS\_FLOATING](https://github.com/bakkeby/dwm-flexipatch/issues/50)
  239. - adds the \_IS\_FLOATING xproperty for floating windows
  240. - this can allow for a compositor to handle floating windows differently to tiled windows, e.g. only show shadows on floating windows
  241. - this patch is enabled via the ewmhtags patch
  242. - [ispermanent](https://dwm.suckless.org/patches/ispermanent/)
  243. - adds rule option for clients to avoid accidental termination by killclient for sticky windows
  244. - [keymodes](https://dwm.suckless.org/patches/keymodes/)
  245. - this patch adds key modes (like in vim or emacs) where chains of keyboard shortcuts can be performed
  246. - [~leftlayout~](http://dwm.suckless.org/patches/leftlayout/)
  247. - ~moves the layout symbol in the status bar to the left hand side~
  248. - [losefullscreen](https://github.com/bakkeby/patches/wiki/losefullscreen/)
  249. - by default in dwm it is possible to make an application fullscreen, then use the focusstack keybindings to focus on other windows beneath the current window
  250. - it is also possible to spawn new windows (e.g. a terminal) that end up getting focus while the previous window remains in fullscreen
  251. - this patch ensures that in such scenarios the previous window loses fullscreen
  252. - [maximize](https://dwm.suckless.org/patches/maximize/)
  253. - adds helper functions for maximizing, horizontally and vertically, floating windows using keybindings
  254. - [mpdcontrol](https://dwm.suckless.org/patches/mpdcontrol/)
  255. - adds keyboard bindings to control MDP (Music Player Daemon)
  256. - [monitorrules](https://github.com/bakkeby/patches/wiki/monitorrules/)
  257. - adds rules per monitor, e.g. have default layouts per monitor
  258. - the use case for this is if the second monitor is vertical (i.e. rotated) then you may want to use a different default layout for this monitor than what is used for the main monitor (for example normal vertical split for main monitor and horizontal split for the second)
  259. - [monoclesymbol](https://dwm.suckless.org/patches/monoclesymbol/)
  260. - always display the the monocle-symbol as defined in config.h if the monocle-layout is activated
  261. - do not display the number of open clients in the current tag
  262. - [moveresize](https://dwm.suckless.org/patches/moveresize/)
  263. - allows you to move and resize dwm's clients using keyboard bindings
  264. - [movestack](https://dwm.suckless.org/patches/movestack/)
  265. - allows you to move clients around in the stack and swap them with the master
  266. - [netclientliststacking](https://github.com/bakkeby/patches/wiki/netclientliststacking)
  267. - adds support for the \_NET\_CLIENT\_LIST\_STACKING atom, needed by certain applications like the Zoom video conferencing application
  268. - [noborder](https://dwm.suckless.org/patches/noborder/)
  269. - removes the border when there is only one window visible
  270. - [nodmenu](https://dwm.suckless.org/patches/nodmenu/)
  271. - enable modifying dmenu in config.def.h which resulted previously in a compilation error because two lines of code hardcode dmenu into dwm
  272. - allows complete removal of dmenu, should you want to do that
  273. - nomodbuttons
  274. - allows for toggleable client button bindings that have no modifiers
  275. - this can, for example, allow you to move or resize using the mouse alone without holding down a modifier key, which can be practical if you have extra buttons on your mouse
  276. - [no_transparent_borders](https://github.com/szatanjl/dwm/commit/1529909466206016f2101457bbf37c67195714c8)
  277. - when terminals have transparency then their borders also become transparent
  278. - this patch ensures that borders have no transparency
  279. - note that this patch is only relevant if you are not using the alpha patch
  280. - [on\_empty\_keys](https://github.com/bakkeby/dwm-flexipatch/issues/51)
  281. - port of InstantVM's on_empty_keys functionality allowing keybindings that apply only when a tag/view is empty
  282. - an example use case is being able to launch applications with first hand keys like "f" to launch firefox
  283. - [onlyquitonempty](https://dwm.suckless.org/patches/onlyquitonempty/)
  284. - makes it so dwm will only exit via quit() if no windows are open (in order to prevent accidental loss of work)
  285. - [pango](https://dwm.suckless.org/patches/pango/)
  286. - adds simple markup for status messages using pango markup
  287. - [pertag](https://dwm.suckless.org/patches/pertag/)
  288. - adds nmaster, mfact, layouts and more per tag rather than per monitor
  289. - [placemouse](https://github.com/bakkeby/patches/wiki/placemouse)
  290. - lets the user change the position of a client in the stack using the mouse.
  291. - [powerline](https://gitlab.com/udiboy1209-suckless/dwm/-/commit/071f5063e8ac4280666828179f92788d893eea40#4b1a539194be7467cefbda22f675a3b7c19ceca7)
  292. - adds drawing of powerline arrows (and diagonal lines) for both the status bar and the tags
  293. - [push](https://dwm.suckless.org/patches/push/)
  294. - this patch provides a way to move clients up and down inside the client list
  295. - [reorganizetags](https://dwm.suckless.org/patches/reorganizetags/)
  296. - shifts all clients per tag to leftmost unoccupied tags
  297. - e.g. if clients A, B, C are tagged on tags 1, 5, 9 respectively, when reorganized they will now be on tag 1, 2, and 3
  298. - [resizecorners](https://dwm.suckless.org/patches/resizecorners/)
  299. - by default, windows only resize from the bottom right corner
  300. - with this patch the mouse is warped to the nearest corner and you resize from there
  301. - [resizepoint](https://github.com/bakkeby/patches/wiki/resizepoint/)
  302. - practically the same as resizecorners, but the cursor does not warp to any of the window corners
  303. - [restartsig](https://dwm.suckless.org/patches/restartsig/)
  304. - adds a keyboard shortcut to restart dwm or alternatively by using kill -HUP dwmpid
  305. - additionally dwm can quit cleanly by using kill -TERM dwmpid
  306. - [riodraw](https://github.com/bakkeby/patches/wiki/riodraw/)
  307. - adds rio-like drawing to spawn new windows or to resize the selected client (backported from instantWM)
  308. - depends on an external tool slop being installed
  309. - [rotatestack](https://dwm.suckless.org/patches/rotatestack/)
  310. - let's you rotate through the stack using keyboard shortcuts
  311. - [roundedcorners](https://github.com/mitchweaver/suckless/blob/master/dwm/patches/mitch-06-rounded_corners-f04cac6d6e39cd9e3fc4fae526e3d1e8df5e34b2.patch)
  312. - adds rounded corners to client windows
  313. - [savefloats](https://dwm.suckless.org/patches/save_floats/)
  314. - saves size and position of every floating window before it is forced into tiled mode
  315. - if the window is made floating again then the old dimensions will be restored
  316. - [scratchpad](https://dwm.suckless.org/patches/scratchpad/)
  317. - the scratchpad patch allows you to spawn or restore a floating terminal window
  318. - [scratchpad_alt_1](https://github.com/GasparVardanyan/dwm-scratchpad)
  319. - this alternative patch enables a scratchpad feature in dwm similar to the scratchpad feature in i3wm
  320. - [selfrestart](https://dwm.suckless.org/patches/selfrestart/)
  321. - restart dwm without the unnecessary dependency of an external script
  322. - [sendmon_keepfocus](https://github.com/bakkeby/patches/wiki/sendmon_keepfocus/)
  323. - minor patch that allow clients to keep focus when being sent to another monitor
  324. - [setborderpx](https://dwm.suckless.org/patches/setborderpx/)
  325. - this patch allows border pixels to be changed during runtime
  326. - [shiftview](https://github.com/chau-bao-long/dotfiles/blob/master/suckless/dwm/shiftview.diff)
  327. - adds keybindings for left and right circular shift through tags
  328. - also see focusadjacenttag
  329. - [shiftviewclients](https://github.com/bakkeby/patches/wiki/shiftviewclients/)
  330. - variant of the shiftview patch which skips tags that have no clients
  331. - [sizehints](https://dwm.suckless.org/patches/sizehints/)
  332. - makes dwm obey even "soft" sizehints for new clients
  333. - [sortscreens](https://www.mail-archive.com/hackers@suckless.org/msg09400.html)
  334. - this patch aims to address some inconsistencies when it comes to focusmon, tagmon and similar functionality by explicitly sorting screens left to right (or top to bottom in a vertical layout)
  335. - [spawn_cwd](https://dwm.suckless.org/patches/spawn_cwd/)
  336. - spawns programs from currently focused client's working directory
  337. - [stacker](https://dwm.suckless.org/patches/stacker/)
  338. - provides comprehensive utilities for managing the client stack
  339. - [~staticstatus~](https://dwm.suckless.org/patches/staticstatus/)
  340. - ~allows the status text to be fixed to the bar on a specific monitor rather than being drawn on the focused monitor~
  341. - [status2d](https://dwm.suckless.org/patches/status2d/)
  342. - allows colors and rectangle drawing in the dwm status bar
  343. - [~statusallmons~](https://dwm.suckless.org/patches/statuspadding/)
  344. - ~this patch draws and updates the statusbar on all monitors~
  345. - [statusbutton](https://dwm.suckless.org/patches/statusbutton/)
  346. - adds a clickable button to the left hand side of the statusbar
  347. - [statuscmd](https://dwm.suckless.org/patches/statuscmd/)
  348. - adds the ability to execute shell commands based on the mouse button and position when clicking the status bar
  349. - [statuscolors](https://dwm.suckless.org/patches/statuscolors/)
  350. - enables colored text in the status bar allowing multiple color combinations for use in the status script
  351. - [statuspadding](https://dwm.suckless.org/patches/statuspadding/)
  352. - adds configuration options for horizontal and vertical padding in the status bar
  353. - [steam](https://github.com/bakkeby/patches/wiki/steam)
  354. - a minor patch that works around the issue of floating Steam windows jumping around the screen when they receive focus
  355. - [sticky](https://dwm.suckless.org/patches/sticky/)
  356. - adds toggleable keyboard shortcut to make a client 'sticky', i.e. visible on all tags
  357. - [swallow](https://dwm.suckless.org/patches/swallow/)
  358. - this patch adds "window swallowing" to dwm as known from Plan 9's windowing system rio
  359. - clients marked with isterminal in config.h swallow a window opened by any child process, e.g. running xclock in a terminal
  360. - closing the xclock window restores the terminal window in the current position
  361. - [swapfocus](https://dwm.suckless.org/patches/swapfocus/)
  362. - this patch depends on the pertag patch and makes it possible to switch focus with a single shortcut (mod-s) instead of having to think if you should use mod-j or mod-k for reaching the previously used window
  363. - [swaptags](https://dwm.suckless.org/patches/swaptags/)
  364. - allows swapping the contents of the currently selected tag with another tag by using keyboard shortcuts
  365. - [switchcol](https://dwm.suckless.org/patches/switchcol/)
  366. - allows you to switch focus between the master and stack columns using a single keybinding
  367. - [switchtag](https://github.com/bakkeby/patches/wiki/switchtag/)
  368. - when an application opens on a specific tab this patch adds the option to also switch to that tag when the application starts
  369. - optionally, the previous view can also be restored when the client is closed
  370. - [systray](https://dwm.suckless.org/patches/systray/)
  371. - adds system tray in the status bar
  372. - [tagall](https://dwm.suckless.org/patches/tagall/)
  373. - adds keyboard shortcuts to move all (or only floating) windows from one tag to another
  374. - [tagallmon](https://github.com/bakkeby/patches/wiki/tagallmon/)
  375. - move all visible windows to an adjacent monitor
  376. - [tagintostack](https://dwm.suckless.org/patches/tagintostack/)
  377. - makes new clients attach into the stack area when you toggle a new tag into view
  378. - this means your master area will remain unchanged when toggling views
  379. - [taggrid](https://dwm.suckless.org/patches/taggrid/)
  380. - adds an option to place tags in rows like in many other window managers
  381. - [tagmonfixfs](https://github.com/bakkeby/patches/wiki/tagmonfixfs/)
  382. - allows moving a fullscreen window to another monitor while remaining in fullscreen
  383. - [tagothermonitor](https://dwm.suckless.org/patches/tagothermonitor/)
  384. - adds functions and keybindings to tag a window to a desired tag on an adjacent monitor
  385. - [tagswapmon](https://github.com/bakkeby/patches/wiki/tagswapmon/)
  386. - swap all visible windows on one monitor with those of an adjacent monitor
  387. - [~titlecolor~](https://dwm.suckless.org/patches/titlecolor/)
  388. - ~adds a new color scheme used by the (selected) window title in the bar~
  389. - [togglefullscreen](https://github.com/bakkeby/patches/wiki/togglefullscreen/)
  390. - allows you to toggle fullscreen on and off using a single shortcut key
  391. - [transfer](https://dwm.suckless.org/patches/transfer/)
  392. - lets you transfer the currently focused client between the master and stack area while increasing or decreasing the master area (nmaster) accordingly
  393. - [transferall](https://dwm.suckless.org/patches/transfer/)
  394. - lets you transfer all clients between the master and stack area while increasing or decreasing the master area (nmaster) accordingly
  395. - [unfloatvisible](https://dwm.suckless.org/patches/unfloatvisible/)
  396. - resets isfloating on any visible windows that have it set and optionally also applies a layout
  397. - [killunsel](https://dwm.suckless.org/patches/killunsel/)
  398. - kills all visible clients that are not selected (only the selected client will remain)
  399. - [~urgentborder~](https://dwm.suckless.org/patches/urgentborder/)
  400. - ~this patch makes "urgent" windows have different colors~
  401. - [vanitygaps](https://github.com/bakkeby/patches/blob/master/dwm/dwm-vanitygaps-6.2.diff)
  402. - adds configurable gaps between windows differentiating between outer, inner, horizontal and vertical gaps
  403. - [viewontag](https://dwm.suckless.org/patches/viewontag/)
  404. - follow a window to the tag it is being moved to
  405. - [vtcolor](https://dwm.suckless.org/patches/vtcolors/)
  406. - this patch adds the ability for dwm to read colors from the linux virtual console essentially allowing you to use the same color scheme as your regular tty
  407. - [warp](https://dwm.suckless.org/patches/warp/)
  408. - warps the mouse cursor to the center of the currently focused window or screen when the mouse cursor is (a) on a different screen or (b) on top of a different window
  409. - [windowrolerule](https://github.com/bakkeby/patches/wiki/windowrolerule/)
  410. - sometimes a single application opens different windows depending on the task at hand and this is often reflected in the WM_WINDOW_ROLE(STRING) x property
  411. - this patch adds the role field to the rule configuration so that one can differentiate between, say, Firefox "browser" vs "Preferences" vs "Manager" or Google-chrome "browser" vs "pop-up".
  412. - [winview](http://dwm.suckless.org/patches/winview/)
  413. - allows switching the view to that of a given client from the all-window view (Mod-0) using a keyboard shortcut
  414. - [xrdb](http://dwm.suckless.org/patches/xrdb/)
  415. - allows dwm to read colors from xrdb (.Xresources) during runtime
  416. - [zoomfloating](https://www.reddit.com/r/suckless/comments/ie5fe3/zoomfloating_my_own_simple_original_patch/)
  417. - a simple patch that allows floating windows to be zoomed into the master stack position
  418. - [zoomswap](https://dwm.suckless.org/patches/zoomswap/)
  419. - allows a master and a stack window to swap places rather than every window on the screen changing position
  420. ### Layouts included:
  421. - [bstack](https://dwm.suckless.org/patches/bottomstack/)
  422. - bottomstack layout
  423. - [bstackhoriz](https://dwm.suckless.org/patches/bottomstack/)
  424. - bottomstack horizontal layout
  425. - [centeredmaster](https://dwm.suckless.org/patches/centeredmaster/)
  426. - centeredmaster layout
  427. - [centeredfloatingmaster](https://dwm.suckless.org/patches/centeredmaster/)
  428. - centeredfloatingmaster layout
  429. - [columns](https://dwm.suckless.org/patches/columns/)
  430. - same as the default tile layout except clients in the master area are arranged in columns (i.e. left to right)
  431. - [deck](https://dwm.suckless.org/patches/deck/)
  432. - deck layout - clients in the stack area are arranged on top of each other (like monocle)
  433. - [fibonacci](https://dwm.suckless.org/patches/fibonacci/)
  434. - fibonacci (dwindle and spiral) layouts
  435. - [flextile-deluxe](https://github.com/bakkeby/patches/wiki/flextile-deluxe/)
  436. - a re-envisioned, flexible and over-the-top version of the original [flextile](https://dwm.suckless.org/patches/flextile/) patch supporting
  437. - multiple split layouts (horizontal, vertical, centered, floating, fixed)
  438. - tile arrangement on a per split basis (stack horizontally, stack vertically, grids, fibonacci)
  439. - pertag, cfacts, rmaster, vanitygaps compatibility
  440. - tile, deck, monocle, centeredmaster, bstack, bstackhoriz, gapplessgrid and more
  441. - this gives you a lot of versatility in terms of layout
  442. - [gapplessgrid](https://dwm.suckless.org/patches/gaplessgrid/)
  443. - gappless grid layout
  444. - [gridmode](https://dwm.suckless.org/patches/gridmode/)
  445. - gridmode (grid) layout
  446. - [horizgrid](https://dwm.suckless.org/patches/horizgrid/)
  447. - horizontal grid layout
  448. - [nrowgrid](https://dwm.suckless.org/patches/nrowgrid/)
  449. - nrowgrid layout, number of rows in grid controlled by nmaster