summaryrefslogtreecommitdiff
path: root/dwm/config.def.h
diff options
context:
space:
mode:
Diffstat (limited to 'dwm/config.def.h')
-rwxr-xr-xdwm/config.def.h2257
1 files changed, 2257 insertions, 0 deletions
diff --git a/dwm/config.def.h b/dwm/config.def.h
new file mode 100755
index 0000000..0100503
--- /dev/null
+++ b/dwm/config.def.h
@@ -0,0 +1,2257 @@
+/* See LICENSE file for copyright and license details. */
+
+/* Helper macros for spawning commands */
+#define SHCMD(cmd) \
+ { \
+ .v = (const char *[]) { "/bin/sh", "-c", cmd, NULL } \
+ }
+#define CMD(...) \
+ { \
+ .v = (const char *[]) { __VA_ARGS__, NULL } \
+ }
+
+/* appearance */
+#if ROUNDED_CORNERS_PATCH
+static const unsigned int borderpx = 0; /* border pixel of windows */
+static const int corner_radius = 10;
+#else
+static const unsigned int borderpx = 1; /* border pixel of windows */
+#endif // ROUNDED_CORNERS_PATCH
+#if BAR_BORDER_PATCH
+/* This allows the bar border size to be explicitly set separately from
+ * borderpx. If left as 0 then it will default to the borderpx value of the
+ * monitor and will automatically update with setborderpx. */
+static const unsigned int barborderpx = 0; /* border pixel of bar */
+#endif // BAR_BORDER_PATCH
+static const unsigned int snap = 32; /* snap pixel */
+#if SWALLOW_PATCH
+static const int swallowfloating =
+ 0; /* 1 means swallow floating windows by default */
+#endif // SWALLOW_PATCH
+#if BAR_TAGPREVIEW_PATCH
+static const int scalepreview = 4; /* Tag preview scaling */
+#endif // BAR_TAGPREVIEW_PATCH
+#if NO_MOD_BUTTONS_PATCH
+static int nomodbuttons =
+ 1; /* allow client mouse button bindings that have no modifier */
+#endif // NO_MOD_BUTTONS_PATCH
+#if VANITYGAPS_PATCH
+static const unsigned int gappih = 20; /* horiz inner gap between windows */
+static const unsigned int gappiv = 10; /* vert inner gap between windows */
+static const unsigned int gappoh =
+ 10; /* horiz outer gap between windows and screen edge */
+static const unsigned int gappov =
+ 30; /* vert outer gap between windows and screen edge */
+static const int smartgaps_fact =
+ 1; /* gap factor when there is only one client; 0 = no gaps, 3 = 3x outer
+ gaps */
+#endif // VANITYGAPS_PATCH
+#if AUTOSTART_PATCH
+static const char autostartblocksh[] = "autostart_blocking.sh";
+static const char autostartsh[] = "autostart.sh";
+static const char dwmdir[] = "dwm";
+static const char localshare[] = ".local/share";
+#endif // AUTOSTART_PATCH
+#if BAR_ANYBAR_PATCH
+static const int usealtbar = 1; /* 1 means use non-dwm status bar */
+static const char *altbarclass = "Polybar"; /* Alternate bar class name */
+static const char *altbarcmd =
+ "$HOME/bar.sh"; /* Alternate bar launch command */
+#endif // BAR_ANYBAR_PATCH
+#if BAR_HOLDBAR_PATCH
+static const int showbar = 0; /* 0 means no bar */
+#else
+static const int showbar = 1; /* 0 means no bar */
+#endif // BAR_HOLDBAR_PATCH
+static const int topbar = 1; /* 0 means bottom bar */
+#if TAB_PATCH
+/* Display modes of the tab bar: never shown, always shown, shown only in */
+/* monocle mode in the presence of several windows. */
+/* Modes after showtab_nmodes are disabled. */
+enum showtab_modes {
+ showtab_never,
+ showtab_auto,
+ showtab_nmodes,
+ showtab_always
+};
+static const int showtab = showtab_auto; /* Default tab bar show mode */
+static const int toptab = False; /* False means bottom tab bar */
+#endif // TAB_PATCH
+#if BAR_HEIGHT_PATCH
+static const int bar_height =
+ 0; /* 0 means derive from font, >= 1 explicit height */
+#endif // BAR_HEIGHT_PATCH
+#if BAR_PADDING_PATCH
+static const int vertpad = 10; /* vertical padding of bar */
+static const int sidepad = 10; /* horizontal padding of bar */
+#endif // BAR_PADDING_PATCH
+#if BAR_WINICON_PATCH
+#define ICONSIZE 20 /* icon size */
+#define ICONSPACING 5 /* space between icon and title */
+#endif // BAR_WINICON_PATCH
+#if FOCUSONCLICK_PATCH
+static const int focusonwheel = 0;
+#endif // FOCUSONCLICK_PATCH
+#if FLOATPOS_PATCH
+static int floatposgrid_x = 5; /* float grid columns */
+static int floatposgrid_y = 5; /* float grid rows */
+#endif // FLOATPOS_PATCH
+#if RIODRAW_PATCH
+static const char slopspawnstyle[] =
+ "-t 0 -c 0.92,0.85,0.69,0.3 -o"; /* do NOT define -f (format) here */
+static const char slopresizestyle[] =
+ "-t 0 -c 0.92,0.85,0.69,0.3"; /* do NOT define -f (format) here */
+static const int riodraw_borders =
+ 0; /* 0 or 1, indicates whether the area drawn using slop includes the
+ window borders */
+#if SWALLOW_PATCH
+static const int riodraw_matchpid =
+ 1; /* 0 or 1, indicates whether to match the PID of the client that was
+ spawned with riospawn */
+#endif // SWALLOW_PATCH
+#endif // RIODRAW_PATCH
+/* Status is to be shown on: -1 (all monitors), 0 (a specific monitor by index),
+ * 'A' (active monitor) */
+#if BAR_STATUSALLMONS_PATCH
+static const int statusmon = -1;
+#elif BAR_STATICSTATUS_PATCH
+static const int statusmon = 0;
+#else
+static const int statusmon = 'A';
+#endif // BAR_STATUSALLMONS_PATCH | BAR_STATICSTATUS_PATCH
+#if BAR_STATUSPADDING_PATCH
+static const int horizpadbar = 2; /* horizontal padding for statusbar */
+static const int vertpadbar = 0; /* vertical padding for statusbar */
+#endif // BAR_STATUSPADDING_PATCH
+#if BAR_STATUSBUTTON_PATCH
+static const char buttonbar[] = "<O>";
+#endif // BAR_STATUSBUTTON_PATCH
+#if BAR_SYSTRAY_PATCH
+static const unsigned int systrayspacing = 2; /* systray spacing */
+static const int showsystray = 1; /* 0 means no systray */
+#endif // BAR_SYSTRAY_PATCH
+#if BAR_TAGLABELS_PATCH
+static const char ptagf[] = "[%s %s]"; /* format of a tag label */
+static const char etagf[] = "[%s]"; /* format of an empty tag */
+static const int lcaselbl = 0; /* 1 means make tag label lowercase */
+#endif // BAR_TAGLABELS_PATCH
+#if BAR_UNDERLINETAGS_PATCH
+static const unsigned int ulinepad =
+ 5; /* horizontal padding between the underline and tag */
+static const unsigned int ulinestroke =
+ 2; /* thickness / height of the underline */
+static const unsigned int ulinevoffset =
+ 0; /* how far above the bottom of the bar the line should appear */
+static const int ulineall =
+ 0; /* 1 to show underline on all tags, 0 for just the active ones */
+#endif // BAR_UNDERLINETAGS_PATCH
+
+#if NAMETAG_PATCH
+#if NAMETAG_PREPEND_PATCH
+/* The format in which the tag is written when named. E.g. %d: %.12s will write
+ * the tag number followed the first 12 characters of the given string. You can
+ * also just use "%d: %s" here. */
+#define NAMETAG_FORMAT "%d: %.12s"
+#else
+#define NAMETAG_FORMAT "%s"
+#endif // NAMETAG_PREPEND_PATCH
+/* The maximum amount of bytes reserved for each tag text. */
+#define MAX_TAGLEN 16
+/* The command to run (via popen). This can be tailored by adding a prompt,
+ * passing other command line arguments or providing name options. Optionally
+ * you can use other dmenu like alternatives like rofi -dmenu. */
+#define NAMETAG_COMMAND "dmenu < /dev/null"
+#endif // NAMETAG_PATCH
+
+#if ALT_TAB_PATCH
+/* alt-tab configuration */
+static const unsigned int tabmodkey =
+ 0x40; /* (Alt) when this key is held down the alt-tab functionality stays
+ active. Must be the same modifier as used to run alttabstart */
+static const unsigned int tabcyclekey =
+ 0x17; /* (Tab) when this key is hit the menu moves one position forward in
+ client stack. Must be the same key as used to run alttabstart */
+static const unsigned int tabposy =
+ 1; /* tab position on Y axis, 0 = top, 1 = center, 2 = bottom */
+static const unsigned int tabposx =
+ 1; /* tab position on X axis, 0 = left, 1 = center, 2 = right */
+static const unsigned int maxwtab = 600; /* tab menu width */
+static const unsigned int maxhtab = 200; /* tab menu height */
+#endif // ALT_TAB_PATCH
+
+/* Indicators: see patch/bar_indicators.h for options */
+static int tagindicatortype = INDICATOR_TOP_LEFT_SQUARE;
+static int tiledindicatortype = INDICATOR_NONE;
+static int floatindicatortype = INDICATOR_TOP_LEFT_SQUARE;
+#if FAKEFULLSCREEN_CLIENT_PATCH && !FAKEFULLSCREEN_PATCH
+static int fakefsindicatortype = INDICATOR_PLUS;
+static int floatfakefsindicatortype = INDICATOR_PLUS_AND_LARGER_SQUARE;
+#endif // FAKEFULLSCREEN_CLIENT_PATCH
+#if ALWAYSONTOP_PATCH
+static int aotindicatortype = INDICATOR_TOP_LEFT_LARGER_SQUARE;
+#endif // ALWAYSONTOP_PATCH
+#if ONLYQUITONEMPTY_PATCH
+static const int quit_empty_window_count =
+ 0; /* only allow dwm to quit if no (<= count) windows are open */
+#endif // ONLYQUITONEMPTY_PATCH
+#if BAR_EXTRASTATUS_PATCH
+static const char statussep = ';'; /* separator between status bars */
+#endif // BAR_EXTRASTATUS_PATCH
+#if BAR_TABGROUPS_PATCH
+#if MONOCLE_LAYOUT
+static void (*bartabmonfns[])(Monitor *) = {monocle /* , customlayoutfn */};
+#else
+static void (*bartabmonfns[])(Monitor *) = {NULL /* , customlayoutfn */};
+#endif // MONOCLE_LAYOUT
+#endif // BAR_TABGROUPS_PATCH
+#if BAR_PANGO_PATCH
+static const char font[] = "monospace 10";
+#else
+static const char *fonts[] = {"monospace:size=10"};
+#endif // BAR_PANGO_PATCH
+static const char dmenufont[] = "monospace:size=10";
+
+static char c000000[] = "#000000"; // placeholder value
+
+static char normfgcolor[] = "#bbbbbb";
+static char normbgcolor[] = "#222222";
+static char normbordercolor[] = "#444444";
+static char normfloatcolor[] = "#db8fd9";
+
+static char selfgcolor[] = "#eeeeee";
+static char selbgcolor[] = "#005577";
+static char selbordercolor[] = "#005577";
+static char selfloatcolor[] = "#005577";
+
+static char titlenormfgcolor[] = "#bbbbbb";
+static char titlenormbgcolor[] = "#222222";
+static char titlenormbordercolor[] = "#444444";
+static char titlenormfloatcolor[] = "#db8fd9";
+
+static char titleselfgcolor[] = "#eeeeee";
+static char titleselbgcolor[] = "#005577";
+static char titleselbordercolor[] = "#005577";
+static char titleselfloatcolor[] = "#005577";
+
+static char tagsnormfgcolor[] = "#bbbbbb";
+static char tagsnormbgcolor[] = "#222222";
+static char tagsnormbordercolor[] = "#444444";
+static char tagsnormfloatcolor[] = "#db8fd9";
+
+static char tagsselfgcolor[] = "#eeeeee";
+static char tagsselbgcolor[] = "#005577";
+static char tagsselbordercolor[] = "#005577";
+static char tagsselfloatcolor[] = "#005577";
+
+static char hidnormfgcolor[] = "#005577";
+static char hidselfgcolor[] = "#227799";
+static char hidnormbgcolor[] = "#222222";
+static char hidselbgcolor[] = "#222222";
+
+static char urgfgcolor[] = "#bbbbbb";
+static char urgbgcolor[] = "#222222";
+static char urgbordercolor[] = "#ff0000";
+static char urgfloatcolor[] = "#db8fd9";
+
+#if BAR_LTSYMBOL_SCHEME_PATCH
+static char ltsymbolfgcolor[] = "#222222";
+static char ltsymbolbgcolor[] = "#fe9877";
+#endif // BAR_LTSYMBOL_SCHEME_PATCH
+
+#if RENAMED_SCRATCHPADS_PATCH
+static char scratchselfgcolor[] = "#FFF7D4";
+static char scratchselbgcolor[] = "#77547E";
+static char scratchselbordercolor[] = "#894B9F";
+static char scratchselfloatcolor[] = "#894B9F";
+
+static char scratchnormfgcolor[] = "#FFF7D4";
+static char scratchnormbgcolor[] = "#664C67";
+static char scratchnormbordercolor[] = "#77547E";
+static char scratchnormfloatcolor[] = "#77547E";
+#endif // RENAMED_SCRATCHPADS_PATCH
+
+#if BAR_FLEXWINTITLE_PATCH
+static char normTTBbgcolor[] = "#330000";
+static char normLTRbgcolor[] = "#330033";
+static char normMONObgcolor[] = "#000033";
+static char normGRIDbgcolor[] = "#003300";
+static char normGRD1bgcolor[] = "#003300";
+static char normGRD2bgcolor[] = "#003300";
+static char normGRDMbgcolor[] = "#506600";
+static char normHGRDbgcolor[] = "#b96600";
+static char normDWDLbgcolor[] = "#003333";
+static char normSPRLbgcolor[] = "#333300";
+static char normfloatbgcolor[] = "#115577";
+static char actTTBbgcolor[] = "#440000";
+static char actLTRbgcolor[] = "#440044";
+static char actMONObgcolor[] = "#000044";
+static char actGRIDbgcolor[] = "#004400";
+static char actGRD1bgcolor[] = "#004400";
+static char actGRD2bgcolor[] = "#004400";
+static char actGRDMbgcolor[] = "#507711";
+static char actHGRDbgcolor[] = "#b97711";
+static char actDWDLbgcolor[] = "#004444";
+static char actSPRLbgcolor[] = "#444400";
+static char actfloatbgcolor[] = "#116688";
+static char selTTBbgcolor[] = "#550000";
+static char selLTRbgcolor[] = "#550055";
+static char selMONObgcolor[] = "#212171";
+static char selGRIDbgcolor[] = "#005500";
+static char selGRD1bgcolor[] = "#005500";
+static char selGRD2bgcolor[] = "#005500";
+static char selGRDMbgcolor[] = "#508822";
+static char selHGRDbgcolor[] = "#b98822";
+static char selDWDLbgcolor[] = "#005555";
+static char selSPRLbgcolor[] = "#555500";
+static char selfloatbgcolor[] = "#117799";
+#endif // BAR_FLEXWINTITLE_PATCH
+
+#if BAR_ALPHA_PATCH
+static const unsigned int baralpha = 0xd0;
+static const unsigned int borderalpha = OPAQUE;
+static const unsigned int alphas[][3] = {
+ /* fg bg border */
+ [SchemeNorm] = {OPAQUE, baralpha, borderalpha},
+ [SchemeSel] = {OPAQUE, baralpha, borderalpha},
+ [SchemeTitleNorm] = {OPAQUE, baralpha, borderalpha},
+ [SchemeTitleSel] = {OPAQUE, baralpha, borderalpha},
+ [SchemeTagsNorm] = {OPAQUE, baralpha, borderalpha},
+ [SchemeTagsSel] = {OPAQUE, baralpha, borderalpha},
+ [SchemeHidNorm] = {OPAQUE, baralpha, borderalpha},
+ [SchemeHidSel] = {OPAQUE, baralpha, borderalpha},
+ [SchemeUrg] = {OPAQUE, baralpha, borderalpha},
+#if BAR_LTSYMBOL_SCHEME_PATCH
+ [SchemeLtSymbol] = {OPAQUE, baralpha, borderalpha},
+#endif // BAR_LTSYMBOL_SCHEME_PATCH
+#if RENAMED_SCRATCHPADS_PATCH
+ [SchemeScratchSel] = {OPAQUE, baralpha, borderalpha},
+ [SchemeScratchNorm] = {OPAQUE, baralpha, borderalpha},
+#endif // RENAMED_SCRATCHPADS_PATCH
+#if BAR_FLEXWINTITLE_PATCH
+ [SchemeFlexActTTB] = {OPAQUE, baralpha, borderalpha},
+ [SchemeFlexActLTR] = {OPAQUE, baralpha, borderalpha},
+ [SchemeFlexActMONO] = {OPAQUE, baralpha, borderalpha},
+ [SchemeFlexActGRID] = {OPAQUE, baralpha, borderalpha},
+ [SchemeFlexActGRD1] = {OPAQUE, baralpha, borderalpha},
+ [SchemeFlexActGRD2] = {OPAQUE, baralpha, borderalpha},
+ [SchemeFlexActGRDM] = {OPAQUE, baralpha, borderalpha},
+ [SchemeFlexActHGRD] = {OPAQUE, baralpha, borderalpha},
+ [SchemeFlexActDWDL] = {OPAQUE, baralpha, borderalpha},
+ [SchemeFlexActSPRL] = {OPAQUE, baralpha, borderalpha},
+ [SchemeFlexActFloat] = {OPAQUE, baralpha, borderalpha},
+ [SchemeFlexInaTTB] = {OPAQUE, baralpha, borderalpha},
+ [SchemeFlexInaLTR] = {OPAQUE, baralpha, borderalpha},
+ [SchemeFlexInaMONO] = {OPAQUE, baralpha, borderalpha},
+ [SchemeFlexInaGRID] = {OPAQUE, baralpha, borderalpha},
+ [SchemeFlexInaGRD1] = {OPAQUE, baralpha, borderalpha},
+ [SchemeFlexInaGRD2] = {OPAQUE, baralpha, borderalpha},
+ [SchemeFlexInaGRDM] = {OPAQUE, baralpha, borderalpha},
+ [SchemeFlexInaHGRD] = {OPAQUE, baralpha, borderalpha},
+ [SchemeFlexInaDWDL] = {OPAQUE, baralpha, borderalpha},
+ [SchemeFlexInaSPRL] = {OPAQUE, baralpha, borderalpha},
+ [SchemeFlexInaFloat] = {OPAQUE, baralpha, borderalpha},
+ [SchemeFlexSelTTB] = {OPAQUE, baralpha, borderalpha},
+ [SchemeFlexSelLTR] = {OPAQUE, baralpha, borderalpha},
+ [SchemeFlexSelMONO] = {OPAQUE, baralpha, borderalpha},
+ [SchemeFlexSelGRID] = {OPAQUE, baralpha, borderalpha},
+ [SchemeFlexSelGRD1] = {OPAQUE, baralpha, borderalpha},
+ [SchemeFlexSelGRD2] = {OPAQUE, baralpha, borderalpha},
+ [SchemeFlexSelGRDM] = {OPAQUE, baralpha, borderalpha},
+ [SchemeFlexSelHGRD] = {OPAQUE, baralpha, borderalpha},
+ [SchemeFlexSelDWDL] = {OPAQUE, baralpha, borderalpha},
+ [SchemeFlexSelSPRL] = {OPAQUE, baralpha, borderalpha},
+ [SchemeFlexSelFloat] = {OPAQUE, baralpha, borderalpha},
+#endif // BAR_FLEXWINTITLE_PATCH
+};
+#endif // BAR_ALPHA_PATCH
+#if BAR_VTCOLORS_PATCH
+static const char title_bg_dark[] = "#303030";
+static const char title_bg_light[] = "#fdfdfd";
+static const int color_ptrs[][ColCount] = {
+ /* fg bg border float */
+ [SchemeNorm] = {-1, -1, 5, 12}, [SchemeSel] = {-1, -1, 11, 13},
+ [SchemeTitleNorm] = {6, -1, -1, -1}, [SchemeTitleSel] = {6, -1, -1, -1},
+ [SchemeTagsNorm] = {2, 0, 0, -1}, [SchemeTagsSel] = {6, 5, 5, -1},
+ [SchemeHidNorm] = {5, 0, 0, -1}, [SchemeHidSel] = {6, -1, -1, -1},
+ [SchemeUrg] = {7, 9, 9, 15},
+#if BAR_LTSYMBOL_SCHEME_PATCH
+ [SchemeLtSymbol] = {-1, 3, 0, 0},
+#endif // BAR_LTSYMBOL_SCHEME_PATCH
+};
+#endif // BAR_VTCOLORS_PATCH
+
+static char *colors[][ColCount] = {
+ /* fg bg border float */
+ [SchemeNorm] = {normfgcolor, normbgcolor, normbordercolor, normfloatcolor},
+ [SchemeSel] = {selfgcolor, selbgcolor, selbordercolor, selfloatcolor},
+ [SchemeTitleNorm] = {titlenormfgcolor, titlenormbgcolor,
+ titlenormbordercolor, titlenormfloatcolor},
+ [SchemeTitleSel] = {titleselfgcolor, titleselbgcolor, titleselbordercolor,
+ titleselfloatcolor},
+ [SchemeTagsNorm] = {tagsnormfgcolor, tagsnormbgcolor, tagsnormbordercolor,
+ tagsnormfloatcolor},
+ [SchemeTagsSel] = {tagsselfgcolor, tagsselbgcolor, tagsselbordercolor,
+ tagsselfloatcolor},
+ [SchemeHidNorm] = {hidnormfgcolor, hidnormbgcolor, c000000, c000000},
+ [SchemeHidSel] = {hidselfgcolor, hidselbgcolor, c000000, c000000},
+ [SchemeUrg] = {urgfgcolor, urgbgcolor, urgbordercolor, urgfloatcolor},
+#if BAR_LTSYMBOL_SCHEME_PATCH
+ [SchemeLtSymbol] = {ltsymbolfgcolor, ltsymbolbgcolor, c000000, c000000},
+#endif // BAR_LTSYMBOL_SCHEME_PATCH
+#if RENAMED_SCRATCHPADS_PATCH
+ [SchemeScratchSel] = {scratchselfgcolor, scratchselbgcolor,
+ scratchselbordercolor, scratchselfloatcolor},
+ [SchemeScratchNorm] = {scratchnormfgcolor, scratchnormbgcolor,
+ scratchnormbordercolor, scratchnormfloatcolor},
+#endif // RENAMED_SCRATCHPADS_PATCH
+#if BAR_FLEXWINTITLE_PATCH
+ [SchemeFlexActTTB] = {titleselfgcolor, actTTBbgcolor, actTTBbgcolor,
+ c000000},
+ [SchemeFlexActLTR] = {titleselfgcolor, actLTRbgcolor, actLTRbgcolor,
+ c000000},
+ [SchemeFlexActMONO] = {titleselfgcolor, actMONObgcolor, actMONObgcolor,
+ c000000},
+ [SchemeFlexActGRID] = {titleselfgcolor, actGRIDbgcolor, actGRIDbgcolor,
+ c000000},
+ [SchemeFlexActGRD1] = {titleselfgcolor, actGRD1bgcolor, actGRD1bgcolor,
+ c000000},
+ [SchemeFlexActGRD2] = {titleselfgcolor, actGRD2bgcolor, actGRD2bgcolor,
+ c000000},
+ [SchemeFlexActGRDM] = {titleselfgcolor, actGRDMbgcolor, actGRDMbgcolor,
+ c000000},
+ [SchemeFlexActHGRD] = {titleselfgcolor, actHGRDbgcolor, actHGRDbgcolor,
+ c000000},
+ [SchemeFlexActDWDL] = {titleselfgcolor, actDWDLbgcolor, actDWDLbgcolor,
+ c000000},
+ [SchemeFlexActSPRL] = {titleselfgcolor, actSPRLbgcolor, actSPRLbgcolor,
+ c000000},
+ [SchemeFlexActFloat] = {titleselfgcolor, actfloatbgcolor, actfloatbgcolor,
+ c000000},
+ [SchemeFlexInaTTB] = {titlenormfgcolor, normTTBbgcolor, normTTBbgcolor,
+ c000000},
+ [SchemeFlexInaLTR] = {titlenormfgcolor, normLTRbgcolor, normLTRbgcolor,
+ c000000},
+ [SchemeFlexInaMONO] = {titlenormfgcolor, normMONObgcolor, normMONObgcolor,
+ c000000},
+ [SchemeFlexInaGRID] = {titlenormfgcolor, normGRIDbgcolor, normGRIDbgcolor,
+ c000000},
+ [SchemeFlexInaGRD1] = {titlenormfgcolor, normGRD1bgcolor, normGRD1bgcolor,
+ c000000},
+ [SchemeFlexInaGRD2] = {titlenormfgcolor, normGRD2bgcolor, normGRD2bgcolor,
+ c000000},
+ [SchemeFlexInaGRDM] = {titlenormfgcolor, normGRDMbgcolor, normGRDMbgcolor,
+ c000000},
+ [SchemeFlexInaHGRD] = {titlenormfgcolor, normHGRDbgcolor, normHGRDbgcolor,
+ c000000},
+ [SchemeFlexInaDWDL] = {titlenormfgcolor, normDWDLbgcolor, normDWDLbgcolor,
+ c000000},
+ [SchemeFlexInaSPRL] = {titlenormfgcolor, normSPRLbgcolor, normSPRLbgcolor,
+ c000000},
+ [SchemeFlexInaFloat] = {titlenormfgcolor, normfloatbgcolor,
+ normfloatbgcolor, c000000},
+ [SchemeFlexSelTTB] = {titleselfgcolor, selTTBbgcolor, selTTBbgcolor,
+ c000000},
+ [SchemeFlexSelLTR] = {titleselfgcolor, selLTRbgcolor, selLTRbgcolor,
+ c000000},
+ [SchemeFlexSelMONO] = {titleselfgcolor, selMONObgcolor, selMONObgcolor,
+ c000000},
+ [SchemeFlexSelGRID] = {titleselfgcolor, selGRIDbgcolor, selGRIDbgcolor,
+ c000000},
+ [SchemeFlexSelGRD1] = {titleselfgcolor, selGRD1bgcolor, selGRD1bgcolor,
+ c000000},
+ [SchemeFlexSelGRD2] = {titleselfgcolor, selGRD2bgcolor, selGRD2bgcolor,
+ c000000},
+ [SchemeFlexSelGRDM] = {titleselfgcolor, selGRDMbgcolor, selGRDMbgcolor,
+ c000000},
+ [SchemeFlexSelHGRD] = {titleselfgcolor, selHGRDbgcolor, selHGRDbgcolor,
+ c000000},
+ [SchemeFlexSelDWDL] = {titleselfgcolor, selDWDLbgcolor, selDWDLbgcolor,
+ c000000},
+ [SchemeFlexSelSPRL] = {titleselfgcolor, selSPRLbgcolor, selSPRLbgcolor,
+ c000000},
+ [SchemeFlexSelFloat] = {titleselfgcolor, selfloatbgcolor, selfloatbgcolor,
+ c000000},
+#endif // BAR_FLEXWINTITLE_PATCH
+};
+
+#if BAR_POWERLINE_STATUS_PATCH
+static char *statuscolors[][ColCount] = {
+ /* fg bg border float */
+ [SchemeNorm] = {normfgcolor, normbgcolor, normbordercolor, normfloatcolor},
+ [SchemeSel] = {selfgcolor, selbgcolor, selbordercolor, selfloatcolor},
+ [SchemeTitleNorm] = {titlenormfgcolor, titlenormbgcolor,
+ titlenormbordercolor, titlenormfloatcolor},
+ [SchemeTitleSel] = {titleselfgcolor, titleselbgcolor, titleselbordercolor,
+ titleselfloatcolor},
+ [SchemeTagsNorm] = {tagsnormfgcolor, tagsnormbgcolor, tagsnormbordercolor,
+ tagsnormfloatcolor},
+ [SchemeTagsSel] = {tagsselfgcolor, tagsselbgcolor, tagsselbordercolor,
+ tagsselfloatcolor},
+ [SchemeHidNorm] = {hidnormfgcolor, hidnormbgcolor, c000000, c000000},
+ [SchemeHidSel] = {hidselfgcolor, hidselbgcolor, c000000, c000000},
+ [SchemeUrg] = {urgfgcolor, urgbgcolor, urgbordercolor, urgfloatcolor},
+};
+#endif // BAR_POWERLINE_STATUS_PATCH
+
+#if BAR_LAYOUTMENU_PATCH
+static const char *layoutmenu_cmd = "layoutmenu.sh";
+#endif
+
+#if BAR_LAUNCHER_PATCH
+static const Launcher launchers[] = {
+ /* icon to display command */
+ {"surf", CMD("surf", "duckduckgo.com")},
+};
+#endif // BAR_LAUNCHER_PATCH
+
+#if COOL_AUTOSTART_PATCH
+static const char *const autostart[] = {
+ "st", NULL, NULL /* terminate */
+};
+#endif // COOL_AUTOSTART_PATCH
+
+#if RENAMED_SCRATCHPADS_PATCH
+static const char *scratchpadcmd[] = {"s", "st", "-n", "spterm", NULL};
+#elif SCRATCHPADS_PATCH
+const char *spcmd1[] = {"st", "-n", "spterm", "-g", "120x34", NULL};
+static Sp scratchpads[] = {
+ /* name cmd */
+ {"spterm", spcmd1},
+};
+#endif // SCRATCHPADS_PATCH
+
+/* Tags
+ * In a traditional dwm the number of tags in use can be changed simply by
+ * changing the number of strings in the tags array. This build does things a
+ * bit different which has some added benefits. If you need to change the number
+ * of tags here then change the NUMTAGS macro in dwm.c.
+ *
+ * Examples:
+ *
+ * 1) static char *tagicons[][NUMTAGS*2] = {
+ * [DEFAULT_TAGS] = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "A",
+ * "B", "C", "D", "E", "F", "G", "H", "I" },
+ * }
+ *
+ * 2) static char *tagicons[][1] = {
+ * [DEFAULT_TAGS] = { "•" },
+ * }
+ *
+ * The first example would result in the tags on the first monitor to be 1
+ * through 9, while the tags for the second monitor would be named A through I.
+ * A third monitor would start again at 1 through 9 while the tags on a fourth
+ * monitor would also be named A through I. Note the tags count of NUMTAGS*2 in
+ * the array initialiser which defines how many tag text / icon exists in the
+ * array. This can be changed to *3 to add separate icons for a third monitor.
+ *
+ * For the second example each tag would be represented as a bullet point. Both
+ * cases work the same from a technical standpoint - the icon index is derived
+ * from the tag index and the monitor index. If the icon index is is greater
+ * than the number of tag icons then it will wrap around until it an icon
+ * matches. Similarly if there are two tag icons then it would alternate between
+ * them. This works seamlessly with alternative tags and alttagsdecoration
+ * patches.
+ */
+#if NAMETAG_PATCH
+static char tagicons[][NUMTAGS][MAX_TAGLEN] =
+#else
+static char *tagicons[][NUMTAGS] =
+#endif // NAMETAG_PATCH
+ {
+ [DEFAULT_TAGS] = {"1", "2", "3", "4", "5", "6", "7", "8", "9"},
+ [ALTERNATIVE_TAGS] = {"A", "B", "C", "D", "E", "F", "G", "H", "I"},
+ [ALT_TAGS_DECORATION] = {"<1>", "<2>", "<3>", "<4>", "<5>", "<6>",
+ "<7>", "<8>", "<9>"},
+ };
+
+#if BAR_TAGGRID_PATCH
+/* grid of tags */
+#define SWITCHTAG_UP 1 << 0
+#define SWITCHTAG_DOWN 1 << 1
+#define SWITCHTAG_LEFT 1 << 2
+#define SWITCHTAG_RIGHT 1 << 3
+#define SWITCHTAG_TOGGLETAG 1 << 4
+#define SWITCHTAG_TAG 1 << 5
+#define SWITCHTAG_VIEW 1 << 6
+#define SWITCHTAG_TOGGLEVIEW 1 << 7
+
+static const int tagrows = 2;
+#endif // BAR_TAGGRID_PATCH
+
+/* There are two options when it comes to per-client rules:
+ * - a typical struct table or
+ * - using the RULE macro
+ *
+ * A traditional struct table looks like this:
+ * // class instance title wintype tags mask isfloating monitor
+ * { "Gimp", NULL, NULL, NULL, 1 << 4, 0, -1 },
+ * { "Firefox", NULL, NULL, NULL, 1 << 7, 0, -1 },
+ *
+ * The RULE macro has the default values set for each field allowing you to only
+ * specify the values that are relevant for your rule, e.g.
+ *
+ * RULE(.class = "Gimp", .tags = 1 << 4)
+ * RULE(.class = "Firefox", .tags = 1 << 7)
+ *
+ * Refer to the Rule struct definition for the list of available fields
+ * depending on the patches you enable.
+ */
+static const Rule rules[] = {
+ /* xprop(1):
+ * WM_CLASS(STRING) = instance, class
+ * WM_NAME(STRING) = title
+ * WM_WINDOW_ROLE(STRING) = role
+ * _NET_WM_WINDOW_TYPE(ATOM) = wintype
+ */
+ RULE(.wintype = WTYPE "DIALOG", .isfloating = 1)
+ RULE(.wintype = WTYPE "UTILITY", .isfloating = 1)
+ RULE(.wintype = WTYPE "TOOLBAR", .isfloating = 1)
+ RULE(.wintype = WTYPE "SPLASH", .isfloating = 1)
+ RULE(.class = "Gimp", .tags = 1 << 4)
+ RULE(.class = "Firefox", .tags = 1 << 7)
+#if RENAMED_SCRATCHPADS_PATCH
+ RULE(.instance = "spterm", .scratchkey = 's',
+ .isfloating = 1)
+#elif SCRATCHPADS_PATCH
+ RULE(.instance = "spterm", .tags = SPTAG(0),
+ .isfloating = 1)
+#endif // SCRATCHPADS_PATCH
+};
+
+#if MONITOR_RULES_PATCH
+#if PERTAG_PATCH
+static const MonitorRule monrules[] = {
+ /* monitor tag layout mfact nmaster showbar topbar */
+ {1, -1, 2, -1, -1, -1, -1}, // use a different layout for the second monitor
+ {-1, -1, 0, -1, -1, -1, -1}, // default
+};
+#else
+static const MonitorRule monrules[] = {
+ /* monitor layout mfact nmaster showbar topbar */
+ {1, 2, -1, -1, -1, -1}, // use a different layout for the second monitor
+ {-1, 0, -1, -1, -1, -1}, // default
+};
+#endif // PERTAG_PATCH
+#endif // MONITOR_RULES_PATCH
+
+#if INSETS_PATCH
+static const Inset default_inset = {
+ .x = 0,
+ .y = 30,
+ .w = 0,
+ .h = 0,
+};
+#endif // INSETS_PATCH
+
+/* Bar rules allow you to configure what is shown where on the bar, as well as
+ * introducing your own bar modules.
+ *
+ * monitor:
+ * -1 show on all monitors
+ * 0 show on monitor 0
+ * 'A' show on active monitor (i.e. focused / selected) (or just -1 for
+ * active?) bar - bar index, 0 is default, 1 is extrabar alignment - how the
+ * module is aligned compared to other modules widthfunc, drawfunc, clickfunc -
+ * providing bar module width, draw and click functions name - does nothing,
+ * intended for visual clue and for logging / debugging
+ */
+static const BarRule barrules[] = {
+/* monitor bar alignment widthfunc drawfunc
+ * clickfunc hoverfunc name */
+#if BAR_STATUSBUTTON_PATCH
+ {-1, 0, BAR_ALIGN_LEFT, width_stbutton, draw_stbutton, click_stbutton, NULL,
+ "statusbutton"},
+#endif // BAR_STATUSBUTTON_PATCH
+#if BAR_LAUNCHER_PATCH
+ {-1, 0, BAR_ALIGN_LEFT, width_launcher, draw_launcher, click_launcher, NULL,
+ "launcher"},
+#endif // BAR_LAUNCHER_PATCH
+#if BAR_POWERLINE_TAGS_PATCH
+ {0, 0, BAR_ALIGN_LEFT, width_pwrl_tags, draw_pwrl_tags, click_pwrl_tags,
+ hover_pwrl_tags, "powerline_tags"},
+#endif // BAR_POWERLINE_TAGS_PATCH
+#if BAR_TAGS_PATCH
+ {-1, 0, BAR_ALIGN_LEFT, width_tags, draw_tags, click_tags, hover_tags,
+ "tags"},
+#endif // BAR_TAGS_PATCH
+#if BAR_TAGLABELS_PATCH
+ {-1, 0, BAR_ALIGN_LEFT, width_taglabels, draw_taglabels, click_taglabels,
+ hover_taglabels, "taglabels"},
+#endif // BAR_TAGLABELS_PATCH
+#if BAR_TAGGRID_PATCH
+ {-1, 0, BAR_ALIGN_LEFT, width_taggrid, draw_taggrid, click_taggrid, NULL,
+ "taggrid"},
+#endif // BAR_TAGGRID_PATCH
+#if BAR_SYSTRAY_PATCH
+ {0, 0, BAR_ALIGN_RIGHT, width_systray, draw_systray, click_systray, NULL,
+ "systray"},
+#endif // BAR_SYSTRAY_PATCH
+#if BAR_LTSYMBOL_PATCH
+ {-1, 0, BAR_ALIGN_LEFT, width_ltsymbol, draw_ltsymbol, click_ltsymbol, NULL,
+ "layout"},
+#endif // BAR_LTSYMBOL_PATCH
+#if BAR_STATUSCOLORS_PATCH && BAR_STATUSCMD_PATCH
+ {statusmon, 0, BAR_ALIGN_RIGHT, width_statuscolors, draw_statuscolors,
+ click_statuscmd, NULL, "statuscolors"},
+#elif BAR_STATUSCOLORS_PATCH
+ {statusmon, 0, BAR_ALIGN_RIGHT, width_statuscolors, draw_statuscolors,
+ click_statuscolors, NULL, "statuscolors"},
+#elif BAR_STATUS2D_PATCH && BAR_STATUSCMD_PATCH
+ {statusmon, 0, BAR_ALIGN_RIGHT, width_status2d, draw_status2d,
+ click_statuscmd, NULL, "status2d"},
+#elif BAR_STATUS2D_PATCH
+ {statusmon, 0, BAR_ALIGN_RIGHT, width_status2d, draw_status2d,
+ click_status2d, NULL, "status2d"},
+#elif BAR_POWERLINE_STATUS_PATCH
+ {statusmon, 0, BAR_ALIGN_RIGHT, width_pwrl_status, draw_pwrl_status,
+ click_pwrl_status, NULL, "powerline_status"},
+#elif BAR_STATUS_PATCH && BAR_STATUSCMD_PATCH
+ {statusmon, 0, BAR_ALIGN_RIGHT, width_status, draw_status, click_statuscmd,
+ NULL, "status"},
+#elif BAR_STATUS_PATCH
+ {statusmon, 0, BAR_ALIGN_RIGHT, width_status, draw_status, click_status,
+ NULL, "status"},
+#endif // BAR_STATUS2D_PATCH | BAR_STATUSCMD_PATCH
+#if XKB_PATCH
+ {0, 0, BAR_ALIGN_RIGHT, width_xkb, draw_xkb, click_xkb, NULL, "xkb"},
+#endif // XKB_PATCH
+#if BAR_FLEXWINTITLE_PATCH
+ {-1, 0, BAR_ALIGN_NONE, width_flexwintitle, draw_flexwintitle,
+ click_flexwintitle, NULL, "flexwintitle"},
+#elif BAR_TABGROUPS_PATCH
+ {-1, 0, BAR_ALIGN_NONE, width_bartabgroups, draw_bartabgroups,
+ click_bartabgroups, NULL, "bartabgroups"},
+#elif BAR_AWESOMEBAR_PATCH
+ {-1, 0, BAR_ALIGN_NONE, width_awesomebar, draw_awesomebar, click_awesomebar,
+ NULL, "awesomebar"},
+#elif BAR_FANCYBAR_PATCH
+ {-1, 0, BAR_ALIGN_NONE, width_fancybar, draw_fancybar, click_fancybar, NULL,
+ "fancybar"},
+#elif BAR_WINTITLE_PATCH
+ {-1, 0, BAR_ALIGN_NONE, width_wintitle, draw_wintitle, click_wintitle, NULL,
+ "wintitle"},
+#endif // BAR_TABGROUPS_PATCH | BAR_AWESOMEBAR_PATCH | BAR_FANCYBAR_PATCH |
+ // BAR_WINTITLE_PATCH
+#if BAR_EXTRASTATUS_PATCH
+#if BAR_STATUSCOLORS_PATCH && BAR_STATUSCMD_PATCH
+ {statusmon, 1, BAR_ALIGN_CENTER, width_statuscolors_es,
+ draw_statuscolors_es, click_statuscmd_es, NULL, "statuscolors_es"},
+#elif BAR_STATUSCOLORS_PATCH
+ {statusmon, 1, BAR_ALIGN_CENTER, width_statuscolors_es,
+ draw_statuscolors_es, click_statuscolors, NULL, "statuscolors_es"},
+#elif BAR_STATUS2D_PATCH && BAR_STATUSCMD_PATCH
+ {statusmon, 1, BAR_ALIGN_CENTER, width_status2d_es, draw_status2d_es,
+ click_statuscmd_es, NULL, "status2d_es"},
+#elif BAR_STATUS2D_PATCH
+ {statusmon, 1, BAR_ALIGN_CENTER, width_status2d_es, draw_status2d_es,
+ click_status2d, NULL, "status2d_es"},
+#elif BAR_POWERLINE_STATUS_PATCH
+ {statusmon, 1, BAR_ALIGN_RIGHT, width_pwrl_status_es, draw_pwrl_status_es,
+ click_pwrl_status, NULL, "powerline_status"},
+#elif BAR_STATUSCMD_PATCH && BAR_STATUS_PATCH
+ {statusmon, 1, BAR_ALIGN_CENTER, width_status_es, draw_status_es,
+ click_statuscmd_es, NULL, "status_es"},
+#elif BAR_STATUS_PATCH
+ {statusmon, 1, BAR_ALIGN_CENTER, width_status_es, draw_status_es,
+ click_status, NULL, "status_es"},
+#endif // BAR_STATUS2D_PATCH | BAR_STATUSCMD_PATCH
+#endif // BAR_EXTRASTATUS_PATCH
+#if BAR_FLEXWINTITLE_PATCH
+#if BAR_WINTITLE_HIDDEN_PATCH
+ {-1, 1, BAR_ALIGN_RIGHT_RIGHT, width_wintitle_hidden, draw_wintitle_hidden,
+ click_wintitle_hidden, NULL, "wintitle_hidden"},
+#endif
+#if BAR_WINTITLE_FLOATING_PATCH
+ {-1, 1, BAR_ALIGN_LEFT, width_wintitle_floating, draw_wintitle_floating,
+ click_wintitle_floating, NULL, "wintitle_floating"},
+#endif // BAR_WINTITLE_FLOATING_PATCH
+#endif // BAR_FLEXWINTITLE_PATCH
+};
+
+/* layout(s) */
+static const float mfact = 0.55; /* factor of master area size [0.05..0.95] */
+static const int nmaster = 1; /* number of clients in master area */
+#if FLEXTILE_DELUXE_LAYOUT
+static const int nstack = 0; /* number of clients in primary stack area */
+#endif // FLEXTILE_DELUXE_LAYOUT
+static const int resizehints =
+ 0; /* 1 means respect size hints in tiled resizals */
+static const int lockfullscreen =
+ 1; /* 1 will force focus on the fullscreen window */
+static const int refreshrate =
+ 120; /* refresh rate (per second) for client move/resize */
+#if PLACEMOUSE_PATCH
+static const int refreshrate_placemouse =
+ 60; /* refresh rate (per second) for placemouse */
+#endif // PLACEMOUSE_PATCH
+#if DRAGMFACT_PATCH
+static const int refreshrate_dragmfact =
+ 40; /* refresh rate (per second) for dragmfact */
+#endif // DRAGMFACT_PATCH
+#if DRAGCFACT_PATCH
+static const int refreshrate_dragcfact =
+ 60; /* refresh rate (per second) for dragcfact */
+#endif // DRAGCFACT_PATCH
+#if DECORATION_HINTS_PATCH
+static const int decorhints = 1; /* 1 means respect decoration hints */
+#endif // DECORATION_HINTS_PATCH
+
+#if NROWGRID_LAYOUT
+#define FORCE_VSPLIT 1
+#endif
+
+#if TAPRESIZE_PATCH
+/* mouse scroll resize */
+static const int scrollsensetivity =
+ 30; /* 1 means resize window by 1 pixel for each scroll event */
+/* resizemousescroll direction argument list */
+static const int scrollargs[][2] = {
+ /* width change height change */
+ {+scrollsensetivity, 0},
+ {-scrollsensetivity, 0},
+ {0, +scrollsensetivity},
+ {0, -scrollsensetivity},
+};
+#endif // TAPRESIZE_PATCH
+
+#if FLEXTILE_DELUXE_LAYOUT
+static const Layout layouts[] = {
+ /* symbol arrange function, { nmaster, nstack, layout, master axis,
+ stack axis, secondary stack axis, symbol func } */
+ {"[]=",
+ flextile,
+ {-1, -1, SPLIT_VERTICAL, TOP_TO_BOTTOM, TOP_TO_BOTTOM, 0,
+ NULL}}, // default tile layout
+ {"><>", NULL, {0}}, /* no layout function means floating behavior */
+ {"[M]", flextile, {-1, -1, NO_SPLIT, MONOCLE, MONOCLE, 0, NULL}}, // monocle
+ {"|||",
+ flextile,
+ {-1, -1, SPLIT_VERTICAL, LEFT_TO_RIGHT, TOP_TO_BOTTOM, 0,
+ NULL}}, // columns (col) layout
+ {">M>",
+ flextile,
+ {-1, -1, FLOATING_MASTER, LEFT_TO_RIGHT, LEFT_TO_RIGHT, 0,
+ NULL}}, // floating master
+ {"[D]",
+ flextile,
+ {-1, -1, SPLIT_VERTICAL, TOP_TO_BOTTOM, MONOCLE, 0, NULL}}, // deck
+ {"TTT",
+ flextile,
+ {-1, -1, SPLIT_HORIZONTAL, LEFT_TO_RIGHT, LEFT_TO_RIGHT, 0,
+ NULL}}, // bstack
+ {"===",
+ flextile,
+ {-1, -1, SPLIT_HORIZONTAL, LEFT_TO_RIGHT, TOP_TO_BOTTOM, 0,
+ NULL}}, // bstackhoriz
+ {"|M|",
+ flextile,
+ {-1, -1, SPLIT_CENTERED_VERTICAL, LEFT_TO_RIGHT, TOP_TO_BOTTOM,
+ TOP_TO_BOTTOM, NULL}}, // centeredmaster
+ {"-M-",
+ flextile,
+ {-1, -1, SPLIT_CENTERED_HORIZONTAL, TOP_TO_BOTTOM, LEFT_TO_RIGHT,
+ LEFT_TO_RIGHT, NULL}}, // centeredmaster horiz
+ {":::",
+ flextile,
+ {-1, -1, NO_SPLIT, GAPPLESSGRID, GAPPLESSGRID, 0, NULL}}, // gappless grid
+ {"[\\]",
+ flextile,
+ {-1, -1, NO_SPLIT, DWINDLE, DWINDLE, 0, NULL}}, // fibonacci dwindle
+ {"(@)",
+ flextile,
+ {-1, -1, NO_SPLIT, SPIRAL, SPIRAL, 0, NULL}}, // fibonacci spiral
+ {"[T]",
+ flextile,
+ {-1, -1, SPLIT_VERTICAL, LEFT_TO_RIGHT, TATAMI, 0, NULL}}, // tatami mats
+#if TILE_LAYOUT
+ {"[]=", tile, {0}},
+#endif
+#if MONOCLE_LAYOUT
+ {"[M]", monocle, {0}},
+#endif
+#if BSTACK_LAYOUT
+ {"TTT", bstack, {0}},
+#endif
+#if BSTACKHORIZ_LAYOUT
+ {"===", bstackhoriz, {0}},
+#endif
+#if CENTEREDMASTER_LAYOUT
+ {"|M|", centeredmaster, {0}},
+#endif
+#if CENTEREDFLOATINGMASTER_LAYOUT
+ {">M>", centeredfloatingmaster, {0}},
+#endif
+#if COLUMNS_LAYOUT
+ {"|||", col, {0}},
+#endif
+#if DECK_LAYOUT
+ {"[D]", deck, {0}},
+#endif
+#if FIBONACCI_SPIRAL_LAYOUT
+ {"(@)", spiral, {0}},
+#endif
+#if FIBONACCI_DWINDLE_LAYOUT
+ {"[\\]", dwindle, {0}},
+#endif
+#if GRIDMODE_LAYOUT
+ {"HHH", grid, {0}},
+#endif
+#if HORIZGRID_LAYOUT
+ {"---", horizgrid, {0}},
+#endif
+#if GAPPLESSGRID_LAYOUT
+ {":::", gaplessgrid, {0}},
+#endif
+#if NROWGRID_LAYOUT
+ {"###", nrowgrid, {0}},
+#endif
+};
+#else
+static const Layout layouts[] = {
+/* symbol arrange function */
+#if TILE_LAYOUT
+ {"[]=", tile}, /* first entry is default */
+#endif
+ {"><>", NULL}, /* no layout function means floating behavior */
+#if MONOCLE_LAYOUT
+ {"[M]", monocle},
+#endif
+#if BSTACK_LAYOUT
+ {"TTT", bstack},
+#endif
+#if BSTACKHORIZ_LAYOUT
+ {"===", bstackhoriz},
+#endif
+#if CENTEREDMASTER_LAYOUT
+ {"|M|", centeredmaster},
+#endif
+#if CENTEREDFLOATINGMASTER_LAYOUT
+ {">M>", centeredfloatingmaster},
+#endif
+#if COLUMNS_LAYOUT
+ {"|||", col},
+#endif
+#if DECK_LAYOUT
+ {"[D]", deck},
+#endif
+#if FIBONACCI_SPIRAL_LAYOUT
+ {"(@)", spiral},
+#endif
+#if FIBONACCI_DWINDLE_LAYOUT
+ {"[\\]", dwindle},
+#endif
+#if GRIDMODE_LAYOUT
+ {"HHH", grid},
+#endif
+#if HORIZGRID_LAYOUT
+ {"---", horizgrid},
+#endif
+#if GAPPLESSGRID_LAYOUT
+ {":::", gaplessgrid},
+#endif
+#if NROWGRID_LAYOUT
+ {"###", nrowgrid},
+#endif
+};
+#endif // FLEXTILE_DELUXE_LAYOUT
+
+#if XKB_PATCH
+/* xkb frontend */
+static const char *xkb_layouts[] = {
+ "en",
+ "ru",
+};
+#endif // XKB_PATCH
+
+/* key definitions */
+#define MODKEY Mod1Mask
+#if COMBO_PATCH && SWAPTAGS_PATCH && TAGOTHERMONITOR_PATCH
+#define TAGKEYS(KEY, TAG) \
+ {MODKEY, KEY, comboview, {.ui = 1 << TAG}}, \
+ {MODKEY | ControlMask, KEY, toggleview, {.ui = 1 << TAG}}, \
+ {MODKEY | ShiftMask, KEY, combotag, {.ui = 1 << TAG}}, \
+ {MODKEY | ControlMask | ShiftMask, KEY, toggletag, {.ui = 1 << TAG}}, \
+ {MODKEY | Mod4Mask | ShiftMask, KEY, swaptags, {.ui = 1 << TAG}}, \
+ {MODKEY | Mod4Mask, KEY, tagnextmon, {.ui = 1 << TAG}}, \
+ {MODKEY | Mod4Mask | ControlMask, KEY, tagprevmon, {.ui = 1 << TAG}},
+#elif COMBO_PATCH && SWAPTAGS_PATCH
+#define TAGKEYS(KEY, TAG) \
+ {MODKEY, KEY, comboview, {.ui = 1 << TAG}}, \
+ {MODKEY | ControlMask, KEY, toggleview, {.ui = 1 << TAG}}, \
+ {MODKEY | ShiftMask, KEY, combotag, {.ui = 1 << TAG}}, \
+ {MODKEY | ControlMask | ShiftMask, KEY, toggletag, {.ui = 1 << TAG}}, \
+ {MODKEY | Mod4Mask | ShiftMask, KEY, swaptags, {.ui = 1 << TAG}},
+#elif COMBO_PATCH && TAGOTHERMONITOR_PATCH
+#define TAGKEYS(KEY, TAG) \
+ {MODKEY, KEY, comboview, {.ui = 1 << TAG}}, \
+ {MODKEY | ControlMask, KEY, toggleview, {.ui = 1 << TAG}}, \
+ {MODKEY | ShiftMask, KEY, combotag, {.ui = 1 << TAG}}, \
+ {MODKEY | ControlMask | ShiftMask, KEY, toggletag, {.ui = 1 << TAG}}, \
+ {MODKEY | Mod4Mask, KEY, tagnextmon, {.ui = 1 << TAG}}, \
+ {MODKEY | Mod4Mask | ControlMask, KEY, tagprevmon, {.ui = 1 << TAG}},
+#elif COMBO_PATCH
+#define TAGKEYS(KEY, TAG) \
+ {MODKEY, KEY, comboview, {.ui = 1 << TAG}}, \
+ {MODKEY | ControlMask, KEY, toggleview, {.ui = 1 << TAG}}, \
+ {MODKEY | ShiftMask, KEY, combotag, {.ui = 1 << TAG}}, \
+ {MODKEY | ControlMask | ShiftMask, KEY, toggletag, {.ui = 1 << TAG}},
+#elif SWAPTAGS_PATCH && TAGOTHERMONITOR_PATCH
+#define TAGKEYS(KEY, TAG) \
+ {MODKEY, KEY, view, {.ui = 1 << TAG}}, \
+ {MODKEY | ControlMask, KEY, toggleview, {.ui = 1 << TAG}}, \
+ {MODKEY | ShiftMask, KEY, tag, {.ui = 1 << TAG}}, \
+ {MODKEY | ControlMask | ShiftMask, KEY, toggletag, {.ui = 1 << TAG}}, \
+ {MODKEY | Mod4Mask | ShiftMask, KEY, swaptags, {.ui = 1 << TAG}}, \
+ {MODKEY | Mod4Mask, KEY, tagnextmon, {.ui = 1 << TAG}}, \
+ {MODKEY | Mod4Mask | ControlMask, KEY, tagprevmon, {.ui = 1 << TAG}},
+#elif SWAPTAGS_PATCH
+#define TAGKEYS(KEY, TAG) \
+ {MODKEY, KEY, view, {.ui = 1 << TAG}}, \
+ {MODKEY | ControlMask, KEY, toggleview, {.ui = 1 << TAG}}, \
+ {MODKEY | ShiftMask, KEY, tag, {.ui = 1 << TAG}}, \
+ {MODKEY | ControlMask | ShiftMask, KEY, toggletag, {.ui = 1 << TAG}}, \
+ {MODKEY | Mod4Mask | ShiftMask, KEY, swaptags, {.ui = 1 << TAG}},
+#elif TAGOTHERMONITOR_PATCH
+#define TAGKEYS(KEY, TAG) \
+ {MODKEY, KEY, view, {.ui = 1 << TAG}}, \
+ {MODKEY | ControlMask, KEY, toggleview, {.ui = 1 << TAG}}, \
+ {MODKEY | ShiftMask, KEY, tag, {.ui = 1 << TAG}}, \
+ {MODKEY | ControlMask | ShiftMask, KEY, toggletag, {.ui = 1 << TAG}}, \
+ {MODKEY | Mod4Mask, KEY, tagnextmon, {.ui = 1 << TAG}}, \
+ {MODKEY | Mod4Mask | ControlMask, KEY, tagprevmon, {.ui = 1 << TAG}},
+#else
+#define TAGKEYS(KEY, TAG) \
+ {MODKEY, KEY, view, {.ui = 1 << TAG}}, \
+ {MODKEY | ControlMask, KEY, toggleview, {.ui = 1 << TAG}}, \
+ {MODKEY | ShiftMask, KEY, tag, {.ui = 1 << TAG}}, \
+ {MODKEY | ControlMask | ShiftMask, KEY, toggletag, {.ui = 1 << TAG}},
+#endif // COMBO_PATCH / SWAPTAGS_PATCH / TAGOTHERMONITOR_PATCH
+
+#if STACKER_PATCH
+#define STACKKEYS(MOD, ACTION) \
+ {MOD, XK_j, ACTION##stack, {.i = INC(+1)}}, \
+ {MOD, XK_k, ACTION##stack, {.i = INC(-1)}}, \
+ {MOD, XK_s, ACTION##stack, {.i = PREVSEL}}, \
+ {MOD, XK_w, ACTION##stack, {.i = 0}}, \
+ {MOD, XK_e, ACTION##stack, {.i = 1}}, \
+ {MOD, XK_a, ACTION##stack, {.i = 2}}, \
+ {MOD, XK_z, ACTION##stack, {.i = -1}},
+#endif // STACKER_PATCH
+
+#if BAR_HOLDBAR_PATCH
+#define HOLDKEY 0 // replace 0 with the keysym to activate holdbar
+#endif // BAR_HOLDBAR_PATCH
+
+/* commands */
+#if !NODMENU_PATCH
+static char dmenumon[2] =
+ "0"; /* component of dmenucmd, manipulated in spawn() */
+#endif // NODMENU_PATCH
+static const char *dmenucmd[] = {"dmenu_run",
+#if !NODMENU_PATCH
+ "-m",
+ dmenumon,
+#endif // NODMENU_PATCH
+ "-fn",
+ dmenufont,
+ "-nb",
+ normbgcolor,
+ "-nf",
+ normfgcolor,
+ "-sb",
+ selbgcolor,
+ "-sf",
+ selfgcolor,
+#if BAR_DMENUMATCHTOP_PATCH
+ topbar ? NULL : "-b",
+#endif // BAR_DMENUMATCHTOP_PATCH
+ NULL};
+static const char *termcmd[] = {"st", NULL};
+
+#if BAR_STATUSCMD_PATCH
+#if BAR_DWMBLOCKS_PATCH
+/* This defines the name of the executable that handles the bar (used for
+ * signalling purposes) */
+#define STATUSBAR "dwmblocks"
+#else
+/* commands spawned when clicking statusbar, the mouse button pressed is
+ * exported as BUTTON */
+static const StatusCmd statuscmds[] = {
+ {"notify-send Volume$BUTTON", 1},
+ {"notify-send CPU$BUTTON", 2},
+ {"notify-send Battery$BUTTON", 3},
+};
+/* test the above with: xsetroot -name "$(printf '\x01Volume |\x02 CPU |\x03
+ * Battery')" */
+static const char *statuscmd[] = {"/bin/sh", "-c", NULL, NULL};
+#endif // BAR_DWMBLOCKS_PATCH
+#endif // BAR_STATUSCMD_PATCH
+
+#if ON_EMPTY_KEYS_PATCH
+static const char *firefoxcmd[] = {"firefox", NULL};
+static const Key on_empty_keys[] = {
+ /* modifier key function argument */
+ {0, XK_f, spawn, {.v = firefoxcmd}},
+};
+#endif // ON_EMPTY_KEYS_PATCH
+
+#if XRESOURCES_PATCH
+/*
+ * Xresources preferences to load at startup.
+ *
+ * Name Type Address
+ * ------------------------------------------------
+ * "nmaster" INTEGER &nmaster
+ * "mfact" FLOAT &mfact
+ * "color1" STRING &color1
+ *
+ * In the Xresources file setting resources shoud be prefixed with "dwm.", e.g.
+ *
+ * dwm.nmaster: 1
+ * dwm.mfact: 0.50
+ * dwm.color1: #FA6EFA
+ *
+ * Note that the const qualifier must be removed from the variables if you plan
+ * on overriding them with values from Xresources. While resources can be
+ * reloaded using the xrdb function some changes may only take effect following
+ * a restart.
+ */
+ResourcePref resources[] = {
+ /* Resource name Type Address */
+ {"normfgcolor", STRING, &normfgcolor},
+ {"normbgcolor", STRING, &normbgcolor},
+ {"normbordercolor", STRING, &normbordercolor},
+ {"normfloatcolor", STRING, &normfloatcolor},
+ {"selfgcolor", STRING, &selfgcolor},
+ {"selbgcolor", STRING, &selbgcolor},
+ {"selbordercolor", STRING, &selbordercolor},
+ {"selfloatcolor", STRING, &selfloatcolor},
+ {"titlenormfgcolor", STRING, &titlenormfgcolor},
+ {"titlenormbgcolor", STRING, &titlenormbgcolor},
+ {"titlenormbordercolor", STRING, &titlenormbordercolor},
+ {"titlenormfloatcolor", STRING, &titlenormfloatcolor},
+ {"titleselfgcolor", STRING, &titleselfgcolor},
+ {"titleselbgcolor", STRING, &titleselbgcolor},
+ {"titleselbordercolor", STRING, &titleselbordercolor},
+ {"titleselfloatcolor", STRING, &titleselfloatcolor},
+ {"tagsnormfgcolor", STRING, &tagsnormfgcolor},
+ {"tagsnormbgcolor", STRING, &tagsnormbgcolor},
+ {"tagsnormbordercolor", STRING, &tagsnormbordercolor},
+ {"tagsnormfloatcolor", STRING, &tagsnormfloatcolor},
+ {"tagsselfgcolor", STRING, &tagsselfgcolor},
+ {"tagsselbgcolor", STRING, &tagsselbgcolor},
+ {"tagsselbordercolor", STRING, &tagsselbordercolor},
+ {"tagsselfloatcolor", STRING, &tagsselfloatcolor},
+ {"hidnormfgcolor", STRING, &hidnormfgcolor},
+ {"hidnormbgcolor", STRING, &hidnormbgcolor},
+ {"hidselfgcolor", STRING, &hidselfgcolor},
+ {"hidselbgcolor", STRING, &hidselbgcolor},
+ {"urgfgcolor", STRING, &urgfgcolor},
+ {"urgbgcolor", STRING, &urgbgcolor},
+ {"urgbordercolor", STRING, &urgbordercolor},
+ {"urgfloatcolor", STRING, &urgfloatcolor},
+#if RENAMED_SCRATCHPADS_PATCH
+ {"scratchselfgcolor", STRING, &scratchselfgcolor},
+ {"scratchselbgcolor", STRING, &scratchselbgcolor},
+ {"scratchselbordercolor", STRING, &scratchselbordercolor},
+ {"scratchselfloatcolor", STRING, &scratchselfloatcolor},
+ {"scratchnormfgcolor", STRING, &scratchnormfgcolor},
+ {"scratchnormbgcolor", STRING, &scratchnormbgcolor},
+ {"scratchnormbordercolor", STRING, &scratchnormbordercolor},
+ {"scratchnormfloatcolor", STRING, &scratchnormfloatcolor},
+#endif // RENAMED_SCRATCHPADS_PATCH
+#if BAR_FLEXWINTITLE_PATCH
+ {"normTTBbgcolor", STRING, &normTTBbgcolor},
+ {"normLTRbgcolor", STRING, &normLTRbgcolor},
+ {"normMONObgcolor", STRING, &normMONObgcolor},
+ {"normGRIDbgcolor", STRING, &normGRIDbgcolor},
+ {"normGRD1bgcolor", STRING, &normGRD1bgcolor},
+ {"normGRD2bgcolor", STRING, &normGRD2bgcolor},
+ {"normGRDMbgcolor", STRING, &normGRDMbgcolor},
+ {"normHGRDbgcolor", STRING, &normHGRDbgcolor},
+ {"normDWDLbgcolor", STRING, &normDWDLbgcolor},
+ {"normSPRLbgcolor", STRING, &normSPRLbgcolor},
+ {"normfloatbgcolor", STRING, &normfloatbgcolor},
+ {"actTTBbgcolor", STRING, &actTTBbgcolor},
+ {"actLTRbgcolor", STRING, &actLTRbgcolor},
+ {"actMONObgcolor", STRING, &actMONObgcolor},
+ {"actGRIDbgcolor", STRING, &actGRIDbgcolor},
+ {"actGRD1bgcolor", STRING, &actGRD1bgcolor},
+ {"actGRD2bgcolor", STRING, &actGRD2bgcolor},
+ {"actGRDMbgcolor", STRING, &actGRDMbgcolor},
+ {"actHGRDbgcolor", STRING, &actHGRDbgcolor},
+ {"actDWDLbgcolor", STRING, &actDWDLbgcolor},
+ {"actSPRLbgcolor", STRING, &actSPRLbgcolor},
+ {"actfloatbgcolor", STRING, &actfloatbgcolor},
+ {"selTTBbgcolor", STRING, &selTTBbgcolor},
+ {"selLTRbgcolor", STRING, &selLTRbgcolor},
+ {"selMONObgcolor", STRING, &selMONObgcolor},
+ {"selGRIDbgcolor", STRING, &selGRIDbgcolor},
+ {"selGRD1bgcolor", STRING, &selGRD1bgcolor},
+ {"selGRD2bgcolor", STRING, &selGRD2bgcolor},
+ {"selGRDMbgcolor", STRING, &selGRDMbgcolor},
+ {"selHGRDbgcolor", STRING, &selHGRDbgcolor},
+ {"selDWDLbgcolor", STRING, &selDWDLbgcolor},
+ {"selSPRLbgcolor", STRING, &selSPRLbgcolor},
+ {"selfloatbgcolor", STRING, &selfloatbgcolor},
+#endif // BAR_FLEXWINTITLE_PATCH
+#if BAR_LTSYMBOL_SCHEME_PATCH
+ {"ltsymbolfgcolor", STRING, &ltsymbolfgcolor},
+ {"ltsymbolbgcolor", STRING, &ltsymbolbgcolor},
+#endif // BAR_LTSYMBOL_SCHEME_PATCH
+};
+#endif // XRESOURCES_PATCH
+
+static const Key keys[] = {
+/* modifier key function argument
+ */
+#if KEYMODES_PATCH
+ {MODKEY, XK_Escape, setkeymode, {.ui = COMMANDMODE}},
+#endif // KEYMODES_PATCH
+ {MODKEY, XK_r, spawn, {.v = dmenucmd}},
+ {MODKEY, XK_Return, spawn, {.v = termcmd}},
+#if RIODRAW_PATCH
+ {MODKEY | ControlMask, XK_p, riospawnsync, {.v = dmenucmd}},
+ {MODKEY | ControlMask, XK_Return, riospawn, {.v = termcmd}},
+ {MODKEY, XK_s, rioresize, {0}},
+#endif // RIODRAW_PATCH
+ {MODKEY, XK_b, togglebar, {0}},
+#if TOGGLETOPBAR_PATCH
+ {MODKEY | ShiftMask, XK_b, toggletopbar, {0}},
+#endif // TOGGLETOPBAR_PATCH
+#if TAB_PATCH
+ {MODKEY | ControlMask, XK_b, tabmode, {-1}},
+#endif // TAB_PATCH
+#if FOCUSMASTER_PATCH || FOCUSMASTER_RETURN_PATCH
+ {MODKEY | ControlMask, XK_space, focusmaster, {0}},
+#endif // FOCUSMASTER_PATCH / FOCUSMASTER_RETURN_PATCH
+#if STACKER_PATCH
+ STACKKEYS(MODKEY, focus) STACKKEYS(MODKEY | ShiftMask, push)
+#else
+ {MODKEY, XK_j, focusstack, {.i = +1}},
+ {MODKEY, XK_k, focusstack, {.i = -1}},
+#endif // STACKER_PATCH
+#if FOCUSDIR_PATCH
+ {MODKEY, XK_Left, focusdir, {.i = 0}}, // left
+ {MODKEY, XK_Right, focusdir, {.i = 1}}, // right
+ {MODKEY, XK_Up, focusdir, {.i = 2}}, // up
+ {MODKEY, XK_Down, focusdir, {.i = 3}}, // down
+#endif // FOCUSDIR_PATCH
+#if PLACEDIR_PATCH
+ {MODKEY | ControlMask, XK_Left, placedir, {.i = 0}}, // left
+ {MODKEY | ControlMask, XK_Right, placedir, {.i = 1}}, // right
+ {MODKEY | ControlMask, XK_Up, placedir, {.i = 2}}, // up
+ {MODKEY | ControlMask, XK_Down, placedir, {.i = 3}}, // down
+#endif // PLACEDIR_PATCH
+#if SWAPFOCUS_PATCH && PERTAG_PATCH
+ {MODKEY, XK_s, swapfocus, {.i = -1}},
+#endif // SWAPFOCUS_PATCH
+#if SWITCHCOL_PATCH
+ {MODKEY, XK_v, switchcol, {0}},
+#endif // SWITCHCOL_PATCH
+#if ROTATESTACK_PATCH
+ {MODKEY | Mod4Mask, XK_j, rotatestack, {.i = +1}},
+ {MODKEY | Mod4Mask, XK_k, rotatestack, {.i = -1}},
+#endif // ROTATESTACK_PATCH
+#if INPLACEROTATE_PATCH
+ {MODKEY | Mod4Mask, XK_j, inplacerotate, {.i = +2}}, // same as rotatestack
+ {MODKEY | Mod4Mask, XK_k, inplacerotate, {.i = -2}}, // same as reotatestack
+ {MODKEY | Mod4Mask | ShiftMask, XK_j, inplacerotate, {.i = +1}},
+ {MODKEY | Mod4Mask | ShiftMask, XK_k, inplacerotate, {.i = -1}},
+#endif // INPLACEROTATE_PATCH
+#if PUSH_PATCH || PUSH_NO_MASTER_PATCH
+ {MODKEY | ControlMask, XK_j, pushdown, {0}},
+ {MODKEY | ControlMask, XK_k, pushup, {0}},
+#endif // PUSH_PATCH / PUSH_NO_MASTER_PATCH
+ {MODKEY, XK_i, incnmaster, {.i = +1}},
+ {MODKEY, XK_d, incnmaster, {.i = -1}},
+#if FLEXTILE_DELUXE_LAYOUT
+ {MODKEY | ControlMask, XK_i, incnstack, {.i = +1}},
+ {MODKEY | ControlMask, XK_u, incnstack, {.i = -1}},
+#endif // FLEXTILE_DELUXE_LAYOUT
+ {MODKEY, XK_h, setmfact, {.f = -0.05}},
+ {MODKEY, XK_l, setmfact, {.f = +0.05}},
+#if CFACTS_PATCH
+ {MODKEY | ShiftMask, XK_h, setcfact, {.f = +0.25}},
+ {MODKEY | ShiftMask, XK_l, setcfact, {.f = -0.25}},
+ {MODKEY | ShiftMask, XK_o, setcfact, {0}},
+#endif // CFACTS_PATCH
+#if ASPECTRESIZE_PATCH
+ {MODKEY | ControlMask | ShiftMask, XK_e, aspectresize, {.i = +24}},
+ {MODKEY | ControlMask | ShiftMask, XK_r, aspectresize, {.i = -24}},
+#endif // ASPECTRESIZE_PATCH
+#if MOVERESIZE_PATCH
+ {MODKEY | Mod4Mask, XK_Down, moveresize, {.v = "0x 25y 0w 0h"}},
+ {MODKEY | Mod4Mask, XK_Up, moveresize, {.v = "0x -25y 0w 0h"}},
+ {MODKEY | Mod4Mask, XK_Right, moveresize, {.v = "25x 0y 0w 0h"}},
+ {MODKEY | Mod4Mask, XK_Left, moveresize, {.v = "-25x 0y 0w 0h"}},
+ {MODKEY | Mod4Mask | ShiftMask, XK_Down, moveresize, {.v = "0x 0y 0w 25h"}},
+ {MODKEY | Mod4Mask | ShiftMask, XK_Up, moveresize, {.v = "0x 0y 0w -25h"}},
+ {MODKEY | Mod4Mask | ShiftMask,
+ XK_Right,
+ moveresize,
+ {.v = "0x 0y 25w 0h"}},
+ {MODKEY | Mod4Mask | ShiftMask,
+ XK_Left,
+ moveresize,
+ {.v = "0x 0y -25w 0h"}},
+#endif // MOVERESIZE_PATCH
+#if MOVESTACK_PATCH
+ {MODKEY | ShiftMask, XK_j, movestack, {.i = +1}},
+ {MODKEY | ShiftMask, XK_k, movestack, {.i = -1}},
+#endif // MOVESTACK_PATCH
+#if TRANSFER_PATCH
+ {MODKEY, XK_x, transfer, {0}},
+#endif // TRANSFER_PATCH
+#if TRANSFER_ALL_PATCH
+ {MODKEY | ControlMask, XK_x, transferall, {0}},
+#endif // TRANSFER_ALL_PATCH
+#if REORGANIZETAGS_PATCH
+ {MODKEY | ControlMask, XK_r, reorganizetags, {0}},
+#endif // REORGANIZETAGS_PATCH
+#if DISTRIBUTETAGS_PATCH
+ {MODKEY | ControlMask, XK_d, distributetags, {0}},
+#endif // DISTRIBUTETAGS_PATCH
+#if INSETS_PATCH
+ {MODKEY | ShiftMask | ControlMask,
+ XK_a,
+ updateinset,
+ {.v = &default_inset}},
+#endif // INSETS_PATCH
+ {MODKEY | ShftMask, XK_Return, zoom, {0}},
+#if VANITYGAPS_PATCH
+ {MODKEY | Mod4Mask, XK_u, incrgaps, {.i = +1}},
+ {MODKEY | Mod4Mask | ShiftMask, XK_u, incrgaps, {.i = -1}},
+ {MODKEY | Mod4Mask, XK_i, incrigaps, {.i = +1}},
+ {MODKEY | Mod4Mask | ShiftMask, XK_i, incrigaps, {.i = -1}},
+ {MODKEY | Mod4Mask, XK_o, incrogaps, {.i = +1}},
+ {MODKEY | Mod4Mask | ShiftMask, XK_o, incrogaps, {.i = -1}},
+ {MODKEY | Mod4Mask, XK_6, incrihgaps, {.i = +1}},
+ {MODKEY | Mod4Mask | ShiftMask, XK_6, incrihgaps, {.i = -1}},
+ {MODKEY | Mod4Mask, XK_7, incrivgaps, {.i = +1}},
+ {MODKEY | Mod4Mask | ShiftMask, XK_7, incrivgaps, {.i = -1}},
+ {MODKEY | Mod4Mask, XK_8, incrohgaps, {.i = +1}},
+ {MODKEY | Mod4Mask | ShiftMask, XK_8, incrohgaps, {.i = -1}},
+ {MODKEY | Mod4Mask, XK_9, incrovgaps, {.i = +1}},
+ {MODKEY | Mod4Mask | ShiftMask, XK_9, incrovgaps, {.i = -1}},
+ {MODKEY | Mod4Mask, XK_0, togglegaps, {0}},
+ {MODKEY | Mod4Mask | ShiftMask, XK_0, defaultgaps, {0}},
+#endif // VANITYGAPS_PATCH
+#if ALT_TAB_PATCH
+ {Mod1Mask, XK_Tab, alttabstart, {0}},
+#else
+ {MODKEY, XK_Tab, view, {0}},
+#endif // ALT_TAB_PATCH
+#if SHIFTTAG_PATCH
+ {MODKEY | ShiftMask,
+ XK_Left,
+ shifttag,
+ {.i = -1}}, // note keybinding conflict with focusadjacenttag tagtoleft
+ {MODKEY | ShiftMask,
+ XK_Right,
+ shifttag,
+ {.i = +1}}, // note keybinding conflict with focusadjacenttag tagtoright
+#endif // SHIFTTAG_PATCH
+#if SHIFTTAGCLIENTS_PATCH
+ {MODKEY | ShiftMask | ControlMask, XK_Left, shifttagclients, {.i = -1}},
+ {MODKEY | ShiftMask | ControlMask, XK_Right, shifttagclients, {.i = +1}},
+#endif // SHIFTTAGCLIENTS_PATCH
+#if SHIFTVIEW_PATCH
+ {MODKEY | ShiftMask, XK_Tab, shiftview, {.i = -1}},
+ {MODKEY | ShiftMask, XK_backslash, shiftview, {.i = +1}},
+#endif // SHIFTVIEW_PATCH
+#if SHIFTVIEW_CLIENTS_PATCH
+ {MODKEY | Mod4Mask, XK_Tab, shiftviewclients, {.i = -1}},
+ {MODKEY | Mod4Mask, XK_backslash, shiftviewclients, {.i = +1}},
+#endif // SHIFTVIEW_CLIENTS_PATCH
+#if SHIFTBOTH_PATCH
+ {MODKEY | ControlMask,
+ XK_Left,
+ shiftboth,
+ {.i = -1}}, // note keybinding conflict with focusadjacenttag
+ // tagandviewtoleft placedir
+ {MODKEY | ControlMask,
+ XK_Right,
+ shiftboth,
+ {.i = +1}}, // note keybinding conflict with focusadjacenttag
+ // tagandviewtoright placedir
+#endif // SHIFTBOTH_PATCH
+#if SHIFTSWAPTAGS_PATCH && SWAPTAGS_PATCH
+ {MODKEY | Mod4Mask | ShiftMask, XK_Left, shiftswaptags, {.i = -1}},
+ {MODKEY | Mod4Mask | ShiftMask, XK_Right, shiftswaptags, {.i = +1}},
+#endif // SHIFTSWAPTAGS_PATCH
+#if BAR_WINTITLEACTIONS_PATCH
+ {MODKEY | ControlMask, XK_z, showhideclient, {0}},
+ {MODKEY | ControlMask, XK_s, unhideall, {0}},
+#endif // BAR_WINTITLEACTIONS_PATCH
+ {MODKEY, XK_s, killclient, {0}},
+#if KILLUNSEL_PATCH
+ {MODKEY | ShiftMask, XK_x, killunsel, {0}},
+#endif // KILLUNSEL_PATCH
+#if SELFRESTART_PATCH
+ {MODKEY | ShiftMask, XK_r, self_restart, {0}},
+#endif // SELFRESTART_PATCH
+ {MODKEY | ShiftMask, XK_q, quit, {0}},
+#if RESTARTSIG_PATCH
+ {MODKEY | ControlMask | ShiftMask, XK_q, quit, {1}},
+#endif // RESTARTSIG_PATCH
+#if FOCUSURGENT_PATCH
+ {MODKEY, XK_u, focusurgent, {0}},
+#endif // FOCUSURGENT_PATCH
+#if BAR_HOLDBAR_PATCH
+ {0, HOLDKEY, holdbar, {0}},
+#endif // BAR_HOLDBAR_PATCH
+#if WINVIEW_PATCH
+ {MODKEY, XK_o, winview, {0}},
+#endif // WINVIEW_PATCH
+#if XRDB_PATCH || XRESOURCES_PATCH
+ {MODKEY | ShiftMask, XK_F5, xrdb, {.v = NULL}},
+#endif // XRDB_PATCH | XRESOURCES_PATCH
+ {MODKEY, XK_t, setlayout, {.v = &layouts[0]}},
+ {MODKEY, XK_f, setlayout, {.v = &layouts[1]}},
+ {MODKEY, XK_m, setlayout, {.v = &layouts[2]}},
+#if COLUMNS_LAYOUT
+ {MODKEY, XK_c, setlayout, {.v = &layouts[3]}},
+#endif // COLUMNS_LAYOUT
+#if FLEXTILE_DELUXE_LAYOUT
+ {MODKEY | ControlMask,
+ XK_t,
+ rotatelayoutaxis,
+ {.i = +1}}, /* flextile, 1 = layout axis */
+ {MODKEY | ControlMask,
+ XK_Tab,
+ rotatelayoutaxis,
+ {.i = +2}}, /* flextile, 2 = master axis */
+ {MODKEY | ControlMask | ShiftMask,
+ XK_Tab,
+ rotatelayoutaxis,
+ {.i = +3}}, /* flextile, 3 = stack axis */
+ {MODKEY | ControlMask | Mod1Mask,
+ XK_Tab,
+ rotatelayoutaxis,
+ {.i = +4}}, /* flextile, 4 = secondary stack axis */
+ {MODKEY | Mod5Mask,
+ XK_t,
+ rotatelayoutaxis,
+ {.i = -1}}, /* flextile, 1 = layout axis */
+ {MODKEY | Mod5Mask,
+ XK_Tab,
+ rotatelayoutaxis,
+ {.i = -2}}, /* flextile, 2 = master axis */
+ {MODKEY | Mod5Mask | ShiftMask,
+ XK_Tab,
+ rotatelayoutaxis,
+ {.i = -3}}, /* flextile, 3 = stack axis */
+ {MODKEY | Mod5Mask | Mod1Mask,
+ XK_Tab,
+ rotatelayoutaxis,
+ {.i = -4}}, /* flextile, 4 = secondary stack axis */
+ {MODKEY | ControlMask,
+ XK_Return,
+ mirrorlayout,
+ {0}}, /* flextile, flip master and stack areas */
+#endif // FLEXTILE_DELUXE_LAYOUT
+ {MODKEY, XK_space, setlayout, {0}},
+ {MODKEY | ShiftMask, XK_space, togglefloating, {0}},
+#if ALWAYSONTOP_PATCH
+ {MODKEY | ShiftMask, XK_space, togglealwaysontop, {0}},
+#endif // ALWAYSONTOP_PATCH
+#if MAXIMIZE_PATCH
+ {MODKEY | ControlMask | ShiftMask, XK_h, togglehorizontalmax, {0}},
+ {MODKEY | ControlMask | ShiftMask, XK_l, togglehorizontalmax, {0}},
+ {MODKEY | ControlMask | ShiftMask, XK_j, toggleverticalmax, {0}},
+ {MODKEY | ControlMask | ShiftMask, XK_k, toggleverticalmax, {0}},
+ {MODKEY | ControlMask, XK_m, togglemax, {0}},
+#endif // MAXIMIZE_PATCH
+#if NO_MOD_BUTTONS_PATCH
+ {MODKEY | ShiftMask, XK_Escape, togglenomodbuttons, {0}},
+#endif // NO_MOD_BUTTONS_PATCH
+#if RENAMED_SCRATCHPADS_PATCH
+ {MODKEY, XK_grave, togglescratch, {.v = scratchpadcmd}},
+ {MODKEY | ControlMask, XK_grave, setscratch, {.v = scratchpadcmd}},
+ {MODKEY | ShiftMask, XK_grave, removescratch, {.v = scratchpadcmd}},
+#elif SCRATCHPADS_PATCH
+ {MODKEY, XK_grave, togglescratch, {.ui = 0}},
+ {MODKEY | ControlMask, XK_grave, setscratch, {.ui = 0}},
+ {MODKEY | ShiftMask, XK_grave, removescratch, {.ui = 0}},
+#endif // SCRATCHPADS_PATCH | RENAMED_SCRATCHPADS_PATCH
+#if UNFLOATVISIBLE_PATCH
+ {MODKEY | Mod4Mask, XK_space, unfloatvisible, {0}},
+ {MODKEY | ShiftMask, XK_t, unfloatvisible, {.v = &layouts[0]}},
+#endif // UNFLOATVISIBLE_PATCH
+#if TOGGLEFULLSCREEN_PATCH
+ {MODKEY, XK_y, togglefullscreen, {0}},
+#endif // TOGGLEFULLSCREEN_PATCH
+#if !FAKEFULLSCREEN_PATCH && FAKEFULLSCREEN_CLIENT_PATCH
+ {MODKEY | ShiftMask, XK_y, togglefakefullscreen, {0}},
+#endif // FAKEFULLSCREEN_CLIENT_PATCH
+#if FULLSCREEN_PATCH
+ {MODKEY | ShiftMask, XK_f, fullscreen, {0}},
+#endif // FULLSCREEN_PATCH
+#if STICKY_PATCH
+ {MODKEY | ShiftMask, XK_s, togglesticky, {0}},
+#endif // STICKY_PATCH
+#if SCRATCHPAD_ALT_1_PATCH
+ {MODKEY, XK_minus, scratchpad_show, {0}},
+ {MODKEY | ShiftMask, XK_minus, scratchpad_hide, {0}},
+ {MODKEY, XK_equal, scratchpad_remove, {0}},
+#elif SCRATCHPADS_PATCH && !RENAMED_SCRATCHPADS_PATCH
+ {MODKEY, XK_0, view, {.ui = ~SPTAGMASK}},
+ {MODKEY | ShiftMask, XK_0, tag, {.ui = ~SPTAGMASK}},
+#else
+ {MODKEY, XK_0, view, {.ui = ~0}},
+ {MODKEY | ShiftMask, XK_0, tag, {.ui = ~0}},
+#endif // SCRATCHPAD_ALT_1_PATCH
+ {MODKEY, XK_comma, focusmon, {.i = -1}},
+ {MODKEY, XK_period, focusmon, {.i = +1}},
+ {MODKEY | ShiftMask, XK_comma, tagmon, {.i = -1}},
+ {MODKEY | ShiftMask, XK_period, tagmon, {.i = +1}},
+#if FOCUSADJACENTTAG_PATCH
+ {MODKEY,
+ XK_Left,
+ viewtoleft,
+ {0}}, // note keybinding conflict with focusdir
+ {MODKEY,
+ XK_Right,
+ viewtoright,
+ {0}}, // note keybinding conflict with focusdir
+ {MODKEY | ShiftMask,
+ XK_Left,
+ tagtoleft,
+ {0}}, // note keybinding conflict with shifttag
+ {MODKEY | ShiftMask,
+ XK_Right,
+ tagtoright,
+ {0}}, // note keybinding conflict with shifttag
+ {MODKEY | ControlMask,
+ XK_Left,
+ tagandviewtoleft,
+ {0}}, // note keybinding conflict with placedir
+ {MODKEY | ControlMask,
+ XK_Right,
+ tagandviewtoright,
+ {0}}, // note keybinding conflict with placedir
+#endif // FOCUSADJACENTTAG_PATCH
+#if TAGALL_PATCH
+ {MODKEY | ShiftMask, XK_F1, tagall, {.v = "F1"}},
+ {MODKEY | ShiftMask, XK_F2, tagall, {.v = "F2"}},
+ {MODKEY | ShiftMask, XK_F3, tagall, {.v = "F3"}},
+ {MODKEY | ShiftMask, XK_F4, tagall, {.v = "F4"}},
+ {MODKEY | ShiftMask, XK_F5, tagall, {.v = "F5"}},
+ {MODKEY | ShiftMask, XK_F6, tagall, {.v = "F6"}},
+ {MODKEY | ShiftMask, XK_F7, tagall, {.v = "F7"}},
+ {MODKEY | ShiftMask, XK_F8, tagall, {.v = "F8"}},
+ {MODKEY | ShiftMask, XK_F9, tagall, {.v = "F9"}},
+ {MODKEY | ControlMask, XK_F1, tagall, {.v = "1"}},
+ {MODKEY | ControlMask, XK_F2, tagall, {.v = "2"}},
+ {MODKEY | ControlMask, XK_F3, tagall, {.v = "3"}},
+ {MODKEY | ControlMask, XK_F4, tagall, {.v = "4"}},
+ {MODKEY | ControlMask, XK_F5, tagall, {.v = "5"}},
+ {MODKEY | ControlMask, XK_F6, tagall, {.v = "6"}},
+ {MODKEY | ControlMask, XK_F7, tagall, {.v = "7"}},
+ {MODKEY | ControlMask, XK_F8, tagall, {.v = "8"}},
+ {MODKEY | ControlMask, XK_F9, tagall, {.v = "9"}},
+#endif // TAGALL_PATCH
+#if TAGALLMON_PATCH
+ {MODKEY | Mod4Mask | ShiftMask, XK_comma, tagallmon, {.i = +1}},
+ {MODKEY | Mod4Mask | ShiftMask, XK_period, tagallmon, {.i = -1}},
+#endif // TAGALLMON_PATCH
+#if TAGSWAPMON_PATCH
+ {MODKEY | Mod4Mask | ControlMask, XK_comma, tagswapmon, {.i = +1}},
+ {MODKEY | Mod4Mask | ControlMask, XK_period, tagswapmon, {.i = -1}},
+#endif // TAGSWAPMON_PATCH
+#if BAR_ALTERNATIVE_TAGS_PATCH
+ {MODKEY, XK_n, togglealttag, {0}},
+#endif // BAR_ALTERNATIVE_TAGS_PATCH
+#if NAMETAG_PATCH
+ {MODKEY | ShiftMask, XK_n, nametag, {0}},
+#endif // NAMETAG_PATCH
+#if BAR_TAGGRID_PATCH
+ {MODKEY | ControlMask,
+ XK_Up,
+ switchtag,
+ {.ui = SWITCHTAG_UP | SWITCHTAG_VIEW}},
+ {MODKEY | ControlMask,
+ XK_Down,
+ switchtag,
+ {.ui = SWITCHTAG_DOWN | SWITCHTAG_VIEW}},
+ {MODKEY | ControlMask,
+ XK_Right,
+ switchtag,
+ {.ui = SWITCHTAG_RIGHT |
+ SWITCHTAG_VIEW}}, // note keybinding conflict with placedir
+ {MODKEY | ControlMask,
+ XK_Left,
+ switchtag,
+ {.ui = SWITCHTAG_LEFT |
+ SWITCHTAG_VIEW}}, // note keybinding conflict with placedir
+ {MODKEY | Mod4Mask,
+ XK_Up,
+ switchtag,
+ {.ui = SWITCHTAG_UP | SWITCHTAG_TAG | SWITCHTAG_VIEW}},
+ {MODKEY | Mod4Mask,
+ XK_Down,
+ switchtag,
+ {.ui = SWITCHTAG_DOWN | SWITCHTAG_TAG | SWITCHTAG_VIEW}},
+ {MODKEY | Mod4Mask,
+ XK_Right,
+ switchtag,
+ {.ui = SWITCHTAG_RIGHT | SWITCHTAG_TAG | SWITCHTAG_VIEW}},
+ {MODKEY | Mod4Mask,
+ XK_Left,
+ switchtag,
+ {.ui = SWITCHTAG_LEFT | SWITCHTAG_TAG | SWITCHTAG_VIEW}},
+#endif // BAR_TAGGRID_PATCH
+#if MOVECENTER_PATCH
+ {MODKEY, XK_x, movecenter, {0}}, // note keybinding conflict with killunsel
+#endif // MOVECENTER_PATCH
+#if MOVEPLACE_PATCH
+ {MODKEY, XK_KP_7, moveplace, {.ui = WIN_NW}}, /* XK_KP_Home, */
+ {MODKEY, XK_KP_8, moveplace, {.ui = WIN_N}}, /* XK_KP_Up, */
+ {MODKEY, XK_KP_9, moveplace, {.ui = WIN_NE}}, /* XK_KP_Prior, */
+ {MODKEY, XK_KP_4, moveplace, {.ui = WIN_W}}, /* XK_KP_Left, */
+ {MODKEY, XK_KP_5, moveplace, {.ui = WIN_C}}, /* XK_KP_Begin, */
+ {MODKEY, XK_KP_6, moveplace, {.ui = WIN_E}}, /* XK_KP_Right, */
+ {MODKEY, XK_KP_1, moveplace, {.ui = WIN_SW}}, /* XK_KP_End, */
+ {MODKEY, XK_KP_2, moveplace, {.ui = WIN_S}}, /* XK_KP_Down, */
+ {MODKEY, XK_KP_3, moveplace, {.ui = WIN_SE}}, /* XK_KP_Next, */
+#endif // MOVEPLACE_PATCH
+#if EXRESIZE_PATCH
+ {MODKEY, XK_KP_7, explace, {.ui = EX_NW}}, /* XK_KP_Home, */
+ {MODKEY, XK_KP_8, explace, {.ui = EX_N}}, /* XK_KP_Up, */
+ {MODKEY, XK_KP_9, explace, {.ui = EX_NE}}, /* XK_KP_Prior, */
+ {MODKEY, XK_KP_4, explace, {.ui = EX_W}}, /* XK_KP_Left, */
+ {MODKEY, XK_KP_5, explace, {.ui = EX_C}}, /* XK_KP_Begin, */
+ {MODKEY, XK_KP_6, explace, {.ui = EX_E}}, /* XK_KP_Right, */
+ {MODKEY, XK_KP_1, explace, {.ui = EX_SW}}, /* XK_KP_End, */
+ {MODKEY, XK_KP_2, explace, {.ui = EX_S}}, /* XK_KP_Down, */
+ {MODKEY, XK_KP_3, explace, {.ui = EX_SE}}, /* XK_KP_Next, */
+
+ {MODKEY | ShiftMask,
+ XK_KP_8,
+ exresize,
+ {.v = (int[]){0, 25}}}, /* XK_KP_Up, */
+ {MODKEY | ShiftMask,
+ XK_KP_2,
+ exresize,
+ {.v = (int[]){0, -25}}}, /* XK_KP_Down, */
+ {MODKEY | ShiftMask,
+ XK_KP_6,
+ exresize,
+ {.v = (int[]){25, 0}}}, /* XK_KP_Right, */
+ {MODKEY | ShiftMask,
+ XK_KP_4,
+ exresize,
+ {.v = (int[]){-25, 0}}}, /* XK_KP_Left, */
+ {MODKEY | ShiftMask,
+ XK_KP_5,
+ exresize,
+ {.v = (int[]){25, 25}}}, /* XK_KP_Begin, */
+ {MODKEY | ShiftMask | ControlMask,
+ XK_KP_5,
+ exresize,
+ {.v = (int[]){-25, -25}}}, /* XK_KP_Begin, */
+
+ {MODKEY | ControlMask,
+ XK_KP_6,
+ togglehorizontalexpand,
+ {.i = +1}}, /* XK_KP_Right, */
+ {MODKEY | ControlMask,
+ XK_KP_3,
+ togglehorizontalexpand,
+ {.i = 0}}, /* XK_KP_Next, */
+ {MODKEY | ControlMask,
+ XK_KP_4,
+ togglehorizontalexpand,
+ {.i = -1}}, /* XK_KP_Left, */
+ {MODKEY | ControlMask,
+ XK_KP_8,
+ toggleverticalexpand,
+ {.i = +1}}, /* XK_KP_Up, */
+ {MODKEY | ControlMask,
+ XK_KP_1,
+ toggleverticalexpand,
+ {.i = 0}}, /* XK_KP_End, */
+ {MODKEY | ControlMask,
+ XK_KP_2,
+ toggleverticalexpand,
+ {.i = -1}}, /* XK_KP_Down, */
+ {MODKEY | ControlMask,
+ XK_KP_9,
+ togglemaximize,
+ {.i = -1}}, /* XK_KP_Prior, */
+ {MODKEY | ControlMask,
+ XK_KP_7,
+ togglemaximize,
+ {.i = +1}}, /* XK_KP_Home, */
+ {MODKEY | ControlMask,
+ XK_KP_5,
+ togglemaximize,
+ {.i = 0}}, /* XK_KP_Begin, */
+#endif // EXRESIZE_PATCH
+#if FLOATPOS_PATCH
+ /* Note that due to key limitations the below example kybindings are defined
+ * with a Mod3Mask, which is not always readily available. Refer to the
+ * patch wiki for more details. */
+ /* Client position is limited to monitor window area */
+ {Mod3Mask, XK_u, floatpos, {.v = "-26x -26y"}}, // ↖
+ {Mod3Mask, XK_i, floatpos, {.v = " 0x -26y"}}, // ↑
+ {Mod3Mask, XK_o, floatpos, {.v = " 26x -26y"}}, // ↗
+ {Mod3Mask, XK_j, floatpos, {.v = "-26x 0y"}}, // ←
+ {Mod3Mask, XK_l, floatpos, {.v = " 26x 0y"}}, // →
+ {Mod3Mask, XK_m, floatpos, {.v = "-26x 26y"}}, // ↙
+ {Mod3Mask, XK_comma, floatpos, {.v = " 0x 26y"}}, // ↓
+ {Mod3Mask, XK_period, floatpos, {.v = " 26x 26y"}}, // ↘
+ /* Absolute positioning (allows moving windows between monitors) */
+ {Mod3Mask | ControlMask, XK_u, floatpos, {.v = "-26a -26a"}}, // ↖
+ {Mod3Mask | ControlMask, XK_i, floatpos, {.v = " 0a -26a"}}, // ↑
+ {Mod3Mask | ControlMask, XK_o, floatpos, {.v = " 26a -26a"}}, // ↗
+ {Mod3Mask | ControlMask, XK_j, floatpos, {.v = "-26a 0a"}}, // ←
+ {Mod3Mask | ControlMask, XK_l, floatpos, {.v = " 26a 0a"}}, // →
+ {Mod3Mask | ControlMask, XK_m, floatpos, {.v = "-26a 26a"}}, // ↙
+ {Mod3Mask | ControlMask, XK_comma, floatpos, {.v = " 0a 26a"}}, // ↓
+ {Mod3Mask | ControlMask, XK_period, floatpos, {.v = " 26a 26a"}}, // ↘
+ /* Resize client, client center position is fixed which means that client
+ expands in all directions */
+ {Mod3Mask | ShiftMask, XK_u, floatpos, {.v = "-26w -26h"}}, // ↖
+ {Mod3Mask | ShiftMask, XK_i, floatpos, {.v = " 0w -26h"}}, // ↑
+ {Mod3Mask | ShiftMask, XK_o, floatpos, {.v = " 26w -26h"}}, // ↗
+ {Mod3Mask | ShiftMask, XK_j, floatpos, {.v = "-26w 0h"}}, // ←
+ {Mod3Mask | ShiftMask, XK_k, floatpos, {.v = "800W 800H"}}, // ·
+ {Mod3Mask | ShiftMask, XK_l, floatpos, {.v = " 26w 0h"}}, // →
+ {Mod3Mask | ShiftMask, XK_m, floatpos, {.v = "-26w 26h"}}, // ↙
+ {Mod3Mask | ShiftMask, XK_comma, floatpos, {.v = " 0w 26h"}}, // ↓
+ {Mod3Mask | ShiftMask, XK_period, floatpos, {.v = " 26w 26h"}}, // ↘
+ /* Client is positioned in a floating grid, movement is relative to client's
+ current position */
+ {Mod3Mask | Mod1Mask, XK_u, floatpos, {.v = "-1p -1p"}}, // ↖
+ {Mod3Mask | Mod1Mask, XK_i, floatpos, {.v = " 0p -1p"}}, // ↑
+ {Mod3Mask | Mod1Mask, XK_o, floatpos, {.v = " 1p -1p"}}, // ↗
+ {Mod3Mask | Mod1Mask, XK_j, floatpos, {.v = "-1p 0p"}}, // ←
+ {Mod3Mask | Mod1Mask, XK_k, floatpos, {.v = " 0p 0p"}}, // ·
+ {Mod3Mask | Mod1Mask, XK_l, floatpos, {.v = " 1p 0p"}}, // →
+ {Mod3Mask | Mod1Mask, XK_m, floatpos, {.v = "-1p 1p"}}, // ↙
+ {Mod3Mask | Mod1Mask, XK_comma, floatpos, {.v = " 0p 1p"}}, // ↓
+ {Mod3Mask | Mod1Mask, XK_period, floatpos, {.v = " 1p 1p"}}, // ↘
+#endif // FLOATPOS_PATCH
+#if SETBORDERPX_PATCH
+ {MODKEY | ControlMask, XK_minus, setborderpx, {.i = -1}},
+ {MODKEY | ControlMask, XK_plus, setborderpx, {.i = +1}},
+ {MODKEY | ControlMask, XK_numbersign, setborderpx, {.i = 0}},
+#endif // SETBORDERPX_PATCH
+#if CYCLELAYOUTS_PATCH
+ {MODKEY | ControlMask, XK_comma, cyclelayout, {.i = -1}},
+ {MODKEY | ControlMask, XK_period, cyclelayout, {.i = +1}},
+#endif // CYCLELAYOUTS_PATCH
+#if MPDCONTROL_PATCH
+ {MODKEY, XK_F1, mpdchange, {.i = -1}},
+ {MODKEY, XK_F2, mpdchange, {.i = +1}},
+ {MODKEY, XK_Escape, mpdcontrol, {0}},
+#endif // MPDCONTROL_PATCH
+ TAGKEYS(XK_1, 0) TAGKEYS(XK_2, 1) TAGKEYS(XK_3, 2) TAGKEYS(XK_4, 3)
+ TAGKEYS(XK_5, 4) TAGKEYS(XK_6, 5) TAGKEYS(XK_7, 6) TAGKEYS(XK_8, 7)
+ TAGKEYS(XK_9, 8)};
+
+#if KEYMODES_PATCH
+static const Key cmdkeys[] = {
+ /* modifier keys function argument */
+ {0, XK_Escape, clearcmd, {0}},
+ {ControlMask, XK_c, clearcmd, {0}},
+ {0, XK_i, setkeymode, {.ui = INSERTMODE}},
+};
+
+static const Command commands[] = {
+ /* modifier (4 keys) keysyms (4 keys) function
+ argument */
+ {{ControlMask, ShiftMask, 0, 0},
+ {XK_w, XK_h, 0, 0},
+ setlayout,
+ {.v = &layouts[0]}},
+ {{ControlMask, 0, 0, 0}, {XK_w, XK_o, 0, 0}, setlayout, {.v = &layouts[2]}},
+ {{ControlMask, ShiftMask, 0, 0}, {XK_w, XK_o, 0, 0}, onlyclient, {0}},
+ {{ControlMask, 0, 0, 0}, {XK_w, XK_v, 0, 0}, setlayout, {.v = &layouts[0]}},
+ {{ControlMask, 0, 0, 0}, {XK_w, XK_less, 0, 0}, setmfact, {.f = -0.05}},
+ {{ControlMask, ShiftMask, 0, 0},
+ {XK_w, XK_less, 0, 0},
+ setmfact,
+ {.f = +0.05}},
+ {{ControlMask, ShiftMask, 0, 0},
+ {XK_w, XK_0, 0, 0},
+ setmfact,
+ {.f = +1.50}},
+ {{ShiftMask, 0, 0, 0}, {XK_period, XK_e, 0, 0}, spawn, {.v = dmenucmd}},
+ {{ShiftMask, 0, 0, 0}, {XK_period, XK_o, 0, 0}, spawn, {.v = dmenucmd}},
+ {{ShiftMask, 0, 0, 0}, {XK_period, XK_q, XK_Return, 0}, quit, {0}},
+ {{ShiftMask, 0, 0, 0}, {XK_period, XK_b, XK_d, XK_Return}, killclient, {0}},
+ {{ShiftMask, 0, 0, 0},
+ {XK_period, XK_b, XK_n, XK_Return},
+ focusstack,
+ {.i = +1}},
+ {{ShiftMask, 0, ShiftMask, 0},
+ {XK_period, XK_b, XK_n, XK_Return},
+ focusstack,
+ {.i = -1}},
+};
+#endif // KEYMODES_PATCH
+
+/* button definitions */
+#if STATUSBUTTON_PATCH
+/* click can be ClkButton, ClkTagBar, ClkLtSymbol, ClkStatusText, ClkWinTitle,
+ * ClkClientWin, or ClkRootWin */
+#else
+/* click can be ClkTagBar, ClkLtSymbol, ClkStatusText, ClkWinTitle,
+ * ClkClientWin, or ClkRootWin */
+#endif //
+static const Button buttons[] = {
+/* click event mask button function argument
+ */
+#if BAR_STATUSBUTTON_PATCH
+ {ClkButton, 0, Button1, spawn, {.v = dmenucmd}},
+#endif // BAR_STATUSBUTTON_PATCH
+ {ClkLtSymbol, 0, Button1, setlayout, {0}},
+#if BAR_LAYOUTMENU_PATCH
+ {ClkLtSymbol, 0, Button3, layoutmenu, {0}},
+#else
+ {ClkLtSymbol, 0, Button3, setlayout, {.v = &layouts[2]}},
+#endif // BAR_LAYOUTMENU_PATCH
+#if BAR_WINTITLEACTIONS_PATCH
+ {ClkWinTitle, 0, Button1, togglewin, {0}},
+ {ClkWinTitle, 0, Button3, showhideclient, {0}},
+#endif // BAR_WINTITLEACTIONS_PATCH
+ {ClkWinTitle, 0, Button2, zoom, {0}},
+#if BAR_STATUSCMD_PATCH && BAR_DWMBLOCKS_PATCH
+ {ClkStatusText, 0, Button1, sigstatusbar, {.i = 1}},
+ {ClkStatusText, 0, Button2, sigstatusbar, {.i = 2}},
+ {ClkStatusText, 0, Button3, sigstatusbar, {.i = 3}},
+#elif BAR_STATUSCMD_PATCH
+ {ClkStatusText, 0, Button1, spawn, {.v = statuscmd}},
+ {ClkStatusText, 0, Button2, spawn, {.v = statuscmd}},
+ {ClkStatusText, 0, Button3, spawn, {.v = statuscmd}},
+#else
+ {ClkStatusText, 0, Button2, spawn, {.v = termcmd}},
+#endif // BAR_STATUSCMD_PATCH
+#if PLACEMOUSE_PATCH
+ /* placemouse options, choose which feels more natural:
+ * 0 - tiled position is relative to mouse cursor
+ * 1 - tiled postiion is relative to window center
+ * 2 - mouse pointer warps to window center
+ *
+ * The moveorplace uses movemouse or placemouse depending on the floating
+ * state of the selected client. Set up individual keybindings for the two
+ * if you want to control these separately (i.e. to retain the feature to
+ * move a tiled window into a floating position).
+ */
+ {ClkClientWin, MODKEY, Button1, moveorplace, {.i = 1}},
+#else
+ {ClkClientWin, MODKEY, Button1, movemouse, {0}},
+#endif // PLACEMOUSE_PATCH
+ {ClkClientWin, MODKEY, Button2, togglefloating, {0}},
+ {ClkClientWin, MODKEY, Button3, resizemouse, {0}},
+#if TAPRESIZE_PATCH
+ {ClkClientWin, MODKEY, Button4, resizemousescroll, {.v = &scrollargs[0]}},
+ {ClkClientWin, MODKEY, Button5, resizemousescroll, {.v = &scrollargs[1]}},
+ {ClkClientWin, MODKEY, Button6, resizemousescroll, {.v = &scrollargs[2]}},
+ {ClkClientWin, MODKEY, Button7, resizemousescroll, {.v = &scrollargs[3]}},
+#endif // TAPRESIZE_PATCH
+#if DRAGCFACT_PATCH && CFACTS_PATCH
+ {ClkClientWin, MODKEY | ShiftMask, Button3, dragcfact, {0}},
+#endif // DRAGCFACT_PATCH
+#if DRAGMFACT_PATCH
+ {ClkClientWin, MODKEY | ShiftMask, Button1, dragmfact, {0}},
+#endif // DRAGMFACT_PATCH
+ {ClkTagBar, 0, Button1, view, {0}},
+ {ClkTagBar, 0, Button3, toggleview, {0}},
+ {ClkTagBar, MODKEY, Button1, tag, {0}},
+ {ClkTagBar, MODKEY, Button3, toggletag, {0}},
+#if TAB_PATCH
+ {ClkTabBar, 0, Button1, focuswin, {0}},
+#endif // TAB_PATCH
+};
+
+#if DWMC_PATCH
+/* signal definitions */
+/* signum must be greater than 0 */
+/* trigger signals using `xsetroot -name "fsignal:<signame> [<type> <value>]"`
+ */
+static const Signal signals[] = {
+ /* signum function */
+ {"focusstack", focusstack},
+ {"setmfact", setmfact},
+ {"togglebar", togglebar},
+#if TOGGLETOPBAR_PATCH
+ {"toggletopbar", toggletopbar},
+#endif // TOGGLETOPBAR_PATCH
+ {"incnmaster", incnmaster},
+ {"togglefloating", togglefloating},
+ {"focusmon", focusmon},
+#if STACKER_PATCH
+ {"pushstack", pushstack},
+#endif // STACKER_PATCH
+#if FLOATPOS_PATCH
+ {"floatpos", floatpos},
+#endif // FLOATPOS_PATCH
+#if FOCUSURGENT_PATCH
+ {"focusurgent", focusurgent},
+#endif // FOCUSURGENT_PATCH
+#if FOCUSADJACENTTAG_PATCH
+ {"viewtoleft", viewtoleft},
+ {"viewtoright", viewtoright},
+ {"tagtoleft", tagtoleft},
+ {"tagtoright", tagtoright},
+ {"tagandviewtoleft", tagandviewtoleft},
+ {"tagandviewtoright", tagandviewtoright},
+#endif // FOCUSADJACENTTAG_PATCH
+#if SWAPFOCUS_PATCH && PERTAG_PATCH
+ {"swapfocus", swapfocus},
+#endif // SWAPFOCUS_PATCH
+#if SWITCHCOL_PATCH
+ {"switchcol", switchcol},
+#endif // SWITCHCOL_PATCH
+#if ROTATESTACK_PATCH
+ {"rotatestack", rotatestack},
+#endif // ROTATESTACK_PATCH
+#if INPLACEROTATE_PATCH
+ {"inplacerotate", inplacerotate},
+#endif // INPLACEROTATE_PATCH
+#if PUSH_PATCH || PUSH_NO_MASTER_PATCH
+ {"pushdown", pushdown},
+ {"pushup", pushup},
+#endif // PUSH_PATCH / PUSH_NO_MASTER_PATCH
+#if FLEXTILE_DELUXE_LAYOUT
+ {"incnstack", incnstack},
+ {"rotatelayoutaxis", rotatelayoutaxis},
+ {"setlayoutaxisex", setlayoutaxisex},
+ {"mirrorlayout", mirrorlayout},
+#endif // FLEXTILE_DELUXE_LAYOUT
+#if CFACTS_PATCH
+ {"setcfact", setcfact},
+#endif // CFACTS_PATCH
+#if MOVECENTER_PATCH
+ {"movecenter", movecenter},
+#endif // MOVECENTER_PATCH
+#if MOVEPLACE_PATCH
+ {"moveplace", moveplace},
+#endif // MOVEPLACE_PATCH
+#if NAMETAG_PATCH
+ {"nametag", nametag},
+#endif // NAMETAG_PATCH
+#if EXRESIZE_PATCH
+ {"explace", explace},
+ {"togglehorizontalexpand", togglehorizontalexpand},
+ {"toggleverticalexpand", toggleverticalexpand},
+ {"togglemaximize", togglemaximize},
+#endif // EXRESIZE_PATCH
+#if KEYMODES_PATCH
+ {"setkeymode", setkeymode},
+#endif // KEYMODES_PATCH
+#if TRANSFER_PATCH
+ {"transfer", transfer},
+#endif // TRANSFER_PATCH
+#if TRANSFER_ALL_PATCH
+ {"transferall", transferall},
+#endif // TRANSFER_ALL_PATCH
+ {"tagmon", tagmon},
+ {"zoom", zoom},
+#if VANITYGAPS_PATCH
+ {"incrgaps", incrgaps},
+ {"incrigaps", incrigaps},
+ {"incrogaps", incrogaps},
+ {"incrihgaps", incrihgaps},
+ {"incrivgaps", incrivgaps},
+ {"incrohgaps", incrohgaps},
+ {"incrovgaps", incrovgaps},
+ {"togglegaps", togglegaps},
+ {"defaultgaps", defaultgaps},
+ {"setgaps", setgapsex},
+#endif // VANITYGAPS_PATCH
+ {"view", view},
+ {"viewall", viewallex},
+ {"viewex", viewex},
+ {"toggleview", toggleview},
+#if BAR_WINTITLEACTIONS_PATCH
+ {"showhideclient", showhideclient},
+#endif // BAR_WINTITLEACTIONS_PATCH
+#if SHIFTBOTH_PATCH
+ {"shiftboth", shiftboth},
+#endif // SHIFTBOTH_PATCH
+#if SHIFTTAG_PATCH
+ {"shifttag", shifttag},
+#endif // SHIFTTAG_PATCH
+#if SHIFTTAGCLIENTS_PATCH
+ {"shifttagclients", shifttagclients},
+#endif // SHIFTTAGCLIENTS_PATCH
+#if SHIFTVIEW_PATCH
+ {"shiftview", shiftview},
+#endif // SHIFTVIEW_PATCH
+#if SHIFTVIEW_CLIENTS_PATCH
+ {"shiftviewclients", shiftviewclients},
+#endif // SHIFTVIEW_CLIENTS_PATCH
+#if SHIFTSWAPTAGS_PATCH && SWAPTAGS_PATCH
+ {"shiftswaptags", shiftswaptags},
+#endif // SHIFTSWAPTAGS_PATCH
+#if SELFRESTART_PATCH
+ {"self_restart", self_restart},
+#endif // SELFRESTART_PATCH
+#if BAR_TAGGRID_PATCH
+ {"switchtag", switchtag},
+#endif // BAR_TAGGRID_PATCH
+#if STICKY_PATCH
+ {"togglesticky", togglesticky},
+#endif // STICKY_PATCH
+#if SETBORDERPX_PATCH
+ {"setborderpx", setborderpx},
+#endif // SETBORDERPX_PATCH
+#if CYCLELAYOUTS_PATCH
+ {"cyclelayout", cyclelayout},
+#endif // CYCLELAYOUTS_PATCH
+#if MPDCONTROL_PATCH
+ {"mpdchange", mpdchange},
+ {"mpdcontrol", mpdcontrol},
+#endif // MPDCONTROL_PATCH
+ {"toggleviewex", toggleviewex},
+ {"tag", tag},
+ {"tagall", tagallex},
+ {"tagex", tagex},
+ {"toggletag", toggletag},
+ {"toggletagex", toggletagex},
+#if TAGALLMON_PATCH
+ {"tagallmon", tagallmon},
+#endif // TAGALLMON_PATCH
+#if TAGSWAPMON_PATCH
+ {"tagswapmon", tagswapmon},
+#endif // TAGSWAPMON_PATCH
+#if BAR_ALTERNATIVE_TAGS_PATCH
+ {"togglealttag", togglealttag},
+#endif // BAR_ALTERNATIVE_TAGS_PATCH
+#if TOGGLEFULLSCREEN_PATCH
+ {"togglefullscreen", togglefullscreen},
+#endif // TOGGLEFULLSCREEN_PATCH
+#if !FAKEFULLSCREEN_PATCH && FAKEFULLSCREEN_CLIENT_PATCH
+ {"togglefakefullscreen", togglefakefullscreen},
+#endif // FAKEFULLSCREEN_CLIENT_PATCH
+#if FULLSCREEN_PATCH
+ {"fullscreen", fullscreen},
+#endif // FULLSCREEN_PATCH
+#if MAXIMIZE_PATCH
+ {"togglehorizontalmax", togglehorizontalmax},
+ {"toggleverticalmax", toggleverticalmax},
+ {"togglemax", togglemax},
+#endif // MAXIMIZE_PATCH
+#if SCRATCHPADS_PATCH && !RENAMED_SCRATCHPADS_PATCH
+ {"togglescratch", togglescratch},
+#endif // SCRATCHPADS_PATCH
+#if UNFLOATVISIBLE_PATCH
+ {"unfloatvisible", unfloatvisible},
+#endif // UNFLOATVISIBLE_PATCH
+ {"killclient", killclient},
+#if WINVIEW_PATCH
+ {"winview", winview},
+#endif // WINVIEW_PATCH
+#if XRDB_PATCH || XRESOURCES_PATCH
+ {"xrdb", xrdb},
+#endif // XRDB_PATCH | XRESOURCES_PATCH
+#if TAGOTHERMONITOR_PATCH
+ {"tagnextmonex", tagnextmonex},
+ {"tagprevmonex", tagprevmonex},
+#endif // TAGOTHERMONITOR_PATCH
+ {"quit", quit},
+ {"setlayout", setlayout},
+ {"setlayoutex", setlayoutex},
+};
+#elif FSIGNAL_PATCH
+/* signal definitions */
+/* signum must be greater than 0 */
+/* trigger signals using `xsetroot -name "fsignal:<signum>"` */
+static Signal signals[] = {
+ /* signum function argument */
+ {1, setlayout, {.v = 0}},
+};
+#endif // DWMC_PATCH
+
+#if IPC_PATCH
+static const char *ipcsockpath = "/tmp/dwm.sock";
+static IPCCommand ipccommands[] = {
+ IPCCOMMAND(focusmon, 1, {ARG_TYPE_SINT}),
+ IPCCOMMAND(focusstack, 1, {ARG_TYPE_SINT}),
+ IPCCOMMAND(incnmaster, 1, {ARG_TYPE_SINT}),
+ IPCCOMMAND(killclient, 1, {ARG_TYPE_SINT}),
+ IPCCOMMAND(quit, 1, {ARG_TYPE_NONE}),
+ IPCCOMMAND(setlayoutsafe, 1, {ARG_TYPE_PTR}),
+ IPCCOMMAND(setmfact, 1, {ARG_TYPE_FLOAT}),
+ IPCCOMMAND(setstatus, 1, {ARG_TYPE_STR}),
+ IPCCOMMAND(tag, 1, {ARG_TYPE_UINT}),
+ IPCCOMMAND(tagmon, 1, {ARG_TYPE_UINT}),
+ IPCCOMMAND(togglebar, 1, {ARG_TYPE_NONE}),
+#if TOGGLETOPBAR_PATCH
+ IPCCOMMAND(toggletopbar, 1, {ARG_TYPE_NONE}),
+#endif // TOGGLETOPBAR_PATCH
+ IPCCOMMAND(togglefloating, 1, {ARG_TYPE_NONE}),
+ IPCCOMMAND(toggletag, 1, {ARG_TYPE_UINT}),
+ IPCCOMMAND(toggleview, 1, {ARG_TYPE_UINT}),
+ IPCCOMMAND(view, 1, {ARG_TYPE_UINT}),
+ IPCCOMMAND(zoom, 1, {ARG_TYPE_NONE}),
+#if BAR_ALTERNATIVE_TAGS_PATCH
+ IPCCOMMAND(togglealttag, 1, {ARG_TYPE_NONE}),
+#endif // BAR_ALTERNATIVE_TAGS_PATCH
+#if BAR_TAGGRID_PATCH
+ IPCCOMMAND(switchtag, 1, {ARG_TYPE_UINT}),
+#endif // BAR_TAGGRID_PATCH
+#if CFACTS_PATCH
+ IPCCOMMAND(setcfact, 1, {ARG_TYPE_FLOAT}),
+#endif // CFACTS_PATCH
+#if CYCLELAYOUTS_PATCH
+ IPCCOMMAND(cyclelayout, 1, {ARG_TYPE_SINT}),
+#endif // CYCLELAYOUTS_PATCH
+#if EXRESIZE_PATCH
+ IPCCOMMAND(explace, 1, {ARG_TYPE_UINT}),
+ IPCCOMMAND(togglehorizontalexpand, 1, {ARG_TYPE_SINT}),
+ IPCCOMMAND(toggleverticalexpand, 1, {ARG_TYPE_SINT}),
+ IPCCOMMAND(togglemaximize, 1, {ARG_TYPE_SINT}),
+#endif // EXRESIZE_PATCH
+#if !FAKEFULLSCREEN_PATCH && FAKEFULLSCREEN_CLIENT_PATCH
+ IPCCOMMAND(togglefakefullscreen, 1, {ARG_TYPE_NONE}),
+#endif // FAKEFULLSCREEN_CLIENT_PATCH
+#if FLOATPOS_PATCH
+ IPCCOMMAND(floatpos, 1, {ARG_TYPE_STR}),
+#endif // FLOATPOS_PATCH
+#if FULLSCREEN_PATCH
+ IPCCOMMAND(fullscreen, 1, {ARG_TYPE_NONE}),
+#endif // FULLSCREEN_PATCH
+#if FLEXTILE_DELUXE_LAYOUT
+ IPCCOMMAND(incnstack, 1, {ARG_TYPE_SINT}),
+ IPCCOMMAND(rotatelayoutaxis, 1, {ARG_TYPE_SINT}),
+ IPCCOMMAND(setlayoutaxisex, 1, {ARG_TYPE_SINT}),
+ IPCCOMMAND(mirrorlayout, 1, {ARG_TYPE_NONE}),
+#endif // FLEXTILE_DELUXE_LAYOUT
+#if FOCUSURGENT_PATCH
+ IPCCOMMAND(focusurgent, 1, {ARG_TYPE_NONE}),
+#endif // FOCUSURGENT_PATCH
+#if FOCUSADJACENTTAG_PATCH
+ IPCCOMMAND(viewtoleft, 1, {ARG_TYPE_NONE}),
+ IPCCOMMAND(viewtoright, 1, {ARG_TYPE_NONE}),
+ IPCCOMMAND(tagtoleft, 1, {ARG_TYPE_NONE}),
+ IPCCOMMAND(tagtoright, 1, {ARG_TYPE_NONE}),
+ IPCCOMMAND(tagandviewtoleft, 1, {ARG_TYPE_NONE}),
+ IPCCOMMAND(tagandviewtoright, 1, {ARG_TYPE_NONE}),
+#endif // FOCUSADJACENTTAG_PATCH
+#if INPLACEROTATE_PATCH
+ IPCCOMMAND(inplacerotate, 1, {ARG_TYPE_SINT}),
+#endif // INPLACEROTATE_PATCH
+#if KEYMODES_PATCH
+ IPCCOMMAND(setkeymode, 1, {ARG_TYPE_UINT}),
+#endif // KEYMODES_PATCH
+#if MAXIMIZE_PATCH
+ IPCCOMMAND(togglehorizontalmax, 1, {ARG_TYPE_NONE}),
+ IPCCOMMAND(toggleverticalmax, 1, {ARG_TYPE_NONE}),
+ IPCCOMMAND(togglemax, 1, {ARG_TYPE_NONE}),
+#endif // MAXIMIZE_PATCH
+#if MPDCONTROL_PATCH
+ IPCCOMMAND(mpdchange, 1, {ARG_TYPE_SINT}),
+ IPCCOMMAND(mpdcontrol, 1, {ARG_TYPE_NONE}),
+#endif // MPDCONTROL_PATCH
+#if MOVECENTER_PATCH
+ IPCCOMMAND(movecenter, 1, {ARG_TYPE_NONE}),
+#endif // MOVECENTER_PATCH
+#if MOVEPLACE_PATCH
+ IPCCOMMAND(moveplace, 1, {ARG_TYPE_UINT}),
+#endif // MOVEPLACE_PATCH
+#if MOVERESIZE_PATCH
+ IPCCOMMAND(moveresize, 1, {ARG_TYPE_STR}),
+#endif // MOVERESIZE_PATCH
+#if NAMETAG_PATCH
+ IPCCOMMAND(nametag, 1, {ARG_TYPE_NONE}),
+#endif // NAMETAG_PATCH
+#if RIODRAW_PATCH
+ IPCCOMMAND(rioresize, 1, {ARG_TYPE_NONE}),
+#endif // RIODRAW_PATCH
+#if PUSH_PATCH || PUSH_NO_MASTER_PATCH
+ IPCCOMMAND(pushdown, 1, {ARG_TYPE_NONE}),
+ IPCCOMMAND(pushup, 1, {ARG_TYPE_NONE}),
+#endif // PUSH_PATCH / PUSH_NO_MASTER_PATCH
+#if ROTATESTACK_PATCH
+ IPCCOMMAND(rotatestack, 1, {ARG_TYPE_SINT}),
+#endif // ROTATESTACK_PATCH
+#if SCRATCHPADS_PATCH && !RENAMED_SCRATCHPADS_PATCH
+ IPCCOMMAND(togglescratch, 1, {ARG_TYPE_UINT}),
+#endif // SCRATCHPADS_PATCH
+#if SELFRESTART_PATCH
+ IPCCOMMAND(self_restart, 1, {ARG_TYPE_NONE}),
+#endif // SELFRESTART_PATCH
+#if SETBORDERPX_PATCH
+ IPCCOMMAND(setborderpx, 1, {ARG_TYPE_SINT}),
+#endif // SETBORDERPX_PATCH
+#if BAR_WINTITLEACTIONS_PATCH
+ IPCCOMMAND(showhideclient, 1, {ARG_TYPE_NONE}),
+#endif // BAR_WINTITLEACTIONS_PATCH
+#if SHIFTBOTH_PATCH
+ IPCCOMMAND(shiftboth, 1, {ARG_TYPE_SINT}),
+#endif // SHIFTBOTH_PATCH
+#if SHIFTTAG_PATCH
+ IPCCOMMAND(shifttag, 1, {ARG_TYPE_SINT}),
+#endif // SHIFTTAG_PATCH
+#if SHIFTTAGCLIENTS_PATCH
+ IPCCOMMAND(shifttagclients, 1, {ARG_TYPE_SINT}),
+#endif // SHIFTVIEWCLIENTS_PATCH
+#if SHIFTVIEW_PATCH
+ IPCCOMMAND(shiftview, 1, {ARG_TYPE_SINT}),
+#endif // SHIFTVIEW_PATCH
+#if SHIFTVIEW_CLIENTS_PATCH
+ IPCCOMMAND(shiftviewclients, 1, {ARG_TYPE_SINT}),
+#endif // SHIFTVIEW_CLIENTS_PATCH
+#if SHIFTSWAPTAGS_PATCH && SWAPTAGS_PATCH
+ IPCCOMMAND(shiftswaptags, 1, {ARG_TYPE_SINT}),
+#endif // SHIFTSWAPTAGS_PATCH
+#if STACKER_PATCH
+ IPCCOMMAND(pushstack, 1, {ARG_TYPE_SINT}),
+#endif // STACKER_PATCH
+#if STICKY_PATCH
+ IPCCOMMAND(togglesticky, 1, {ARG_TYPE_NONE}),
+#endif // STICKY_PATCH
+#if SWAPFOCUS_PATCH && PERTAG_PATCH
+ IPCCOMMAND(swapfocus, 1, {ARG_TYPE_SINT}),
+#endif // SWAPFOCUS_PATCH
+#if SWITCHCOL_PATCH
+ IPCCOMMAND(switchcol, 1, {ARG_TYPE_NONE}),
+#endif // SWITCHCOL_PATCH
+#if TAGALLMON_PATCH
+ IPCCOMMAND(tagallmon, 1, {ARG_TYPE_SINT}),
+#endif // TAGALLMON_PATCH
+#if TAGOTHERMONITOR_PATCH
+ IPCCOMMAND(tagnextmonex, 1, {ARG_TYPE_UINT}),
+ IPCCOMMAND(tagprevmonex, 1, {ARG_TYPE_UINT}),
+#endif // TAGOTHERMONITOR_PATCH
+#if TAGSWAPMON_PATCH
+ IPCCOMMAND(tagswapmon, 1, {ARG_TYPE_SINT}),
+#endif // TAGSWAPMON_PATCH
+#if TOGGLEFULLSCREEN_PATCH
+ IPCCOMMAND(togglefullscreen, 1, {ARG_TYPE_NONE}),
+#endif // TOGGLEFULLSCREEN_PATCH
+#if TRANSFER_PATCH
+ IPCCOMMAND(transfer, 1, {ARG_TYPE_NONE}),
+#endif // TRANSFER_PATCH
+#if TRANSFER_ALL_PATCH
+ IPCCOMMAND(transferall, 1, {ARG_TYPE_NONE}),
+#endif // TRANSFER_ALL_PATCH
+#if UNFLOATVISIBLE_PATCH
+ IPCCOMMAND(unfloatvisible, 1, {ARG_TYPE_NONE}),
+#endif // UNFLOATVISIBLE_PATCH
+#if VANITYGAPS_PATCH
+ IPCCOMMAND(incrgaps, 1, {ARG_TYPE_SINT}),
+ IPCCOMMAND(incrigaps, 1, {ARG_TYPE_SINT}),
+ IPCCOMMAND(incrogaps, 1, {ARG_TYPE_SINT}),
+ IPCCOMMAND(incrihgaps, 1, {ARG_TYPE_SINT}),
+ IPCCOMMAND(incrivgaps, 1, {ARG_TYPE_SINT}),
+ IPCCOMMAND(incrohgaps, 1, {ARG_TYPE_SINT}),
+ IPCCOMMAND(incrovgaps, 1, {ARG_TYPE_SINT}),
+ IPCCOMMAND(togglegaps, 1, {ARG_TYPE_NONE}),
+ IPCCOMMAND(defaultgaps, 1, {ARG_TYPE_NONE}),
+ IPCCOMMAND(setgapsex, 1, {ARG_TYPE_SINT}),
+#endif // VANITYGAPS_PATCH
+#if WINVIEW_PATCH
+ IPCCOMMAND(winview, 1, {ARG_TYPE_NONE}),
+#endif // WINVIEW_PATCH
+#if XRDB_PATCH || XRESOURCES_PATCH
+ IPCCOMMAND(xrdb, 1, {ARG_TYPE_NONE}),
+#endif // XRDB_PATCH | XRESOURCES_PATCH
+};
+#endif // IPC_PATCH