diff --git a/config.h b/config.h index dfcc9f3..943ddf3 100644 --- a/config.h +++ b/config.h @@ -1,139 +1,115 @@ /* See LICENSE file for copyright and license details. */ + #define TERM "st" #define TERM_FLAG_NAME "-n" #define TERM_FLAG_EXEC "-e" +#define TERM_FLAG_CLASS "-c" #define TERM_START "tmux" -#define STATUSBAR "dwmblocks" - #define BROWSER "brave-browser" #define BROWSER_FLAG_INCOG "--incognito" #define BROWSER_FLAG_1 "--enable-blink-features=MiddleClickAutoscroll" /* appearance */ -static const unsigned int borderpx = 2; -static const unsigned int snap = 33; -static const int showbar = 1; -static const int topbar = 1; -static const int focusonwheel = 1; -static int floatposgrid_x = 5; -static int floatposgrid_y = 3; -static const unsigned int systrayspacing = 3; -static const int showsystray = 1; +static const unsigned int borderpx = 2; /* border pixel of windows */ +static const unsigned int snap = 32; /* snap pixel */ +static const int showbar = 1; /* 0 means no bar */ +static const int topbar = 1; /* 0 means bottom bar */ +static const int focusonwheel = 0; +static int floatposgrid_x = 5; /* float grid columns */ +static int floatposgrid_y = 5; /* float grid rows */ +/* Status is to be shown on: -1 (all monitors), 0 (a specific monitor by index), 'A' (active monitor) */ /* Indicators: see patch/bar_indicators.h for options */ static int tagindicatortype = INDICATOR_NONE; static int tiledindicatortype = INDICATOR_NONE; static int floatindicatortype = INDICATOR_NONE; +static const int quit_empty_window_count = 0; /* only allow dwm to quit if no (<= count) windows are open */ +static const char font[] = "FiraCode Nerd Font 12"; -static const char font[] = "FiraCode Nerd Font 12"; +#define BLACK "#15161E" +#define RED "#f7768e" +#define GREEN "#9ece6a" +#define ORANGE "#e0af68" +#define BLUE "#7aa2f7" +#define MAGENTA "#bb9af7" +#define CYAN "#7dcfff" +#define LIGHT_GRAY "#a9b1d6" +#define GRAY "#414868" +#define WHITE "#c0caf5" +#define UNDEFINED "#ff0000" -#define NOCOLOR "#FF0000" -#define COLOR0 "#15161E" -#define COLOR1 "#f7768e" -#define COLOR2 "#9ece6a" -#define COLOR3 "#e0af68" -#define COLOR4 "#7aa2f7" -#define COLOR5 "#bb9af7" -#define COLOR6 "#7dcfff" -#define COLOR7 "#a9b1d6" -#define COLOR8 "#414868" -#define COLOR9 "#f7768e" -#define COLOR10 "#9ece6a" -#define COLOR11 "#e0af68" -#define COLOR12 "#7aa2f7" -#define COLOR13 "#bb9af7" -#define COLOR14 "#7dcfff" -#define COLOR15 "#c0caf5" +static char undefined[] = UNDEFINED; // placeholder value -#define BORDERNORM "#383c4a" -#define BORDERSEL COLOR4 +static char normfgcolor[] = WHITE; +static char normbgcolor[] = BLACK; +static char normbordercolor[] = GRAY; +static char normfloatcolor[] = GRAY; -static char normfgcolor[] = COLOR15; -static char normbgcolor[] = COLOR0; -static char normbordercolor[] = BORDERNORM; -static char normfloatcolor[] = BORDERNORM; +static char selfgcolor[] = UNDEFINED; +static char selbgcolor[] = UNDEFINED; +static char selbordercolor[] = BLUE; +static char selfloatcolor[] = BLUE; -static char selfgcolor[] = COLOR15; -static char selbgcolor[] = COLOR4; -static char selbordercolor[] = BORDERSEL; -static char selfloatcolor[] = BORDERSEL; +static char titlenormfgcolor[] = WHITE; +static char titlenormbgcolor[] = BLACK; +static char titlenormbordercolor[] = UNDEFINED; +static char titlenormfloatcolor[] = UNDEFINED; -static char titlenormfgcolor[] = COLOR7; -static char titlenormbgcolor[] = COLOR0; -static char titlenormbordercolor[] = NOCOLOR; -static char titlenormfloatcolor[] = NOCOLOR; +static char titleselfgcolor[] = LIGHT_GRAY; +static char titleselbgcolor[] = BLACK; +static char titleselbordercolor[] = UNDEFINED; +static char titleselfloatcolor[] = UNDEFINED; -static char titleselfgcolor[] = COLOR7; -static char titleselbgcolor[] = COLOR0; -static char titleselbordercolor[] = NOCOLOR; -static char titleselfloatcolor[] = NOCOLOR; +static char tagsnormfgcolor[] = LIGHT_GRAY; +static char tagsnormbgcolor[] = BLACK; +static char tagsnormbordercolor[] = UNDEFINED; +static char tagsnormfloatcolor[] = UNDEFINED; -static char tagsnormfgcolor[] = COLOR7; -static char tagsnormbgcolor[] = COLOR0; -static char tagsnormbordercolor[] = NOCOLOR; -static char tagsnormfloatcolor[] = NOCOLOR; +static char tagsselfgcolor[] = BLACK; +static char tagsselbgcolor[] = BLUE; +static char tagsselbordercolor[] = UNDEFINED; +static char tagsselfloatcolor[] = UNDEFINED; -static char tagsselfgcolor[] = COLOR0; -static char tagsselbgcolor[] = COLOR4; -static char tagsselbordercolor[] = NOCOLOR; -static char tagsselfloatcolor[] = NOCOLOR; +static char hidnormfgcolor[] = UNDEFINED; +static char hidselfgcolor[] = UNDEFINED; +static char hidnormbgcolor[] = UNDEFINED; +static char hidselbgcolor[] = UNDEFINED; -static char hidnormfgcolor[] = NOCOLOR; -static char hidselfgcolor[] = NOCOLOR; -static char hidnormbgcolor[] = NOCOLOR; -static char hidselbgcolor[] = NOCOLOR; +static char urgfgcolor[] = BLACK; +static char urgbgcolor[] = RED; +static char urgbordercolor[] = RED; +static char urgfloatcolor[] = RED; -static char urgfgcolor[] = COLOR0; -static char urgbgcolor[] = COLOR1; -static char urgbordercolor[] = COLOR1; -static char urgfloatcolor[] = COLOR1; +static char scratchselfgcolor[] = UNDEFINED; +static char scratchselbgcolor[] = UNDEFINED; +static char scratchselbordercolor[] = BLUE; +static char scratchselfloatcolor[] = BLUE; -static char scratchselfgcolor[] = COLOR15; -static char scratchselbgcolor[] = COLOR4; -static char scratchselbordercolor[] = BORDERSEL; -static char scratchselfloatcolor[] = BORDERSEL; - -static char scratchnormfgcolor[] = COLOR15; -static char scratchnormbgcolor[] = COLOR0; -static char scratchnormbordercolor[] = BORDERNORM; -static char scratchnormfloatcolor[] = BORDERNORM; - -static const unsigned int baralpha = 0xcc; -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, OPAQUE, borderalpha }, - [SchemeHidNorm] = { OPAQUE, baralpha, borderalpha }, - [SchemeHidSel] = { OPAQUE, baralpha, borderalpha }, - [SchemeUrg] = { OPAQUE, OPAQUE, borderalpha }, - [SchemeScratchSel] = { OPAQUE, baralpha, borderalpha }, - [SchemeScratchNorm] = { OPAQUE, baralpha, borderalpha }, -}; +static char scratchnormfgcolor[] = UNDEFINED; +static char scratchnormbgcolor[] = UNDEFINED; +static char scratchnormbordercolor[] = GRAY; +static char scratchnormfloatcolor[] = GRAY; 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, NOCOLOR, NOCOLOR }, - [SchemeHidSel] = { hidselfgcolor, hidselbgcolor, NOCOLOR, NOCOLOR }, - [SchemeUrg] = { urgfgcolor, urgbgcolor, urgbordercolor, urgfloatcolor }, - [SchemeScratchSel] = { scratchselfgcolor, scratchselbgcolor, scratchselbordercolor, scratchselfloatcolor }, - [SchemeScratchNorm] = { scratchnormfgcolor, scratchnormbgcolor, scratchnormbordercolor, scratchnormfloatcolor }, + /* 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, undefined, undefined }, + [SchemeHidSel] = { hidselfgcolor, hidselbgcolor, undefined, undefined }, + [SchemeUrg] = { urgfgcolor, urgbgcolor, urgbordercolor, urgfloatcolor }, + [SchemeScratchSel] = { scratchselfgcolor, scratchselbgcolor, scratchselbordercolor, scratchselfloatcolor }, + [SchemeScratchNorm] = { scratchnormfgcolor, scratchnormbgcolor, scratchnormbordercolor, scratchnormfloatcolor }, }; -static const char *layoutmenu_cmd = "xmenulayout"; -// static const char *layoutxmenu = "$HOME/.local/libexec/dwm/xmenulayout"; // TODO: Patch layoutmenu to accept arguments -// static const char *layoutdmenu = "$HOME/.local/libexec/dwm/dmenulayout"; // TODO: Patch layoutmenu to accept shell commands +static char *tagicons[][NUMTAGS] = +{ + [DEFAULT_TAGS] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" }, +}; static const int autostart_kill_signal = SIGHUP; static const char *const autostart[] = { @@ -142,20 +118,15 @@ static const char *const autostart[] = { NULL }; -static const char *spterm[] = { "t", TERM, "-c", "spterm", TERM_FLAG_EXEC, "tmux", NULL }; -static const char *spfile[] = { "f", TERM, "-c", "spfile", TERM_FLAG_EXEC, "lfX", NULL }; -static const char *spproc[] = { "p", TERM, "-c", "spproc", TERM_FLAG_EXEC, "btm", NULL }; -static const char *spdisk[] = { "d", TERM, "-c", "spdisk", TERM_FLAG_EXEC, "gdu", NULL }; -static const char *spvolm[] = { "v", TERM, "-c", "spvolm", TERM_FLAG_EXEC, "ncpamixer", NULL }; -static const char *sphelp[] = { "h", TERM, "-c", "sphelp", TERM_FLAG_EXEC, "/bin/sh", "-c", "glow -p -s $XDG_CONFIG_HOME/glow/style.json /usr/share/dwm/dwm.md", NULL }; -static const char *spinet[] = { "i", TERM, "-c", "spinet", TERM_FLAG_EXEC, "nmtui", NULL }; -static const char *spwiki[] = { "w", TERM, "-c", "spwiki", TERM_FLAG_EXEC, "zk", "edit", "-i", NULL }; -static const char *spcalc[] = { "c", TERM, "-c", "spcalc", TERM_FLAG_EXEC, "bc", "-li", NULL }; - -static char *tagicons[][NUMTAGS] = -{ - [DEFAULT_TAGS] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" }, -}; +static const char *spterm[] = { "t", TERM, TERM_FLAG_CLASS, "spterm", TERM_FLAG_EXEC, "tmux", NULL }; +static const char *spfile[] = { "f", TERM, TERM_FLAG_CLASS, "spfile", TERM_FLAG_EXEC, "lfX", NULL }; +static const char *spproc[] = { "p", TERM, TERM_FLAG_CLASS, "spproc", TERM_FLAG_EXEC, "btm", NULL }; +static const char *spdisk[] = { "d", TERM, TERM_FLAG_CLASS, "spdisk", TERM_FLAG_EXEC, "gdu", NULL }; +static const char *spvolm[] = { "v", TERM, TERM_FLAG_CLASS, "spvolm", TERM_FLAG_EXEC, "ncpamixer", NULL }; +static const char *sphelp[] = { "h", TERM, TERM_FLAG_CLASS, "sphelp", TERM_FLAG_EXEC, "/bin/sh", "-c", "glow -p -s $XDG_CONFIG_HOME/glow/style.json /usr/share/dwm/dwm.md", NULL }; +static const char *spinet[] = { "i", TERM, TERM_FLAG_CLASS, "spinet", TERM_FLAG_EXEC, "nmtui", NULL }; +static const char *spwiki[] = { "w", TERM, TERM_FLAG_CLASS, "spwiki", TERM_FLAG_EXEC, "zk", "edit", "-i", NULL }; +static const char *spcalc[] = { "c", TERM, TERM_FLAG_CLASS, "spcalc", TERM_FLAG_EXEC, "bc", "-li", NULL }; static const Rule rules[] = { /* xprop(1): @@ -184,64 +155,50 @@ static const Rule rules[] = { RULE(.class = "spinet", .scratchkey = 'i', .isfloating = 1, .floatpos = "100% 100% 800W 800H") }; -/* 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 */ - { -1, 0, BAR_ALIGN_LEFT, width_tags, draw_tags, click_tags, hover_tags, "tags" }, - { 'A', 0, BAR_ALIGN_RIGHT, width_systray, draw_systray, click_systray, NULL, "systray" }, - { -1, 0, BAR_ALIGN_LEFT, width_ltsymbol, draw_ltsymbol, click_ltsymbol, NULL, "layout" }, - { 'A', 0, BAR_ALIGN_RIGHT, width_status, draw_status, click_status, NULL, "status" }, - { -1, 0, BAR_ALIGN_NONE, width_wintitle, draw_wintitle, click_wintitle, NULL, "wintitle" }, + /* monitor bar alignment widthfunc drawfunc clickfunc hoverfunc name */ + { -1, 0, BAR_ALIGN_LEFT, width_tags, draw_tags, click_tags, hover_tags, "tags" }, + { 'A', 0, BAR_ALIGN_RIGHT, width_status, draw_status, click_status, NULL, "status" }, + { -1, 0, BAR_ALIGN_NONE, width_wintitle, draw_wintitle, click_wintitle, NULL, "wintitle" }, }; /* layout(s) */ -static const float mfact = 0.50; /* factor of master area size [0.05..0.95] */ -static const int nmaster = 1; /* number of clients in master area */ -static const int nstack = 0; /* number of clients in primary stack area */ -static const int resizehints = 0; /* 1 means respect size hints in tiled resizals */ +static const float mfact = 0.50; /* factor of master area size [0.05..0.95] */ +static const int nmaster = 1; /* number of clients in master area */ +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 decorhints = 1; /* 1 means respect decoration hints */ - - 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 + /* symbol arrange function */ + { "[]=", tile }, /* first entry is default */ + { "[M]", monocle }, + { "TTT", bstack }, + { "|M|", centeredmaster }, + { "[D]", deck }, + { ":::", gaplessgrid }, + { "><>", NULL }, /* no layout function means floating behavior */ }; /* key definitions */ #define MODKEY Mod4Mask #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, 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} } +#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 } }, + + +/* helper for spawning shell commands in the pre dwm-5.0 fashion */ #define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } } /* commands */ @@ -258,7 +215,8 @@ static const Key keys[] = { // { MODKEY | ShiftMask, XK_F3, spawn, {.v = (const char *[]){NULL}} }, { MODKEY, XK_F4, spawn, SHCMD("$HOME/.local/libexec/dwm/togcompositor") }, // { MODKEY | ShiftMask, XK_F4, spawn, {.v = (const char *[]){NULL}} }, - { MODKEY, XK_F5, xrdb, {.v = NULL } }, + // { MODKEY, XK_F5, spawn, {.v = (const char *[]){NULL}} }, + // { MODKEY | ShiftMask, XK_F5, spawn, {.v = (const char *[]){NULL}} }, // { MODKEY, XK_F6, spawn, {.v = (const char *[]){NULL}} }, // { MODKEY | ShiftMask, XK_F6, spawn, {.v = (const char *[]){NULL}} }, // { MODKEY, XK_F7, spawn, {.v = (const char *[]){NULL}} }, @@ -286,15 +244,15 @@ static const Key keys[] = { TAGKEYS( XK_9, 8), { MODKEY, XK_0, view, {.ui = ~0} }, { MODKEY | ShiftMask, XK_0, tag, {.ui = ~0} }, - { MODKEY | Mod1Mask, XK_0, winview, {0} }, + // { MODKEY | ShiftMask, XK_0, spawn, {.v = (const char *[]){NULL}} }, // { MODKEY, XK_bracketleft, spawn, {.v = (const char *[]){NULL}} }, // { MODKEY | ShiftMask, XK_bracketleft, spawn, {.v = (const char *[]){NULL}} }, // { MODKEY, XK_bracketright, spawn, {.v = (const char *[]){NULL}} }, // { MODKEY | ShiftMask, XK_bracketright, spawn, {.v = (const char *[]){NULL}} }, { MODKEY, XK_BackSpace, spawn, SHCMD("$HOME/.local/libexec/dwm/dmenusys") }, // { MODKEY | ShiftMask, XK_BackSpace, spawn, {.v = (const char *[]){NULL}} }, - // { MODKEY, XK_Tab, spawn, {.v = (const char *[]){NULL}} }, - // { MODKEY | ShiftMask, XK_Tab, spawn, {.v = (const char *[]){NULL}} }, + { MODKEY, XK_Tab, pushstack, {.i = INC(+1)} }, + { MODKEY | ShiftMask, XK_Tab, pushstack, {.i = INC(-1)} }, // { MODKEY, XK_apostrophe, spawn, {.v = (const char *[]){NULL}} }, // { MODKEY | ShiftMask, XK_apostrophe, spawn, {.v = (const char *[]){NULL}} }, { MODKEY, XK_comma, focusmon, {.i = +1} }, @@ -306,55 +264,55 @@ static const Key keys[] = { { MODKEY, XK_y, focusstack, {.i = 0} }, { MODKEY | ShiftMask, XK_y, pushstack, {.i = 0} }, { MODKEY, XK_f, togglefullscreen, {0} }, - // { MODKEY | ShiftMask, XK_f, spawn, {.v = (const char *[]){NULL}} }, - { MODKEY, XK_g, cyclelayout, {.i = -1} }, - { MODKEY | ShiftMask, XK_g, rotatelayoutaxis, {.i = -1} }, - { MODKEY, XK_c, setlayout, {.v = &layouts[0]} }, - // { MODKEY | ShiftMask, XK_c, spawn, {.v = (const char *[]){NULL}} }, /* TODO: reset axis */ - { MODKEY, XK_r, cyclelayout, {.i = +1} }, - { MODKEY | ShiftMask, XK_r, rotatelayoutaxis, {.i = +1} }, - { MODKEY, XK_l, setmfact, {.f = +0.05} }, - { MODKEY | ShiftMask, XK_l, setcfact, {.f = +0.1} }, + { MODKEY | ShiftMask, XK_f, spawn, {.v = &layouts[6]} }, + { MODKEY, XK_g, spawn, {.v = &layouts[0]} }, + { MODKEY | ShiftMask, XK_g, spawn, {.v = &layouts[1]} }, + { MODKEY, XK_c, setlayout, {.v = &layouts[2]} }, + { MODKEY | ShiftMask, XK_c, spawn, {.v = &layouts[3]} }, + { MODKEY, XK_r, spawn, {.v = &layouts[4]} }, + { MODKEY | ShiftMask, XK_r, spawn, {.v = &layouts[5]} }, + { MODKEY, XK_l, focusdir, {.i = 1 } }, + // { MODKEY | ShiftMask, XK_l, spawn, {.v = (const char *[]){NULL}} }, // { MODKEY, XK_slash, spawn, {.v = (const char *[]){NULL}} }, // { MODKEY | ShiftMask, XK_slash, spawn, {.v = (const char *[]){NULL}} }, // { MODKEY, XK_equal, spawn, {.v = (const char *[]){NULL}} }, // { MODKEY | ShiftMask, XK_equal, spawn, {.v = (const char *[]){NULL}} }, - // { MODKEY, XK_a, spawn, {.v = (const char *[]){NULL}} }, + { MODKEY, XK_a, setmfact, {.f = -0.05} }, // { MODKEY | ShiftMask, XK_a, spawn, {.v = (const char *[]){NULL}} }, { MODKEY, XK_o, togglescratch, {.v = spproc} }, // { MODKEY | ShiftMask, XK_o, spawn, {.v = (const char *[]){NULL}} }, { MODKEY, XK_e, togglescratch, {.v = spfile} }, - // { MODKEY | ShiftMask, XK_e, spawn, {.v = (const char *[]){NULL}} }, + // { MODKEY | ShiftMask, XK_e, spawn, {.v = (const char *[]){NULL}} }, { MODKEY, XK_u, spawn, {.v = (const char *[]){"dmenu_run", NULL}} }, // { MODKEY | ShiftMask, XK_u, spawn, {.v = (const char *[]){NULL}} }, { MODKEY, XK_i, spawn, {.v = (const char *[]){"dunstctl", "close", NULL}} }, { MODKEY | ShiftMask, XK_i, spawn, {.v = (const char *[]){"dunstctl", "history-pop", NULL}} }, { MODKEY, XK_d, spawn, {.v = (const char *[]){"dunstctl", "context", NULL}} }, { MODKEY | ShiftMask, XK_d, spawn, {.v = (const char *[]){"dunstctl", "action", "0", NULL}} }, - { MODKEY, XK_h, setmfact, {.f = -0.05} }, - { MODKEY | ShiftMask, XK_h, setcfact, {.f = -0.1} }, + { MODKEY, XK_h, focusdir, {.i = 0 } }, + // { MODKEY | ShiftMask, XK_h, spawn, {.v = (const char *[]){NULL}} }, { MODKEY, XK_t, spawn, {.v = (const char *[]){BROWSER, BROWSER_FLAG_1, NULL}} }, { MODKEY | ShiftMask, XK_t, spawn, {.v = (const char *[]){BROWSER, BROWSER_FLAG_1, BROWSER_FLAG_INCOG, NULL}} }, { MODKEY, XK_n, focusstack, {.i = PREVSEL} }, { MODKEY | ShiftMask, XK_n, focusstack, {.i = PREVSEL} }, - { MODKEY, XK_s, incnmaster, {.i = +1 } }, - { MODKEY | ShiftMask, XK_s, incnmaster, {.i = -1 } }, - // { MODKEY, XK_minus, spawn, {.v = (const char *[]){NULL}} }, /* TODO: reset nmaster */ + { MODKEY, XK_s, setmfact, {.f = +0.05} }, + // { MODKEY | ShiftMask, XK_s, spawn, {.v = (const char *[]){NULL}} }, + // { MODKEY, XK_minus, spawn, {.v = (const char *[]){NULL}} }, // { MODKEY | ShiftMask, XK_minus, spawn, {.v = (const char *[]){NULL}} }, // { MODKEY, XK_backslash, spawn, {.v = (const char *[]){NULL}} }, // { MODKEY | ShiftMask, XK_backslash, spawn, {.v = (const char *[]){NULL}} }, { MODKEY, XK_Return, zoom, {0} }, - { MODKEY | ShiftMask, XK_Return, mirrorlayout, {0} }, + // { MODKEY | ShiftMask, XK_Return, spawn, {.v = (const char *[]){NULL}} }, // { MODKEY, XK_semicolon, spawn, {.v = (const char *[]){NULL}} }, // { MODKEY | ShiftMask, XK_semicolon, spawn, {.v = (const char *[]){NULL}} }, { MODKEY, XK_q, killclient, {0} }, // { MODKEY | ShiftMask, XK_q, spawn, {.v = (const char *[]){NULL}} }, - { MODKEY, XK_j, focusstack, {.i = INC(+1)} }, - { MODKEY | ShiftMask, XK_j, pushstack, {.i = INC(+1)} }, - { MODKEY, XK_k, focusstack, {.i = INC(-1)} }, - { MODKEY | ShiftMask, XK_k, pushstack, {.i = INC(-1)} }, + { MODKEY, XK_j, focusdir, {.i = 3} }, + // { MODKEY | ShiftMask, XK_j, spawn, {.v = (const char *[]){NULL}} }, + { MODKEY, XK_k, focusstack, {.i = 2} }, + // { MODKEY | ShiftMask, XK_k, spawn, {.v = (const char *[]){NULL}} }, { MODKEY, XK_x, togglefloating, {0} }, - // { MODKEY | ShiftMask, XK_x, spawn, {.v = (const char *[]){NULL}} }, + { MODKEY | ShiftMask, XK_x, unfloatvisible, {0} }, { MODKEY, XK_b, togglescratch, {.v = spinet} }, // { MODKEY | ShiftMask, XK_b, spawn, {.v = (const char *[]){NULL}} }, { MODKEY, XK_m, togglescratch, {.v = spvolm} }, @@ -371,22 +329,22 @@ static const Key keys[] = { { MODKEY | ShiftMask, XK_Print, spawn, SHCMD("$HOME/.local/libexec/dwm/dmenurecord kill") }, { 0, XK_Print, spawn, SHCMD("$HOME/.local/libexec/dwm/dmenumaim full") }, { ShiftMask, XK_Print, spawn, SHCMD("$HOME/.local/libexec/dwm/dmenumaim") }, - // { MODKEY, XK_scroll_lock, spawn, {.v = (const char *[]){NULL}} }, - // { MODKEY | ShiftMask, XK_scroll_lock, spawn, {.v = (const char *[]){NULL}} }, - // { MODKEY, XK_pause, spawn, {.v = (const char *[]){NULL}} }, - // { MODKEY | ShiftMask, XK_pause, spawn, {.v = (const char *[]){NULL}} }, - // { MODKEY, XK_insert, spawn, {.v = (const char *[]){NULL}} }, - // { MODKEY | ShiftMask, XK_insert, spawn, {.v = (const char *[]){NULL}} }, - // { MODKEY, XK_home, spawn, {.v = (const char *[]){NULL}} }, - // { MODKEY | ShiftMask, XK_home, spawn, {.v = (const char *[]){NULL}} }, - // { MODKEY, XK_page_up, spawn, {.v = (const char *[]){NULL}} }, - // { MODKEY | ShiftMask, XK_page_up, spawn, {.v = (const char *[]){NULL}} }, - // { MODKEY, XK_delete, spawn, {.v = (const char *[]){NULL}} }, - // { MODKEY | ShiftMask, XK_delete, spawn, {.v = (const char *[]){NULL}} }, - { MODKEY, XK_End, self_restart, {0} }, - { MODKEY | ShiftMask, XK_End, quit, {0} }, - // { MODKEY, XK_page_down, spawn, {.v = (const char *[]){NULL}} }, - // { MODKEY | ShiftMask, XK_page_down, spawn, {.v = (const char *[]){NULL}} }, + // { MODKEY, XK_Scroll_Lock, spawn, {.v = (const char *[]){NULL}} }, + // { MODKEY | ShiftMask, XK_Scroll_Lock, spawn, {.v = (const char *[]){NULL}} }, + // { MODKEY, XK_Pause, spawn, {.v = (const char *[]){NULL}} }, + // { MODKEY | ShiftMask, XK_Pause, spawn, {.v = (const char *[]){NULL}} }, + // { MODKEY, XK_Insert, spawn, {.v = (const char *[]){NULL}} }, + // { MODKEY | ShiftMask, XK_Insert, spawn, {.v = (const char *[]){NULL}} }, + // { MODKEY, XK_Home, spawn, {.v = (const char *[]){NULL}} }, + // { MODKEY | ShiftMask, XK_Home, spawn, {.v = (const char *[]){NULL}} }, + // { MODKEY, XK_Page_Up, spawn, {.v = (const char *[]){NULL}} }, + // { MODKEY | ShiftMask, XK_Page_Up, spawn, {.v = (const char *[]){NULL}} }, + // { MODKEY, XK_Delete, spawn, {.v = (const char *[]){NULL}} }, + { MODKEY | ShiftMask, XK_Delete, quit, {0} }, + // { MODKEY, XK_End, spawn, {.v = (const char *[]){NULL}} }, + // { MODKEY | ShiftMask, XK_End, spawn, {.v = (const char *[]){NULL}} }, + // { MODKEY, XK_Page_Down, spawn, {.v = (const char *[]){NULL}} }, + // { MODKEY | ShiftMask, XK_Page_Down, spawn, {.v = (const char *[]){NULL}} }, { MODKEY, XK_Left, spawn, {.v = (const char *[]){"playerctl", "position", "5-", NULL}} }, { MODKEY | ShiftMask, XK_Left, spawn, {.v = (const char *[]){"playerctl", "previous", NULL}} }, { MODKEY, XK_Right, spawn, {.v = (const char *[]){"playerctl", "position", "5+", NULL}} }, @@ -428,21 +386,20 @@ static const Key keys[] = { /* WARN: If you have multiple backlight controllers this will fail */ }; + /* button definitions */ /* click can be ClkTagBar, ClkLtSymbol, ClkStatusText, ClkWinTitle, ClkClientWin, or ClkRootWin */ static const Button buttons[] = { - /* click event mask button function argument */ - { ClkLtSymbol, 0, Button3, layoutmenu, {0} }, - // { ClkLtSymbol, 0, Button3, setlayout, {.v = &layouts[2]} }, - // { ClkWinTitle, 0, Button2, zoom, {0} }, + /* click event mask button function argument */ + { ClkLtSymbol, 0, Button1, setlayout, {0} }, + { ClkLtSymbol, 0, Button3, setlayout, {.v = &layouts[2]} }, + { ClkWinTitle, 0, Button2, zoom, {0} }, { ClkStatusText, 0, Button2, spawn, {.v = termcmd } }, - { ClkClientWin, MODKEY, Button1, movemouse, {0} }, - { ClkClientWin, MODKEY, Button2, togglefloating, {0} }, - { ClkClientWin, MODKEY, Button3, resizemouse, {0} }, - { ClkTagBar, 0, Button1, view, {0} }, - { ClkTagBar, 0, Button3, toggleview, {0} }, - // { ClkTagBar, MODKEY, Button1, tag, {0} }, - // { ClkTagBar, MODKEY, Button3, toggletag, {0} }, + { ClkClientWin, MODKEY, Button1, movemouse, {0} }, + { ClkClientWin, MODKEY, Button2, togglefloating, {0} }, + { ClkClientWin, MODKEY, Button3, resizemouse, {0} }, + { ClkTagBar, 0, Button1, view, {0} }, + { ClkTagBar, 0, Button3, toggleview, {0} }, + { ClkTagBar, MODKEY, Button1, tag, {0} }, + { ClkTagBar, MODKEY, Button3, toggletag, {0} }, }; - - diff --git a/config.mk b/config.mk index dc99a37..c2ba037 100644 --- a/config.mk +++ b/config.mk @@ -29,7 +29,7 @@ FREETYPEINC = /usr/include/freetype2 #KVMLIB = -lkvm # Uncomment this for the alpha patch and the winicon patch (BAR_ALPHA_PATCH, BAR_WINICON_PATCH) -XRENDER = -lXrender +# XRENDER = -lXrender # Uncomment this for the mdpcontrol patch / MDPCONTROL_PATCH #MPDCLIENT = -lmpdclient diff --git a/patches.h b/patches.h index ecd3fe2..662f3f1 100644 --- a/patches.h +++ b/patches.h @@ -29,7 +29,7 @@ * dwmblocks: https://github.com/torrinfail/dwmblocks * https://dwm.suckless.org/patches/statuscmd/ */ -#define BAR_DWMBLOCKS_PATCH 1 +#define BAR_DWMBLOCKS_PATCH 0 /* Originally the dwmblocks + statuscmd patch used a user defined signal (SIGUSR1) * for communicating with dwmblocks to indicate update signal and what button was @@ -74,10 +74,10 @@ * - The text of the menu items is for display only. Name them however you want. * https://dwm.suckless.org/patches/layoutmenu/ */ -#define BAR_LAYOUTMENU_PATCH 1 +#define BAR_LAYOUTMENU_PATCH 0 /* Show layout symbol in bar */ -#define BAR_LTSYMBOL_PATCH 1 +#define BAR_LTSYMBOL_PATCH 0 /* Adds powerline arrows for the status. * This uses statuscolors logic for choosing colors for the powerline. As these markers @@ -144,7 +144,7 @@ * when clicking the status bar. Refer to the website for usage. * https://dwm.suckless.org/patches/statuscmd/ */ -#define BAR_STATUSCMD_PATCH 1 +#define BAR_STATUSCMD_PATCH 0 /* Status2d allows colors and rectangle drawing in your dwm status bar. * This patch is incompatible with the statuscolors patch which takes precedence. @@ -167,7 +167,7 @@ /* The systray patch adds systray for the status bar. * https://dwm.suckless.org/patches/systray/ */ -#define BAR_SYSTRAY_PATCH 1 +#define BAR_SYSTRAY_PATCH 0 /* Show tag symbols in the bar. */ #define BAR_TAGS_PATCH 1 @@ -249,7 +249,7 @@ * when including this patch. * https://dwm.suckless.org/patches/alpha/ */ -#define BAR_ALPHA_PATCH 1 +#define BAR_ALPHA_PATCH 0 /* This patch introduces alternative tags which can be switched on the fly for the * sole purpose of providing visual aid. @@ -349,7 +349,7 @@ * https://groups.google.com/forum/m/#!topic/wmii/7bncCahYIww * https://docs.google.com/viewer?a=v&pid=forums&srcid=MDAwODA2MTg0MDQyMjE0OTgzMzMBMDQ3ODQzODkyMTU3NTAyMTMxNTYBX2RUMVNtOUtDQUFKATAuMQEBdjI&authuser=0 */ -#define BAR_IGNORE_XFT_ERRORS_WHEN_DRAWING_TEXT_PATCH 1 +#define BAR_IGNORE_XFT_ERRORS_WHEN_DRAWING_TEXT_PATCH 0 /* This patch adds back in the workaround for a BadLength error in the Xft library when color * glyphs are used. This is for systems that do not have an updated version of the Xft library @@ -466,13 +466,13 @@ * This patch takes precedence over ATTACHBELOW_PATCH. * https://dwm.suckless.org/patches/attachaside/ */ -#define ATTACHASIDE_PATCH 0 +#define ATTACHASIDE_PATCH 1 /* This patch adds new clients below the selected client. * This patch takes precedence over ATTACHBOTTOM_PATCH. * https://dwm.suckless.org/patches/attachbelow/ */ -#define ATTACHBELOW_PATCH 1 +#define ATTACHBELOW_PATCH 0 /* This patch adds new clients at the bottom of the stack. * https://dwm.suckless.org/patches/attachbottom/ @@ -532,7 +532,7 @@ * respective stack in tiled layout. * https://dwm.suckless.org/patches/cfacts/ */ -#define CFACTS_PATCH 1 +#define CFACTS_PATCH 0 /* This patch allows color attributes to be set through the command line. * https://dwm.suckless.org/patches/cmdcustomize/ @@ -555,7 +555,7 @@ /* The cyclelayouts patch lets you cycle through all your layouts. * https://dwm.suckless.org/patches/cyclelayouts/ */ -#define CYCLELAYOUTS_PATCH 1 +#define CYCLELAYOUTS_PATCH 0 /* Make dwm respect _MOTIF_WM_HINTS property, and not draw borders around windows requesting * for it. Some applications use this property to notify window managers to not draw window @@ -564,7 +564,7 @@ * like chromium (with "Use system title bar and borders" turned off) or vlc in fullscreen mode. * https://dwm.suckless.org/patches/decoration_hints/ */ -#define DECORATION_HINTS_PATCH 1 +#define DECORATION_HINTS_PATCH 0 /* This feature distributes all clients on the current monitor evenly across all tags. * It is a variant of the reorganizetags patch. @@ -582,7 +582,7 @@ * This patch will ignore color allocation failures and continue on as normal. The effect of * this is that the existing color, that was supposed to be replaced, will remain as-is. */ -#define DO_NOT_DIE_ON_COLOR_ALLOCATION_FAILURE_PATCH 1 +#define DO_NOT_DIE_ON_COLOR_ALLOCATION_FAILURE_PATCH 0 /* Similarly to the dragmfact patch this allows you to click and drag clients to change the * cfact to adjust the client's size in the stack. This patch depends on the cfacts patch. @@ -656,7 +656,7 @@ /* Allows focusing on clients based on direction (up, down, left, right) instead of client order. * https://github.com/bakkeby/patches/wiki/focusdir/ */ -#define FOCUSDIR_PATCH 0 +#define FOCUSDIR_PATCH 1 /* When changing tags, closing windows or moving clients out of view then focus will revert to the * client window that remains under the mouse cursor rather than the most recently focused window. @@ -844,7 +844,7 @@ /* Removes the border when there is only one window visible. * https://dwm.suckless.org/patches/noborder/ */ -#define NOBORDER_PATCH 0 +#define NOBORDER_PATCH 1 /* Enable modifying or removing dmenu in config.def.h which resulted previously in a * compilation error because two lines of code hardcode dmenu into dwm. @@ -872,7 +872,7 @@ * https://github.com/szatanjl/dwm/commit/1529909466206016f2101457bbf37c67195714c8 * https://dwm.suckless.org/patches/alpha/dwm-fixborders-6.2.diff */ -#define NO_TRANSPARENT_BORDERS_PATCH 0 +#define NO_TRANSPARENT_BORDERS_PATCH 1 /* Port of InstantWM's on_empty_keys functionality allowing keybindings that apply only when * a tag is empty. An example use case is being able to launch applications with first hand @@ -890,7 +890,7 @@ * This is to prevent you accidentally losing all your work. * https://dwm.suckless.org/patches/onlyquitonempty/ */ -#define ONLYQUITONEMPTY_PATCH 0 +#define ONLYQUITONEMPTY_PATCH 1 /* The pertag patch adds nmaster, mfacts and layouts per tag rather than per * monitor (default). @@ -903,6 +903,11 @@ */ #define PERTAG_VANITYGAPS_PATCH 0 +/* This patch allows configuring vanity gaps on a per-monitor basis rather than + * all monitors (default). + */ +#define PERMON_VANITYGAPS_PATCH 0 + /* This controls whether or not to also store bar position on a per * tag basis, or leave it as one bar per monitor. */ @@ -936,7 +941,7 @@ /* Renamed scratchpads option to auto-hide scratchpads when moving to a different tag. * This behaviour is similar to that of the (multiple) scratchpads patch. */ -#define RENAMED_SCRATCHPADS_AUTO_HIDE_PATCH 1 +#define RENAMED_SCRATCHPADS_AUTO_HIDE_PATCH 0 /* Shifts all clients per tag to leftmost unoccupied tags. * @@ -1038,7 +1043,7 @@ /* Allows restarting dwm without the dependency of an external script. * https://dwm.suckless.org/patches/selfrestart/ */ -#define SELFRESTART_PATCH 1 +#define SELFRESTART_PATCH 0 /* Floating windows being sent to another monitor will be centered. * https://dwm.suckless.org/patches/sendmoncenter/ @@ -1330,7 +1335,7 @@ * Optionally also applies a layout. * https://dwm.suckless.org/patches/unfloatvisible/ */ -#define UNFLOATVISIBLE_PATCH 0 +#define UNFLOATVISIBLE_PATCH 1 /* This patch adds a client rule that allows for windows that do not specify the override-redirect * to not be managed by the window manager. This can be useful for external bars, widgets, @@ -1386,7 +1391,7 @@ * view (Mod-0) using a keyboard shortcut. * http://dwm.suckless.org/patches/winview/ */ -#define WINVIEW_PATCH 1 +#define WINVIEW_PATCH 0 /* Remember keyboard layout per client. * It is recommended that you configure xkb before using this patch as described in @@ -1399,7 +1404,7 @@ * the float border color, awesomebar, urgentborder and titlecolor patches. * https://dwm.suckless.org/patches/xrdb/ */ -#define XRDB_PATCH 1 +#define XRDB_PATCH 0 /* Simple patch that allows floating windows to be zoomed into the master stack position. * https://www.reddit.com/r/suckless/comments/ie5fe3/zoomfloating_my_own_simple_original_patch/ @@ -1419,7 +1424,7 @@ /* Bottomstack layout. * https://dwm.suckless.org/patches/bottomstack/ */ -#define BSTACK_LAYOUT 0 +#define BSTACK_LAYOUT 1 /* Bottomstack horizontal layout. * https://dwm.suckless.org/patches/bottomstack/ @@ -1429,7 +1434,7 @@ /* Centered master layout. * https://dwm.suckless.org/patches/centeredmaster/ */ -#define CENTEREDMASTER_LAYOUT 0 +#define CENTEREDMASTER_LAYOUT 1 /* Centered floating master layout. * https://dwm.suckless.org/patches/centeredmaster/ @@ -1445,7 +1450,7 @@ /* Deck layout. * https://dwm.suckless.org/patches/deck/ */ -#define DECK_LAYOUT 0 +#define DECK_LAYOUT 1 /* Fibonacci dwindle layout. * https://dwm.suckless.org/patches/fibonacci/ @@ -1461,12 +1466,12 @@ * A revamped, more flexible, and over-the-top version of the original flextile layout. * https://dwm.suckless.org/patches/flextile/ (original) */ -#define FLEXTILE_DELUXE_LAYOUT 1 +#define FLEXTILE_DELUXE_LAYOUT 0 /* Gappless grid layout. * https://dwm.suckless.org/patches/gaplessgrid/ */ -#define GAPPLESSGRID_LAYOUT 0 +#define GAPPLESSGRID_LAYOUT 1 /* Gridmode (grid) layout. * https://dwm.suckless.org/patches/gridmode/ @@ -1486,7 +1491,7 @@ /* The default tile layout. * This can be optionally disabled in favour of other layouts. */ -#define TILE_LAYOUT 0 +#define TILE_LAYOUT 1 /* Monocle layout (default). * This can be optionally disabled in favour of other layouts. diff --git a/patches/stext_buffer_size.diff b/patches/stext_buffer_size.diff index 723a8c4..f17c448 100644 --- a/patches/stext_buffer_size.diff +++ b/patches/stext_buffer_size.diff @@ -5,9 +5,7 @@ /* variables */ static const char broken[] = "broken"; -static char stext[1024]; --static char rawstext[512]; +static char stext[2048]; -+static char rawstext[1024]; static int screen; static int sw, sh; /* X display screen geometry width, height */ diff --git a/patches/tagmon_floatrules.diff b/patches/tagmon_floatrules.diff deleted file mode 100644 index 67196f8..0000000 --- a/patches/tagmon_floatrules.diff +++ /dev/null @@ -1,15 +0,0 @@ ---- a/dwm.c -+++ b/dwm.c -@@ -2303,8 +2304,11 @@ tagmon(const Arg *arg) - c->isfullscreen = 1; - resizeclient(c, c->mon->mx, c->mon->my, c->mon->mw, c->mon->mh); - XRaiseWindow(dpy, c->win); -- } else -+ } else { - sendmon(c, dest); -+ applyrules(c); -+ XMoveResizeWindow(dpy, c->win, c->x, c->y, c->w, c->h); -+ } - } - - void diff --git a/patches/tagmon_scratchpad_floatrules.diff b/patches/tagmon_scratchpad_floatrules.diff new file mode 100644 index 0000000..1678eb2 --- /dev/null +++ b/patches/tagmon_scratchpad_floatrules.diff @@ -0,0 +1,13 @@ +--- a/dwm.c ++++ b/dwm.c +@@ -2179,6 +2179,10 @@ tagmon(const Arg *arg) + c->isfullscreen = 1; + resizeclient(c, c->mon->mx, c->mon->my, c->mon->mw, c->mon->mh); + XRaiseWindow(dpy, c->win); ++ } else if (c->isfloating && c->scratchkey != 0) { ++ sendmon(c, dest); ++ applyrules(c); ++ XMoveResizeWindow(dpy, c->win, c->x, c->y, c->w, c->h); + } else + sendmon(c, dest); + } diff --git a/todo b/todo deleted file mode 100644 index e62119b..0000000 --- a/todo +++ /dev/null @@ -1,3 +0,0 @@ -# TODO: customize layoutmenu patch -# TODO: increase stext buffer size for sb-cpu -# TODO: focus master hotkey