it* dwm + patches Err codevoid.de 70 i Err codevoid.de 70 hgit clone git://git.codevoid.de/dwm-sdk URL:git://git.codevoid.de/dwm-sdk codevoid.de 70 1Log /git/dwm-sdk/log.gph codevoid.de 70 1Files /git/dwm-sdk/files.gph codevoid.de 70 1Refs /git/dwm-sdk/refs.gph codevoid.de 70 1README /git/dwm-sdk/file/README.gph codevoid.de 70 1LICENSE /git/dwm-sdk/file/LICENSE.gph codevoid.de 70 i--- Err codevoid.de 70 1commit 46d79b7c26c0038f03e7a02f8cd1d44a281abb63 /git/dwm-sdk/commit/46d79b7c26c0038f03e7a02f8cd1d44a281abb63.gph codevoid.de 70 1parent f60e596d4c5b9b5a780fe086de9017e959ff5d2e /git/dwm-sdk/commit/f60e596d4c5b9b5a780fe086de9017e959ff5d2e.gph codevoid.de 70 hAuthor: Stefan Hagen URL:mailto:sh+git[at]codevoid[dot]de codevoid.de 70 iDate: Wed, 23 May 2018 18:07:57 +0200 Err codevoid.de 70 i Err codevoid.de 70 iAdding scratchpad patch Err codevoid.de 70 i Err codevoid.de 70 iDiffstat: Err codevoid.de 70 i M config.def.h | 3 +++ Err codevoid.de 70 i M config.h | 5 +++++ Err codevoid.de 70 i M dwm.c | 32 +++++++++++++++++++++++++++++++ Err codevoid.de 70 i Err codevoid.de 70 i3 files changed, 40 insertions(+), 0 deletions(-) Err codevoid.de 70 i--- Err codevoid.de 70 1diff --git a/config.def.h b/config.def.h /git/dwm-sdk/file/config.def.h.gph codevoid.de 70 it@@ -64,11 +64,14 @@ static const Layout layouts[] = { Err codevoid.de 70 i static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn() */ Err codevoid.de 70 i static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, "-fn", dmenufont, "-nb", col_gray1, "-nf", col_gray3, "-sb", col_cyan, "-sf", col_gray4, NULL }; Err codevoid.de 70 i static const char *termcmd[] = { "st", NULL }; Err codevoid.de 70 i+static const char scratchpadname[] = "scratchpad"; Err codevoid.de 70 i+static const char *scratchpadcmd[] = { "st", "-t", scratchpadname, "-g", "120x34", NULL }; Err codevoid.de 70 i Err codevoid.de 70 i static Key keys[] = { Err codevoid.de 70 i /* modifier key function argument */ Err codevoid.de 70 i { MODKEY, XK_p, spawn, {.v = dmenucmd } }, Err codevoid.de 70 i { MODKEY|ShiftMask, XK_Return, spawn, {.v = termcmd } }, Err codevoid.de 70 i+ { MODKEY, XK_grave, togglescratch, {.v = scratchpadcmd } }, Err codevoid.de 70 i { MODKEY, XK_b, togglebar, {0} }, Err codevoid.de 70 i { MODKEY, XK_j, focusstack, {.i = +1 } }, Err codevoid.de 70 i { MODKEY, XK_k, focusstack, {.i = -1 } }, Err codevoid.de 70 1diff --git a/config.h b/config.h /git/dwm-sdk/file/config.h.gph codevoid.de 70 it@@ -63,6 +63,9 @@ static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, "-fn", dmenufont, Err codevoid.de 70 i static const char *termcmd[] = { "st", NULL }; Err codevoid.de 70 i static const char *bigtermcmd[] = { "st", "-f FuraCode Nerd Font:size=20:antialias=false:autohint=false", NULL }; Err codevoid.de 70 i static const char *browsercmd[] = { ".dwm/browser", "-m", dmenumon, "-fn", dmenufont, "-nb", col_gray1, "-nf", col_gray3, "-sb", col_cyan, "-sf", col_gray4, NULL }; Err codevoid.de 70 i+static const char *passmenucmd[] = { ".dwm/passmenu", "-m", dmenumon, "-fn", dmenufont, "-nb", col_gray1, "-nf", col_gray3, "-sb", col_cyan, "-sf", col_gray4, NULL }; Err codevoid.de 70 i+static const char scratchpadname[] = "scratchpad"; Err codevoid.de 70 i+static const char *scratchpadcmd[] = { "st", "-t", scratchpadname, "-g", "120x34", NULL }; Err codevoid.de 70 i Err codevoid.de 70 i static Key keys[] = { Err codevoid.de 70 i /* modifier key function argument */ Err codevoid.de 70 it@@ -71,6 +74,8 @@ static Key keys[] = { Err codevoid.de 70 i { MODKEY, XK_Return, spawn, {.v = termcmd } }, Err codevoid.de 70 i { MODKEY|ShiftMask, XK_Return, spawn, {.v = bigtermcmd } }, Err codevoid.de 70 i { MODKEY|ShiftMask, XK_f, spawn, {.v = browsercmd } }, Err codevoid.de 70 i+ { MODKEY|ShiftMask, XK_p, spawn, {.v = passmenucmd } }, Err codevoid.de 70 i+ { MODKEY, XK_minus, togglescratch, {.v = scratchpadcmd } }, Err codevoid.de 70 i Err codevoid.de 70 i // ui modifier Err codevoid.de 70 i { MODKEY, XK_b, togglebar, {0} }, Err codevoid.de 70 1diff --git a/dwm.c b/dwm.c /git/dwm-sdk/file/dwm.c.gph codevoid.de 70 it@@ -240,6 +240,7 @@ static void tag(const Arg *arg); Err codevoid.de 70 i static void tagmon(const Arg *arg); Err codevoid.de 70 i static void togglebar(const Arg *arg); Err codevoid.de 70 i static void togglefloating(const Arg *arg); Err codevoid.de 70 i+static void togglescratch(const Arg *arg); Err codevoid.de 70 i static void toggletag(const Arg *arg); Err codevoid.de 70 i static void toggleview(const Arg *arg); Err codevoid.de 70 i static void unfocus(Client *c, int setfocus); Err codevoid.de 70 it@@ -307,6 +308,8 @@ static Window root, wmcheckwin; Err codevoid.de 70 i /* configuration, allows nested code to access above variables */ Err codevoid.de 70 i #include "config.h" Err codevoid.de 70 i Err codevoid.de 70 i+static unsigned int scratchtag = 1 << LENGTH(tags); Err codevoid.de 70 i+ Err codevoid.de 70 i /* compile-time check if all tags fit into an unsigned int bit array. */ Err codevoid.de 70 i struct NumTags { char limitexceeded[LENGTH(tags) > 31 ? -1 : 1]; }; Err codevoid.de 70 i Err codevoid.de 70 it@@ -1162,6 +1165,13 @@ manage(Window w, XWindowAttributes *wa) Err codevoid.de 70 i && (c->x + (c->w / 2) < c->mon->wx + c->mon->ww)) ? bh : c->mon->my); Err codevoid.de 70 i c->bw = borderpx; Err codevoid.de 70 i Err codevoid.de 70 i+ if (!strcmp(c->name, scratchpadname)) { Err codevoid.de 70 i+ c->mon->tagset[c->mon->seltags] |= c->tags = scratchtag; Err codevoid.de 70 i+ c->isfloating = True; Err codevoid.de 70 i+ c->x = c->mon->wx + (c->mon->ww / 2 - WIDTH(c) / 2); Err codevoid.de 70 i+ c->y = c->mon->wy + (c->mon->wh / 2 - HEIGHT(c) / 2); Err codevoid.de 70 i+ } Err codevoid.de 70 i+ Err codevoid.de 70 i wc.border_width = c->bw; Err codevoid.de 70 i XConfigureWindow(dpy, w, CWBorderWidth, &wc); Err codevoid.de 70 i XSetWindowBorder(dpy, w, scheme[SchemeNorm][ColBorder].pixel); Err codevoid.de 70 it@@ -1888,6 +1898,28 @@ togglefloating(const Arg *arg) Err codevoid.de 70 i } Err codevoid.de 70 i Err codevoid.de 70 i void Err codevoid.de 70 i+togglescratch(const Arg *arg) Err codevoid.de 70 i+{ Err codevoid.de 70 i+ Client *c; Err codevoid.de 70 i+ unsigned int found = 0; Err codevoid.de 70 i+ Err codevoid.de 70 i+ for (c = selmon->clients; c && !(found = c->tags & scratchtag); c = c->next); Err codevoid.de 70 i+ if (found) { Err codevoid.de 70 i+ unsigned int newtagset = selmon->tagset[selmon->seltags] ^ scratchtag; Err codevoid.de 70 i+ if (newtagset) { Err codevoid.de 70 i+ selmon->tagset[selmon->seltags] = newtagset; Err codevoid.de 70 i+ focus(NULL); Err codevoid.de 70 i+ arrange(selmon); Err codevoid.de 70 i+ } Err codevoid.de 70 i+ if (ISVISIBLE(c)) { Err codevoid.de 70 i+ focus(c); Err codevoid.de 70 i+ restack(selmon); Err codevoid.de 70 i+ } Err codevoid.de 70 i+ } else Err codevoid.de 70 i+ spawn(arg); Err codevoid.de 70 i+} Err codevoid.de 70 i+ Err codevoid.de 70 i+void Err codevoid.de 70 i toggletag(const Arg *arg) Err codevoid.de 70 i { Err codevoid.de 70 i unsigned int newtags; Err codevoid.de 70 .