summaryrefslogtreecommitdiff
path: root/customizations.org
diff options
context:
space:
mode:
Diffstat (limited to 'customizations.org')
-rw-r--r--customizations.org734
1 files changed, 734 insertions, 0 deletions
diff --git a/customizations.org b/customizations.org
new file mode 100644
index 0000000..c89d6ca
--- /dev/null
+++ b/customizations.org
@@ -0,0 +1,734 @@
+Here are the patches and modifications applied to this dwm build
+
+* Patch Strategy
+- Review latest changes
+ Note: I'm taking all of the changes up to the latest, i.e.: 2020-07-02 19:18 Do not allow focus to drift from fullscreen client via focusstack()
+ One worry was not being able to set the selected border color properly due to a change that goes back to May 22nd 2016 (7af4d439bdb5a2e40aca69446a3367bd71431c45)
+ It appears they have just named it on this line: static const char col_cyan[] = "#005577";
+
+- Change makefile to remove config.h on 'make clean'
+ Avoid the confusion early.
+
+- Patch first, then apply customizations last
+ Customizations are easy to make, and they may trigger patch failures
+
+- When there's a choice, choose the latest diff for each patch.
+ 6.2 was on Feb 2, 2019, and there are only a handful of updates since then (see below), so this strategy should work the best.
+
+- Prioritize the largest most complex patches first.
+ The more patches are applied, the more likely a big patch will fail.
+ The bigger the patch, the more difficult it will be to do a manual merge successfully.
+
+- Prioritize the patches you want the most second.
+ More changes in the code mean the patches may fail.
+ If they all begin to fail and manual merging gets too difficult, I want the most desirable patches already applied.
+
+- Test each previous patch when applying a new patch to ensure you haven't removed previously patched-in functionality
+ Testing notes should be in
+
+- Once you have successfully applied all desired patches, create a diff and check that into github.
+
+** Commits since 6.2
+from: http://git.suckless.org/dwm/log.html
+2020-07-02 19:18 Do not allow focus to drift from fullscreen client via focusstack() Chris Down 1 +1 -1
+2020-03-03 22:23 Fix x coordinate calculation in buttonpress. Ian Remmler 1 +1 -1
+2020-07-08 16:05 dwm.1: fix wrong text in man page Hiltjo Posthuma 1 +1 -1
+2020-06-11 13:28 Fix memory leaks in drw Alex Flierl 1 +1 -0
+2020-04-23 07:50 dwm crashes when opening 50+ clients (tile layout) bakkeby 1 +4 -2
+2020-04-22 14:48 drawbar: Don't shadow sw global Chris Down 1 +4 -4
+2020-04-22 14:48 getatomprop: Add forward declaration Chris Down 1 +1 -0
+2020-04-20 15:41 setmfact: Unify bounds for compile-time and runtime mfact Chris Down 1 +1 -1
+2020-04-03 13:36 config.mk: fix POSIX_C_SOURCE macro for feature test for snprintf() Hiltjo Posthuma 1 +1 -1
+2019-02-02 12:50 Prepare 6.2 release. Anselm R Garbe 3 +17 -3
+* Patches Applied (in order of application)
+** DONE (01) fakefullscreen
+*** Description
+Only allow clients to "fullscreen" into space currently given to them. 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.
+
+home: http://dwm.suckless.org/patches/fakefullscreen/
+direct link: http://dwm.suckless.org/patches/fakefullscreen/dwm-fakefullscreen-20170508-ceac8c9.diff
+*** Comments
+Doing this first. It's an older patch and may have immediate patch issues. It should go before ru_gaps so I can test functionality.
+*** Testing
+- Launch a browser, navigate to twitch or youtube and hit fullscreen.
+ Should maximize within old boundaries
+*** Patch Notes
+- successful on first patch
+- changed modkey to mod4map
+- changed Makefile so 'make clean' also removes config.h
+- noticed that testing the fakefullscreen, I'll sometimes have to switch client windows for the window to get the correct sizing. it seems to want to size itself as if it were going full monitor rather than the client window size.
+** DONE (02) ru_gaps (with deck and bottomstack layouts)
+CLOSED: [2021-05-08 Sat 20:13]
+- State "DONE" from "IN-PROGRESS" [2021-05-08 Sat 20:13]
+- State "IN-PROGRESS" from [2021-05-08 Sat 19:43]
+*** Description
+Runtime useless gaps
+This patch adds gaps like tilegap that are resizeable at runtime like fullgaps, but like uselessgap it removes gaps and borders when in monocle mode.
+This patch also incorporates the noborder patch, but without the check for 'is not fullscreen', to make it work properly with fakefullscreen.
+
+Notes:
+You might want to set resizehints in config.h to zero to get smooth animations when increasing or decreasing gaps.
+home: http://dwm.suckless.org/patches/ru_gaps/
+direct link: http://dwm.suckless.org/patches/ru_gaps/dwm-ru_gaps-6.2.diff 25-04-2020
+Additional Layouts
+Apply the following patches on top of the previous patch to add additional layouts with resizeable gap support.
+direct link: http://dwm.suckless.org/patches/ru_gaps/dwm-ru_bottomstack-6.2.diff 25-04-2020
+direct link: http://dwm.suckless.org/patches/ru_gaps/dwm-ru_deck-6.2.diff 25-04-2020
+*** Comments
+I definitely want gaps for the aesthetic appeal, but I also want to be able to turn them off when I'm on a smaller laptop to save screen real estate. That rules out many of the gaps packages right there. Also, I definitely want the fakefullscreen patch, and this one plays nice with it. The fact that the other two ru_gaps patches brings in the patches for the additional layouts I want makes this an easy choice.
+*** Patch Application Notes
+- Apply the resizehints in config.def.h to zero per the description
+- Note the keyboard shortcuts to increase/decrease gaps, etc.
+**** 2021-05-08 @ 19:09:23 dwm-ru_gaps-6.2.diff failed
+patch < dwm-ru_gaps-6.2.diff
+patching file config.def.h
+patching file dwm.c
+Hunk #2 succeeded at 201 (offset 1 line).
+Hunk #3 succeeded at 637 (offset -3 lines).
+Hunk #4 succeeded at 1280 (offset -5 lines).
+Hunk #5 succeeded at 1487 (offset -21 lines).
+Hunk #6 FAILED at 1693.
+1 out of 6 hunks FAILED -- saving rejects to file dwm.c.rej
+
+Manually merged and tested. Seems okay. Going to commit and
+**** 2021-05-08 @ 19:51:18 dwm-ru_bottomstack-6.2 succeeded
+patch < dwm-ru_bottomstack-6.2.diff
+patching file config.def.h
+patching file dwm.c
+Hunk #1 succeeded at 212 (offset 1 line).
+Hunk #2 succeeded at 2153 (offset -25 lines).
+
+Got bstack and bstackhoriz as well, though only wanted bstackhoriz
+All tested okay. Changed all layout keyboard shortcuts to Mod + Shift
+Since I only wanted bstackhoriz (mod + shift + u), I changed the bstack shortcut to mod + u
+**** 2021-05-08 @ 20:03:51 dwm-ru_deck-6.2 failed
+patch < dwm-ru_deck-6.2.diff
+patching file config.def.h
+Hunk #1 FAILED at 42.
+Hunk #2 FAILED at 77.
+2 out of 2 hunks FAILED -- saving rejects to file config.def.h.rej
+patching file dwm.c
+Hunk #2 succeeded at 658 (offset -1 lines).
+
+Looks like it failed in config.def.h which should be simple to clean up manually.
+
+It was just about adding the deck layout keys and index. Fixed pretty simply.
+Now building and testing.
+Testing shows main workflow just fine.
+
+However, the fakefullscreen issues mentioned above are irritating.
+Calling this task done.
+*** Testing
+After main gaps merge:
+- increase gaps (mod - and +)
+- reset gaps to zero (mod + shift =)
+
+For each of the layouts in turn:
+- toggle to layout and back to tiling
+** DONE (03) scratchpads
+CLOSED: [2021-05-08 Sat 21:25]
+- State "DONE" from "IN-PROGRESS" [2021-05-08 Sat 21:25]
+- State "IN-PROGRESS" from [2021-05-08 Sat 20:20]
+*** Description
+The scratchpad patch allows you to spawn or restore a floating terminal window. It is usually useful to have one to do some short typing.
+A tool like detach (http://detach.sourceforge.net) turns it into a launchpad for X applications.
+By default your terminal (st) is used, and the default key binding is MODKEY+XK_grave. A config.def.h change is included in the patch.
+
+home: http://dwm.suckless.org/patches/scratchpad/
+direct link: http://dwm.suckless.org/patches/scratchpad/dwm-scratchpad-6.2.diff
+*** Comment
+This is my choice over the namedscratchpads patch. First, I've used this in my previous dwm build, so I know it can be applied with no issue. Second, it appears namedscratchpads works with floatrules and I can't tell any benefit from using those two patches over just this one.
+*** Patch Application Notes
+This one's a bit dangerous since it's an older patch. However, I got this to work already, so I know it can be manually merged.
+
+- We're setting up three scratchpads: (1) nmtui (2) pulsemixer (3) gnome-calculator
+- First try using terminator here ensuring that "window geometry hints" preference checked.
+- If this doesn't work, you'll have to use st (see below)
+Here's what the last patch looked like:
+/* leaving the below as documentation on how to run a specific program as a scratchpad
+const char *spcmd0[] = {"keepassxc", NULL }; */
+const char *spcmd1[] = {"st", "-n", "spnet", "-g", "65x25", "-e", "nmtui" , NULL };
+const char *spcmd2[] = {"st", "-n", "sppulse", "-g", "100x20", "-e", "pulsemixer", NULL };
+
+static Sp scratchpads[] = {
+ /* name cmd */
+ {"spnet", spcmd1},
+ {"sppulse", spcmd2},
+};
+**** 2021-05-08 @ 20:18:17 patch applied without errors
+patch < dwm-scratchpad-6.2.diff
+patching file config.def.h
+Hunk #1 succeeded at 62 (offset 4 lines).
+patching file dwm.c
+Hunk #1 succeeded at 217 with fuzz 1 (offset 4 lines).
+Hunk #2 succeeded at 278 (offset 4 lines).
+Hunk #3 succeeded at 1088 (offset 33 lines).
+Hunk #4 succeeded at 1687 (offset 15 lines).
+Hunk #5 succeeded at 1772 (offset 12 lines).
+
+To my surprise, this succeeded without any issues.
+**** 2021-05-08 @ 20:32:06 This doesn't appear to be the patch I used previously
+The patch simply didn't apply with the same code I expected. This is for a simple terminal scratchpad.
+Looked at all the patches listed, and none of them applied the same code I expected.
+I thought perhaps I went with namedscratchpads instead, but found that was't the case either.
+Pulling in the actual patch applied from debianconfig project and it's date is far more recent than either of these
+dwm-scrachpads-20200414-728d397b.diff
+**** 2021-05-08 @ 20:47:59 Applying dwm-scrachpads-20200414-728d397b.diff
+patch < dwm-scratchpads-20200414-728d397b.diff
+patching file config.def.h
+Hunk #1 succeeded at 19 (offset 1 line).
+Hunk #2 succeeded at 79 (offset 4 lines).
+Hunk #3 FAILED at 101.
+Hunk #4 succeeded at 133 (offset 10 lines).
+1 out of 4 hunks FAILED -- saving rejects to file config.def.h.rej
+patching file dwm.c
+Hunk #2 succeeded at 220 with fuzz 1 (offset 6 lines).
+Hunk #3 succeeded at 309 (offset 6 lines).
+Hunk #4 succeeded at 323 (offset 6 lines).
+Hunk #5 succeeded at 1660 with fuzz 1 (offset 35 lines).
+Hunk #6 succeeded at 1772 (offset 40 lines).
+
+Had to do a bit of manual merging, but was pretty straightforward.
+Scratchpad for pulseaudio mapped to mod + n (network)
+Scratchpad for pulseaudio mapped to mod + a (audio)
+*** Testing
+- Toggle each scratchpad on and off a few times
+- Toggle them all on
+- Resize one of the windows, then toggle off and on again (should return to original size and centered placement)
+** DONE (04) swallow
+CLOSED: [2021-05-09 Sun 01:44]
+- State "DONE" from [2021-05-09 Sun 01:44]
+*** Description
+This patch adds "window swallowing" to dwm as known from Plan 9's windowing system rio.
+Clients marked with isterminal in config.h swallow a window opened by any child process, e.g. running xclock in a terminal. Closing the xclock window restores the terminal window in the current position.
+This patch helps users spawning a lot of graphical programs from their command line by avoiding cluttering the screen with many unusable terminals. Being deep down in a directory hierarchy just does not make the use of dmenu feasible.
+Dependencies
+- libxcb
+- Xlib-libxcb
+- xcb-res
+These dependencies are needed due to the use of the latest revision of the X Resource Extension which is unsupported in vanilla Xlib.
+
+Notes
+The window swallowing functionality requires dwm to walk the process tree, which is an inherently OS-specific task. Please contact one of the authors if you would like to help expand the list of supported operating systems.
+Only terminals created by local processes can swallow windows, and only windows created by local processes can be swallowed.
+home: http://dwm.suckless.org/patches/swallow/
+direct link: http://dwm.suckless.org/patches/swallow/dwm-swallow-20201211-61bb8b2.diff
+direct link: http://dwm.suckless.org/patches/swallow/dwm-swallow-20200807-b2de9b0.diff
+direct link: http://dwm.suckless.org/patches/swallow/dwm-swallow-20200707-8d1e703.diff
+direct link: http://dwm.suckless.org/patches/swallow/dwm-swallow-20200522-7accbcf.diff
+direct link: http://dwm.suckless.org/patches/swallow/dwm-swallow-20170909-ceac8c9.diff
+direct link: http://dwm.suckless.org/patches/swallow/dwm-swallow-6.1.diff
+direct link: http://dwm.suckless.org/patches/swallow/dwm-swallow-20160717-56a31dc.diff
+*** Testing
+- Launch VLC in both terminator and st make sure they are both swallowed
+- Launch subl
+*** Patching Notes
+patch < dwm-swallow-20201211-61bb8b2.diff
+patching file config.def.h
+Hunk #1 succeeded at 4 with fuzz 2 (offset 1 line).
+Hunk #2 FAILED at 27.
+1 out of 2 hunks FAILED -- saving rejects to file config.def.h.rej
+patching file config.mk
+patching file dwm.c
+Hunk #2 succeeded at 101 (offset 3 lines).
+Hunk #3 succeeded at 150 (offset 4 lines).
+Hunk #4 succeeded at 254 (offset 9 lines).
+Hunk #5 succeeded at 294 (offset 9 lines).
+Hunk #6 succeeded at 325 with fuzz 1 (offset 9 lines).
+Hunk #7 succeeded at 448 (offset 14 lines).
+Hunk #8 succeeded at 731 (offset 11 lines).
+Hunk #9 succeeded at 1132 (offset 44 lines).
+Hunk #10 succeeded at 1153 (offset 44 lines).
+Hunk #11 succeeded at 1190 (offset 44 lines).
+Hunk #12 succeeded at 1918 (offset 76 lines).
+Hunk #13 succeeded at 1946 (offset 76 lines).
+Hunk #14 succeeded at 2214 (offset 76 lines).
+Hunk #15 succeeded at 2435 (offset 76 lines).
+
+Manually patched. The array identifying isterminal and noswallow was modified by scratchpads.
+Testing shows that St works, but terminator doesn't.
+Terminator needs to be capitalized. Tested to work now.
+
+** DONE (05) push up/down
+CLOSED: [2021-05-09 Sun 02:15]
+- State "DONE" from [2021-05-09 Sun 02:15]
+*** Description
+pushup and pushdown provide a way to move clients inside the clients list.
+
+#include "push.c"
+static Key keys[] = {
+ ...
+ { MODKEY|ControlMask, XK_j, pushdown, {0} },
+ { MODKEY|ControlMask, XK_k, pushup, {0} },
+
+Note: This is equivalent to the movestack patch.
+home: http://dwm.suckless.org/patches/push/
+direct link: http://dwm.suckless.org/patches/push/dwm-push-20201112-61bb8b2.diff (6.2)
+direct link: http://dwm.suckless.org/patches/push/dwm-push-6.1.diff (1402b) - 2014/2/9
+direct link: http://dwm.suckless.org/patches/push/dwm-push-6.0.diff (1332b) - 2012/4/6
+direct link: http://dwm.suckless.org/patches/push/dwm-push-20160731-56a31dc.diff
+*** Comments
+Choosing this one over movestack as it's a more recent patch, and therefore is less likely to have issues.
+*** Testing
+ - Open a number of windows
+ - for tile layout, bottom stack, and deck layouts
+ - mod+shift j and k to move through the stack
+** CANCELLED (06) systray
+CLOSED: [2021-05-09 Sun 09:28]
+- State "CANCELLED" from "IN-PROGRESS" [2021-05-09 Sun 09:28]
+- State "IN-PROGRESS" from [2021-05-09 Sun 08:58]
+*** Description
+A simple system tray implementation. Multi-monitor is also supported. The tray follows the selected monitor.
+In case icons disappear when toggling the bar, try a different font size in dwm. This has helped at least in one case with pidgin.
+direct link: http://dwm.suckless.org/patches/systray/dwm-systray-20210418-67d76bd.diff (24K) (20210418)
+direct link: http://dwm.suckless.org/patches/systray/dwm-systray-20200914-61bb8b2.diff (23k) (20200914)
+direct link: http://dwm.suckless.org/patches/systray/dwm-systray-6.2.diff (23923b) (20200216)
+direct link: http://dwm.suckless.org/patches/systray/dwm-systray-20190208-cb3f58a.diff (24K)
+direct link: http://dwm.suckless.org/patches/systray/dwm-6.1-systray.diff (24K) (20190208)
+*** Comments
+This is the last of the large patches and the least desireable.
+*** Patch Notes
+ patch < dwm-systray-20210418-67d76bd.diff
+patching file config.def.h
+Hunk #1 FAILED at 3.
+Hunk #2 succeeded at 146 (offset 34 lines).
+1 out of 2 hunks FAILED -- saving rejects to file config.def.h.rej
+patching file dwm.c
+Hunk #1 succeeded at 66 with fuzz 1 (offset 9 lines).
+Hunk #2 succeeded at 173 (offset 14 lines).
+Hunk #3 succeeded at 211 (offset 15 lines).
+Hunk #4 succeeded at 232 with fuzz 1 (offset 18 lines).
+Hunk #5 succeeded at 254 (offset 19 lines).
+Hunk #6 FAILED at 253.
+Hunk #7 succeeded at 315 (offset 28 lines).
+Hunk #8 succeeded at 554 (offset 84 lines).
+Hunk #9 succeeded at 597 (offset 84 lines).
+Hunk #10 succeeded at 632 (offset 84 lines).
+Hunk #11 FAILED at 651.
+Hunk #12 FAILED at 736.
+Hunk #13 succeeded at 896 (offset 117 lines).
+Hunk #14 succeeded at 933 (offset 117 lines).
+Hunk #15 succeeded at 944 (offset 117 lines).
+Hunk #16 succeeded at 981 (offset 117 lines).
+Hunk #17 succeeded at 1070 (offset 117 lines).
+Hunk #18 succeeded at 1114 (offset 117 lines).
+Hunk #19 succeeded at 1228 (offset 117 lines).
+Hunk #20 succeeded at 1320 (offset 121 lines).
+Hunk #21 succeeded at 1458 (offset 129 lines).
+Hunk #22 succeeded at 1561 (offset 172 lines).
+Hunk #23 succeeded at 1582 (offset 172 lines).
+Hunk #24 succeeded at 1667 (offset 177 lines).
+Hunk #25 succeeded at 1769 (offset 177 lines).
+Hunk #26 succeeded at 1812 (offset 177 lines).
+Hunk #27 succeeded at 1897 (offset 173 lines).
+Hunk #28 succeeded at 1908 (offset 173 lines).
+Hunk #29 succeeded at 1919 (offset 173 lines).
+Hunk #30 succeeded at 2063 (offset 182 lines).
+Hunk #31 succeeded at 2210 (offset 223 lines).
+Hunk #32 succeeded at 2232 (offset 223 lines).
+Hunk #33 succeeded at 2416 (offset 223 lines).
+Hunk #34 succeeded at 2731 (offset 353 lines).
+Hunk #35 succeeded at 2794 (offset 353 lines).
+3 out of 35 hunks FAILED -- saving rejects to file dwm.c.rej
+zsh: exit 1 patch < dwm-systray-20210418-67d76bd.diff
+
+Patching manually.
+There were two places that I couldn't patch within dwm.c. Couldn't match the code it was replacing. Aborting, and canceling this patch.
+*** Testing
+- Launch insync and see if it shows up, select the menu and see if you can interact with it
+- Install pidgin and launch. See if you can interact with the menu.
+** DONE (07) pertag
+CLOSED: [2021-05-09 Sun 09:34]
+- State "DONE" from [2021-05-09 Sun 09:34]
+*** Description
+More general approach to taglayouts patch. This patch keeps layout, mwfact, barpos and nmaster per tag.
+home: http://dwm.suckless.org/patches/pertag/
+direct link: http://dwm.suckless.org/patches/pertag/dwm-pertag-20200914-61bb8b2.diff
+direct link: http://dwm.suckless.org/patches/pertag/dwm-pertag-6.2.diff
+direct link: http://dwm.suckless.org/patches/pertag/dwm-pertag-6.1.diff
+direct link: http://dwm.suckless.org/patches/pertag/dwm-git-20120406-pertag.diff
+direct link: http://dwm.suckless.org/patches/pertag/dwm-pertag-6.0.diff
+*** Patch Notes
+patch < dwm-pertag-20200914-61bb8b2.diff
+patching file dwm.c
+Hunk #1 succeeded at 122 (offset 11 lines).
+Hunk #2 succeeded at 143 (offset 12 lines).
+Hunk #3 succeeded at 304 (offset 30 lines).
+Hunk #4 succeeded at 723 (offset 80 lines).
+Hunk #5 succeeded at 735 (offset 81 lines).
+Hunk #6 succeeded at 1110 (offset 117 lines).
+Hunk #7 succeeded at 1701 (offset 173 lines).
+Hunk #8 succeeded at 1722 (offset 173 lines).
+Hunk #9 succeeded at 1910 (offset 182 lines).
+Hunk #10 succeeded at 1973 (offset 206 lines).
+Hunk #11 succeeded at 2311 (offset 223 lines).
+
+No errors.
+*** Testing
+- Open windows in tile mode on tags 1, 2, and 3
+- Switch to tile layout on tag 1
+- Switch to bottomstack layout on tag 2
+- Verify tile tags only on 1 and 3
+- Switch to deck stack on tag 3
+- Verify all 3 are different layouts
+** DONE (08) focusonclick
+CLOSED: [2021-05-09 Sun 11:00]
+- State "DONE" from [2021-05-09 Sun 11:00]
+*** Description
+Switch focus only by mouse click and not sloppy.
+home: http://dwm.suckless.org/patches/focusonclick/
+direct link: http://dwm.suckless.org/patches/focusonclick/dwm-focusonclick-20200110-61bb8b2.diff
+direct link: http://dwm.suckless.org/patches/focusonclick/dwm-focusonclick-20171030-6aa8e37.diff
+direct link: http://dwm.suckless.org/patches/focusonclick/dwm-focusonclick-20170104-bb3bd6f.diff
+direct link: http://dwm.suckless.org/patches/focusonclick/dwm-focusonclick-6.0.diff
+direct link: http://dwm.suckless.org/patches/focusonclick/dwm-focusonclick-5.8.diff
+*** Comments
+I'm choosing this because the cursor usually moves downwards in bottom stack. At that point the focus can change when I'm typing and my entries go into another window.
+*** Testing
+- Open a number of windows
+- Put a text editor in the
+- For each tile, deck, and bottom stack layouts
+ - move the cursor to other windows and ensure the focus remains on client
+*** Patch Notes
+patch < dwm-focusonclick-20200110-61bb8b2.diff
+patching file config.def.h
+Hunk #1 succeeded at 7 with fuzz 1 (offset 2 lines).
+patching file dwm.c
+Hunk #1 succeeded at 180 (offset 17 lines).
+Hunk #2 succeeded at 198 (offset 17 lines).
+Hunk #3 succeeded at 278 (offset 30 lines).
+Hunk #4 succeeded at 516 (offset 95 lines).
+Hunk #5 succeeded at 537 (offset 95 lines).
+Hunk #6 succeeded at 892 (offset 143 lines).
+Hunk #7 succeeded at 1241 (offset 147 lines).
+
+** DONE (09) hide-vacant-tags
+CLOSED: [2021-05-09 Sun 11:18]
+- State "DONE" from "IN-PROGRESS" [2021-05-09 Sun 11:18]
+- State "IN-PROGRESS" from [2021-05-09 Sun 11:03]
+*** Description
+This patch prevents dwm from drawing tags with no clients (i.e. vacant) on the bar.
+
+It also makes sure that pressing a tag on the bar behaves accordingly by not reserving reactive regions on the bar for vacant tags.
+
+It also stops drawing empty rectangles on the bar for non-vacant tags as there is no need anymore to distinguish vacant tags and it offers a more visible contrast than if there were filled/empty rectangles.
+home: http://dwm.suckless.org/patches/hide_vacant_tags/
+direct link: http://dwm.suckless.org/patches/hide_vacant_tags/dwm-hide_vacant_tags-6.1.diff
+direct link: http://dwm.suckless.org/patches/hide_vacant_tags/dwm-hide_vacant_tags-git-20160626-7af4d43.diff
+direct link: http://dwm.suckless.org/patches/hide_vacant_tags/dwm-hide_vacant_tags-6.2.diff
+*** Patch Notes
+patch < dwm-hide_vacant_tags-6.1.diff
+patching file dwm.c
+Hunk #1 succeeded at 524 (offset 94 lines).
+Hunk #2 FAILED at 723.
+1 out of 2 hunks FAILED -- saving rejects to file dwm.c.rej
+
+Patched manually. However, this is the chunk that I don't feel completely happy with:
+
+
+@@ -723,11 +729,14 @@ drawbar(Monitor *m)
+ }
+ x = 0;
+ for (i = 0; i < LENGTH(tags); i++) {
++ /* do not draw vacant tags */
++ if(!(occ & 1 << i || m->tagset[m->seltags] & 1 << i))
++ continue;
+ w = TEXTW(tags[i]);
+ drw_setscheme(drw, m->tagset[m->seltags] & 1 << i ? &scheme[SchemeSel] : &scheme[SchemeNorm]);
+ drw_text(drw, x, 0, w, bh, tags[i], urg & 1 << i);
+ drw_rect(drw, x + 1, 1, dx, dx, m == selmon && selmon->sel && selmon->sel->tags & 1 << i,
+- occ & 1 << i, urg & 1 << i);
++ 0, urg & 1 << i);
+ x += w;
+ }
+ w = blw = TEXTW(m->ltsymbol);
+
+While adding the section for not drawing vacant tags was trivial, the bottom change wasn't as the code was modified.i
+There was no "occ & 1 << i" to replace with a zero. However, compilation and testing went fine, so keeping this as-is and calling it done.
+** DONE (09.5)color bar
+CLOSED: [2021-05-09 Sun 11:51]
+- State "DONE" from [2021-05-09 Sun 11:51]
+I decided to apply the color bar to see whether I could draw a border around the selected window.
+
+*** Description
+allows change foreground and background color of every statusbar element.
+home: http://dwm.suckless.org/patches/colorbar/
+direct link: http://dwm.suckless.org/patches/colorbar/dwm-colorbar-6.2.diff
+*** Patch Notes
+patch < dwm-colorbar-6.2.diff
+patching file config.def.h
+Hunk #1 succeeded at 19 with fuzz 1 (offset 3 lines).
+patching file dwm.c
+Hunk #1 succeeded at 68 (offset 9 lines).
+Hunk #2 FAILED at 703.
+Hunk #3 succeeded at 866 with fuzz 2 (offset 150 lines).
+Hunk #4 FAILED at 725.
+2 out of 4 hunks FAILED -- saving rejects to file dwm.c.rej
+
+Manual patching was trivial.
+Changed colors and ensured only the selected tag had col_cyan in the background. Seems to work fine. The only problem I see is that the pixel borders are too small, and it's difficult to identify the border.
+** DONE (09.6) setborderpx
+CLOSED: [2021-05-09 Sun 12:09]
+- State "DONE" from [2021-05-09 Sun 12:09]
+*** Description
+This patch allows you to change border pixels at runtime.
+
+Default key bindings
+ Key Argument Description
+----------------------------------------------------
+ Mod-Shift-plus +1 Increase borderpx
+ Mod-Shift-minus -1 Decrease borderpx
+ Mod-Shift-numbersign 0 Reset borderpx
+Notes
+You might want to set resizehints in config.h to zero to get smooth animations when increasing or decreasing border pixels.
+
+home: http://dwm.suckless.org/patches/setborderpx/
+direct link: http://dwm.suckless.org/patches/setborderpx/dwm-setborderpx-6.2.diff
+*** Patch Notes
+patch < dwm-setborderpx-6.2.diff
+patching file config.def.h
+Hunk #1 FAILED at 84.
+1 out of 1 hunk FAILED -- saving rejects to file config.def.h.rej
+patching file dwm.c
+Hunk #1 FAILED at 119.
+Hunk #2 succeeded at 215 (offset 19 lines).
+Hunk #3 FAILED at 639.
+Hunk #4 succeeded at 1181 (offset 133 lines).
+Hunk #5 succeeded at 1599 (offset 174 lines).
+2 out of 5 hunks FAILED -- saving rejects to file dwm.c.rej
+
+Patching was trivial.
+Changing the following did the trick.
+static const unsigned int borderpx = 3; /* border pixel of windows */
+** CANCELLED (10) layout menu
+Decided against this as it requires installation of xmenu, forces maintenance of layoutmenu.sh. Not worth the minor benefit.
+CLOSED: [2021-05-09 Sun 12:10]
+- State "CANCELLED" from [2021-05-09 Sun 12:10]
+*** Description
+This patch adds a context menu for layout switching.
+Right clicking on the layout icon brings an xmenu prompt for to pick a new layout, and switches to the selected one.
+Xmenu (https://github.com/phillbush/xmenu) needs to be installed.
+Edit layoutmenu.sh with the installed layouts and with correct indexes.
+Place layoutmenu.sh in PATH.
+The text of the menu items is for display only. Name them however you want.
+home: http://dwm.suckless.org/patches/layoutmenu/
+direct link: http://dwm.suckless.org/patches/layoutmenu/dwm-layoutmenu-6.2.diff
+*** Testing
+** CANCELLED (11) centretitle
+Decided not to apply this patch. I don't mind the current aethetic on a large monitor, and it likely won't matter on a smaller laptop monitor
+CLOSED: [2021-05-09 Sun 12:11]
+- State "CANCELLED" from [2021-05-09 Sun 12:11]
+*** Description
+home: http://dwm.suckless.org/patches/centretitle/
+direct link: http://dwm.suckless.org/patches/centretitle/dwm-centretitle-20200907-61bb8b2.diff
+centers the title in the middle of the bar
+** (12) autostart
+*** Description
+This patch will make dwm run "~/.dwm/autostart_blocking.sh" and "~/.dwm/autostart.sh &" before entering the handler loop. One or both of these files can be ommited.
+Be aware that dwm will not startup as long as autostart_blocking.sh is running and will stay completely unresponsive. For obvious reasons it is generally a bad idea to start X-applications here :)
+home: http://dwm.suckless.org/patches/autostart/
+direct link: http://dwm.suckless.org/patches/autostart/dwm-autostart-20210120-cb3f58a.diff
+This patch modifies the dwm autostart feature to conform to the XDG Base Directory specification.
+The files listed above are looked up in the directories "$XDG_DATA_HOME/dwm", "$HOME/.local/share/dwm", and "$HOME/.dwm" respectively. The first existing directory is used, no matter if it actually contains any file.
+*** Comments
+Originally, I said this was optional since entried in autostart.sh could be placed in .xinitrc
+However, that's not the case when launching dwm via
+* Customizations (applied after patches)
+** DONE Change mod key to super
+CLOSED: [2021-05-08 Sat 18:48]
+- State "DONE" from [2021-05-08 Sat 18:48]
+/* key definitions */
+#define MODKEY Mod4Mask
+** CANCELLED window colors in config.def.h
+CLOSED: [2021-05-08 Sat 18:54]
+- State "CANCELLED" from [2021-05-08 Sat 18:54]
+static const char normbordercolor[] = "#444444";
+static const char normbgcolor[] = "#222222";
+static const char normfgcolor[] = "#bbbbbb";
+static const char selbordercolor[] = "#daa520";
+static const char selbgcolor[] = "#222222";
+static const char selfgcolor[] = "#eeeeee";
+
+Note: changed the colors for active window per window colors customization below to goldenrod (#daa520) to check. The title area became goldenrod, which is undesireable. Discarded these changes.
+** TODO modify order of layout
+you should note the order of the layouts in the keys section of config.def.h as those refer to this array by index.
+static const Layout layouts[] = {
+ /* symbol arrange function */
+ { "TTT", bstack }, /* first entry is default */
+ { "[M]", monocle },
+ { "[D]", deck },
+ { "[]=", tile },
+ { "><>", NULL }, /* no layout function means floating behavior */
+ { "===", bstackhoriz },
+};
+** TODO change col_cyan to dim but noticeable color
+this now changes the title area, sadly.
+** TODO change fonts used for title area
+
+* Patches Considered And Not Applied
+** bottomstack
+not needed if applying ru_gaps with layouts
+*** Description
+home: http://dwm.suckless.org/patches/fakefullscreen/dwm-fakefullscreen-20170508-ceac8c9.diff
+direct link 1: http://dwm.suckless.org/patches/bottomstack/dwm-bottomstack-6.1.diff
+direct link 2: http://dwm.suckless.org/patches/bottomstack/dwm-bottomstack-20160719-56a31dc.diff
+
+** cool autostart
+I don't feel the need to recompile to adjust startup applications.
+*** Description
+Allow dwm to execute commands from autostart array in your config.h file. And when you exit dwm all processes from autostart array will be killed.
+home: http://dwm.suckless.org/patches/cool_autostart/
+direct link: http://dwm.suckless.org/patches/cool_autostart/dwm-cool-autostart-6.2.diff
+** deck
+not needed if applying ru_gaps with layouts
+*** Description
+deck is a dwm-layout which is inspired by the TTWM window manager. It applies the monocle-layout to the clients in the stack. The master-client is still visible. The stacked clients are like a deck of cards, hence the name.
+
+deck-rmaster
+The vanilla patch doesn't respect the master-area which is defined by the rmaster-patch. To make it work with the rmaster-patch apply the dwm-deck-rmaster patch on top of the dwm-deck patch.
+
+deck-tilegap
+The vanilla patch doesn't work properly with patches which add gaps. This means that when the deck-layout is activated gaps are omitted. To make it work with the tilegap-patch apply the dwm-deck-tilegap patch on top of the dwm-deck patch.
+
+deck-double
+This patch variant adds a layout function named doubledeck which is similar to the deck layout. However, rather then just creating a deck area in the stack; it also creates a deck area in the master area. This pairs nicely with the bartabgroups patch.
+
+home: http://dwm.suckless.org/patches/deck/
+
+** floatrules
+not needed as it mainly pairs with namedscratchpads
+*** Description
+This patch adds 5 extra variables to the 'rules' array in config.def.h. These are:
+
+floatx, floaty, floatw, floath (if the window has the rule isfloating, the window will spawn with the geometry specified by these vairables)
+floatborderpx (border width when window is floating)
+Setting floatborderpx to -1 (or any value less than zero) will mean that the regular border width is used.
+
+Please note that this patch needs rm config.h to be added to the Makefile.
+** focusmaster
+limited utility. only works with tiled layout
+*** Description
+Switch focus to the (tiled) master client from anywhere in the stack.
+home: http://dwm.suckless.org/patches/focusonclick/dwm-focusonclick-5.8.diff
+direct link: http://dwm.suckless.org/patches/focusmaster/dwm-focusmaster-20200717-bb2e722.diff
+** fullgaps
+not as full featured as ru_gaps patch
+*** Description
+This patch adds gaps between client windows. It is similar to gaps, but contains additional functionality:
+
+it also adds outer gaps (between the clients and the screen frame), as well as a gap between the master and stack area,
+it adds keybindings to change the gap size at runtime: [Alt]+[-]/[Alt]+[=] to decrease/increase the gap size and [Alt]+[Shift]+[=] to set it to zero.
+The configuration variable gappx contains the default gap size.
+home: http://dwm.suckless.org/patches/fullgaps/
+
+The following patch allows for gaps to be toggled, and also uses a Gap struct to contain the gap information, in anticipation of this being used with pertag. (To use this, apply the patch instead of the default fullgaps patch.)
+
+[Alt]+[Shift]+[=] to toggle. [Alt]+[Shift]+[-] to reset to config.h defaults.
+direct link: http://dwm.suckless.org/patches/fullgaps/dwm-fullgaps-toggle-20200830.diff
+** functionalgaps
+not as full featured as ru_gaps patch
+*** Description
+Functionalgaps combines the beautifully simplistic gaps of fullgaps with the non-gaps of singularborders and noborder. It is named functionalgaps because, since gaps are purely aesthetic, and therefore not useful whatsoever, this patch adds to their functionality by allowing them to easily be turned off.
+This patch is also unique because of its out of the box integration with pertag, allowing gaps to be enabled/disabled and sized on a per-tag basis.
+home: http://dwm.suckless.org/patches/functionalgaps/
+direct link: http://dwm.suckless.org/patches/functionalgaps/dwm-functionalgaps+pertag-6.2.diff
+(this version comes with support for pertag, + the patch itself for simplicity's sake)
+
+** movestack
+chose push up/down as it has a more recent patch
+*** Description
+This plugin allows you to move clients around in the stack and swap them with the master. It emulates the behavior off mod+shift+j and mod+shift+k in Xmonad. movestack(+1) will swap the client with the current focus with the next client. movestack(-1) will swap the client with the current focus with the previous client.
+
+Usage
+Download the patch and apply according to the general instructions.
+Include the movestack.c source file and add keys that call movestack. Example from config.default.h:
+
+ #include "movestack.c"
+ static Key keys[] = {
+ /* modifier key function argument */
+ ...
+ { MODKEY|ShiftMask, XK_j, movestack, {.i = +1 } },
+ { MODKEY|ShiftMask, XK_k, movestack, {.i = -1 } },
+ ...
+
+home: http://dwm.suckless.org/patches/movestack/
+direct link: http://dwm.suckless.org/patches/movestack/dwm-movestack-6.1.diff
+direct link: http://dwm.suckless.org/patches/movestack/dwm-movestack-5.8.2.diff
+** namedscratchpads
+chose scratchpads instead due to simplicity and my familiarity.
+*** Description
+Allows for the creation of multiple scratchpad windows, each assigned to different keybinds.
+On pressing the keybind the window will either:
+- Spawn based on the given command, if it's not already running
+- Toggle visibility of the window
+A new field in the rules array is added to associate the command with the corresponding rule.
+Works well with floatrules for window positioning.
+home: http://dwm.suckless.org/patches/namedscratchpads/
+direct link: http://dwm.suckless.org/patches/namedscratchpads/dwm-namedscratchpads-6.2.diff
+** restartsig
+Older patch. I don't see the advantage of this over .xinitrc
+*** Description
+dwm can now be restarted via MOD+CTRL+SHIFT+Q or by kill -HUP dwmpid
+In addition, a signal handler was added so that dwm cleanly quits by kill -TERM dwmpid.
+Also see selfrestart.
+
+An alternative might be to put something like this in ~/.xinitrc:
+while :; do
+ ssh-agent dwm
+done
+And then just quit/kill dwm.
+
+home: http://dwm.suckless.org/patches/restartsig/
+direct link: http://dwm.suckless.org/patches/restartsig/dwm-restartsig-20180523-6.2.diff
+** rotatestack
+Older patch. I don't see a reason to add rotation functionality over swapping windows in the normal fashio.
+*** Description
+Stack rotation moves a client from the bottom to the top of the stack (or the other way round). This effectively rotates the clients by one position clockwise (or CCW, respectively).
+It should play well with arbitrary stack layouts and nmaster values.
+One may think of it as moving the zoom through the list of clients, very much in the same way as scrolling moves the view port around a pane.
+home: http://dwm.suckless.org/patches/rotatestack/
+direct link: http://dwm.suckless.org/patches/rotatestack/dwm-rotatestack-20161021-ab9571b.diff
+
+** selectivefakefullscreen
+I can't see a scenario where I'd prefer this behavior over simply switching layouts to monocle and then going fullscreen.
+*** Description
+Allows a specific application to fake a full screen while the rest behave as usual, it's based on Jan Hendrik Farr's patch, fakefullscreen.
+Includes a modification to config.def.h in order to add a new member to Rules struct, called "isfakefullscreen", set it to one for all the applications you want to fake a full screen.
+home: http://dwm.suckless.org/patches/selectivefakefullscreen/
+direct link: http://dwm.suckless.org/patches/selectivefakefullscreen/dwm-selectivefakefullscreen-20201130-97099e7.diff
+direct link: http://dwm.suckless.org/patches/selectivefakefullscreen/dwm-selectivefakefullscreen-20200513-f09418b.diff
+
+** smartborders
+not seeing the need for this patch. borders aren't disruptive as-is, so I don't feel the need to hide them.
+*** Description
+Inspired by the xmonad feature of the same name.
+Borders are only drawn when:
+- client window is floating
+- >1 tiled clients are visible
+- floating layout
+home: http://dwm.suckless.org/patches/smartborders/
+direct link: http://dwm.suckless.org/patches/smartborders/dwm-smartborders-6.2.diff (20200216)
+** spawnprograms
+chose to go with autostart patch instead due to not needing a recompile for startup applications
+*** Description
+This patch spawns each command in the startup_programs array on startup. It's similar to the autostart patch, however unlike autostart, it doesn't read anything from external files.
+Example usage (put this into your config.h):
+
+static const char **startup_programs[] = { termcmd, someothercmd, };
+home: http://dwm.suckless.org/patches/spawnprograms/
+direct link: http://dwm.suckless.org/patches/spawnprograms/dwm-spawnprograms-6.2.diff
+** steam
+I'm not having any of the problems resolved by this patch. seems dangerous/hacky.
+*** Description
+The Steam client, and steam windows (games), tends to trigger a ConfigureNotify request every time the window gets focus. More so, the configure events passed along from Steam may have the wrong x and y coordinates which can make the window, if floating, jump around the screen. Another observed symptom is the steam window continuously sliding towards the bottom right corner of the screen.
+This patch works around this age-old issue by ignoring the x and y co-ordinates for ConfigureNotify requests relating to Steam windows.
+It should be noted that this is a simple and crude patch, and while it can be made more generic I have intentionally left it hardcoded against steam in particular as few other windows behaves this badly.
+home: http://dwm.suckless.org/patches/steam/
+direct link: http://dwm.suckless.org/patches/steam/dwm-steam-6.2.diff
+** tilegap
+not as full-features as ru_gaps patch
+*** Description
+Window gaps for the tile layout done right (in my humble opinion). The same size gap between master and stack, window and window, and window and screen edge. Size configurable in config.h.
+home: http://dwm.suckless.org/patches/tilegap/
+direct link: http://dwm.suckless.org/patches/tilegap/dwm-tilegap-6.0.diff (948b) (20150707)
+direct link: http://dwm.suckless.org/patches/tilegap/dwm-tilegap-6.2.diff (20190227)