From 36352a1ac57795bac42e2b8e7d513b6151eb29d6 Mon Sep 17 00:00:00 2001 From: Quentin Snow Date: Thu, 1 Apr 2021 22:38:10 -0500 Subject: [PATCH] Patched pertag --- config.h | 6 +-- dwm | Bin 61928 -> 61928 bytes dwm-pertag-6.2.diff | 9 ----- dwm.c | 88 +++++++++++++++++++++++++++++++++++++++++--- dwm.o | Bin 57584 -> 58136 bytes 5 files changed, 85 insertions(+), 18 deletions(-) diff --git a/config.h b/config.h index 1903b0f..decd374 100644 --- a/config.h +++ b/config.h @@ -5,8 +5,8 @@ static const unsigned int borderpx = 1; /* 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 char *fonts[] = { "JetBrainsMonoNL-Regular:size=8" }; -static const char dmenufont[] = "JetBrainsMonoNL-Regular:size=8"; +static const char *fonts[] = { "JetBrainsMonoNL-Regular:size=7" }; +static const char dmenufont[] = "JetBrainsMonoNL-Regular:size=7"; static const char col_gray1[] = "#730101"; /* topbar */ static const char col_gray2[] = "#544444"; /* ? */ static const char col_gray3[] = "#fef5f5"; /* text color */ @@ -64,7 +64,7 @@ static Key keys[] = { { MODKEY, XK_p, spawn, {.v = dmenucmd } }, { MODKEY|ShiftMask, XK_Return, spawn, {.v = termcmd } }, { MODKEY, XK_b, togglebar, {0} }, - { MODKEY, XK_j, focusstack, {.i = =1 } }, + { MODKEY, XK_j, focusstack, {.i = -1 } }, { MODKEY, XK_k, focusstack, {.i = +1 } }, { MODKEY, XK_i, incnmaster, {.i = +1 } }, { MODKEY, XK_d, incnmaster, {.i = -1 } }, diff --git a/dwm b/dwm index d748823ebf5f78f0630868d98c27eca692c0e956..28e9c773cc0b8a0163709589245ddc543936554c 100755 GIT binary patch delta 14694 zcmZ{L3tSXc`~U2~;-UhJf`EvCqM|9XDhjV|vbf5it1cplT)bl56KzS&%VI0yG*Z;D zx2)e=_F8IXWn$%B3sNz#uhjCj`G3#M9JBrZ-uZmk=bZ0zInTL0=Q-mj z|KKD4;Iq|aXn8cBQ=g;xq>UlLUudsYg{lmL(vD0DHwEYJ(IAsXxE*A2cyGf!@^W}s zhUGa8-0CHBbg_o-@WRLF_#rR+6uBK9=I%I6Z)vYiHNy4Pwai|)vPct%@xpto((ptt z{L^POJlPBXWTJ|b@`&Jwh+<76(nWR-HMwxeamaFwA zxI{0;le&V_3x~gbA`^I!DUk{8>KU53tzJ^AN;UlWf5C5g;Y7D%uG93GdkjzX!b3E9 zH|PAn8C4mcuRP2Q_M=Mnv z%g>~>!?6{#)k}djaNG-L4czj=Sp(+7fA0XZpZGXVmp^O3`8WeOYoOQ*XAM+(;jDqJ zUO2OV+zY4n)$Mo7i@_Q&H~g0#c;T!8rx*UH170|@U)i9w|Nl>cmjY|xxEIbExaEbj z2FzdmmkvC__3*4iU<0xz7|KkkLQSp&Dc7_0&Fk^j;IFPt^t z^un3_VlSN8Z&T^Tc(SCbeeC9T{PHoRcEBh;VGIdLKEr2alAFmfe6QrH;FL24euR@; z`^T6TCvncoBl=Yh9XQ+I-@hxzSrmEn0J3w?Yr$qa$2Ertl07bbxHRap{2`faEo$@T zkiVn-W63FNA%8QK^nY>&e=E6a{ga&x{(p?%IH4kdjHvo*@Hzv3ULa4|GWb;)dL5J zjc(i6eXnC6_Z#q&CG4hz{$nRCT8<`}ppc)s)% zJb%QO9CwJ9^YU#4HG=0_e1>>GL%c0W)&^u0MS|qpC0

6p+!`EyG^~EQsGYg$jFI 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 delta 14156 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, selmon->lt[selmon->sellt]->symbol, sizeof selmon->ltsymbol); if (selmon->sel) arrange(selmon); -@@ -1522,7 +1548,7 @@ setmfact(const Arg *arg) - f = arg->f < 1.0 ? arg->f + selmon->mfact : arg->f - 1.0; - if (f < 0.1 || f > 0.9) - return; -- selmon->mfact = f; -+ selmon->mfact = selmon->pertag->mfacts[selmon->pertag->curtag] = f; - arrange(selmon); - } - @@ -1699,7 +1725,7 @@ tile(Monitor *m) void togglebar(const Arg *arg) diff --git a/dwm.c b/dwm.c index 664c527..ac8e4ec 100644 --- a/dwm.c +++ b/dwm.c @@ -111,6 +111,7 @@ typedef struct { void (*arrange)(Monitor *); } Layout; +typedef struct Pertag Pertag; struct Monitor { char ltsymbol[16]; float mfact; @@ -130,6 +131,7 @@ struct Monitor { Monitor *next; Window barwin; const Layout *lt[2]; + Pertag *pertag; }; typedef struct { @@ -272,6 +274,15 @@ static Window root, wmcheckwin; /* configuration, allows nested code to access above variables */ #include "config.h" +struct Pertag { + unsigned int curtag, prevtag; /* current and previous tag */ + int nmasters[LENGTH(tags) + 1]; /* number of windows in master area */ + float mfacts[LENGTH(tags) + 1]; /* mfacts per tag */ + unsigned int sellts[LENGTH(tags) + 1]; /* selected layouts */ + const Layout *ltidxs[LENGTH(tags) + 1][2]; /* matrix of tags and layouts indexes */ + int showbars[LENGTH(tags) + 1]; /* display bar for the current tag */ +}; + /* compile-time check if all tags fit into an unsigned int bit array. */ struct NumTags { char limitexceeded[LENGTH(tags) > 31 ? -1 : 1]; }; @@ -632,6 +643,7 @@ Monitor * createmon(void) { Monitor *m; + unsigned int i; m = ecalloc(1, sizeof(Monitor)); m->tagset[0] = m->tagset[1] = 1; @@ -642,6 +654,20 @@ createmon(void) m->lt[0] = &layouts[0]; m->lt[1] = &layouts[1 % LENGTH(layouts)]; strncpy(m->ltsymbol, layouts[0].symbol, sizeof m->ltsymbol); + m->pertag = ecalloc(1, sizeof(Pertag)); + m->pertag->curtag = m->pertag->prevtag = 1; + + for (i = 0; i <= LENGTH(tags); i++) { + m->pertag->nmasters[i] = m->nmaster; + m->pertag->mfacts[i] = m->mfact; + + m->pertag->ltidxs[i][0] = m->lt[0]; + m->pertag->ltidxs[i][1] = m->lt[1]; + m->pertag->sellts[i] = m->sellt; + + m->pertag->showbars[i] = m->showbar; + } + return m; } @@ -967,7 +993,7 @@ grabkeys(void) void incnmaster(const Arg *arg) { - selmon->nmaster = MAX(selmon->nmaster + arg->i, 0); + selmon->nmaster = selmon->pertag->nmasters[selmon->pertag->curtag] = MAX(selmon->nmaster + arg->i, 0); arrange(selmon); } @@ -1502,9 +1528,9 @@ void setlayout(const Arg *arg) { if (!arg || !arg->v || arg->v != selmon->lt[selmon->sellt]) - selmon->sellt ^= 1; + selmon->sellt = selmon->pertag->sellts[selmon->pertag->curtag] ^= 1; if (arg && arg->v) - selmon->lt[selmon->sellt] = (Layout *)arg->v; + selmon->lt[selmon->sellt] = selmon->pertag->ltidxs[selmon->pertag->curtag][selmon->sellt] = (Layout *)arg->v; strncpy(selmon->ltsymbol, selmon->lt[selmon->sellt]->symbol, sizeof selmon->ltsymbol); if (selmon->sel) arrange(selmon); @@ -1523,7 +1549,7 @@ setmfact(const Arg *arg) f = arg->f < 1.0 ? arg->f + selmon->mfact : arg->f - 1.0; if (f < 0.05 || f > 0.95) return; - selmon->mfact = f; + selmon->mfact = selmon->pertag->mfacts[selmon->pertag->curtag] = f; arrange(selmon); } @@ -1702,7 +1728,7 @@ tile(Monitor *m) void togglebar(const Arg *arg) { - selmon->showbar = !selmon->showbar; + selmon->showbar = selmon->pertag->showbars[selmon->pertag->curtag] = !selmon->showbar; updatebarpos(selmon); XMoveResizeWindow(dpy, selmon->barwin, selmon->wx, selmon->by, selmon->ww, bh); arrange(selmon); @@ -1741,9 +1767,33 @@ void toggleview(const Arg *arg) { unsigned int newtagset = selmon->tagset[selmon->seltags] ^ (arg->ui & TAGMASK); + int i; if (newtagset) { selmon->tagset[selmon->seltags] = newtagset; + + if (newtagset == ~0) { + selmon->pertag->prevtag = selmon->pertag->curtag; + selmon->pertag->curtag = 0; + } + + /* test if the user did not select the same tag */ + if (!(newtagset & 1 << (selmon->pertag->curtag - 1))) { + selmon->pertag->prevtag = selmon->pertag->curtag; + for (i = 0; !(newtagset & 1 << i); i++) ; + selmon->pertag->curtag = i + 1; + } + + /* apply settings for this view */ + selmon->nmaster = selmon->pertag->nmasters[selmon->pertag->curtag]; + selmon->mfact = selmon->pertag->mfacts[selmon->pertag->curtag]; + selmon->sellt = selmon->pertag->sellts[selmon->pertag->curtag]; + selmon->lt[selmon->sellt] = selmon->pertag->ltidxs[selmon->pertag->curtag][selmon->sellt]; + selmon->lt[selmon->sellt^1] = selmon->pertag->ltidxs[selmon->pertag->curtag][selmon->sellt^1]; + + if (selmon->showbar != selmon->pertag->showbars[selmon->pertag->curtag]) + togglebar(NULL); + focus(NULL); arrange(selmon); } @@ -2038,11 +2088,37 @@ updatewmhints(Client *c) void view(const Arg *arg) { + int i; + unsigned int tmptag; + if ((arg->ui & TAGMASK) == selmon->tagset[selmon->seltags]) return; selmon->seltags ^= 1; /* toggle sel tagset */ - if (arg->ui & TAGMASK) + if (arg->ui & TAGMASK) { selmon->tagset[selmon->seltags] = arg->ui & TAGMASK; + selmon->pertag->prevtag = selmon->pertag->curtag; + + if (arg->ui == ~0) + selmon->pertag->curtag = 0; + else { + for (i = 0; !(arg->ui & 1 << i); i++) ; + selmon->pertag->curtag = i + 1; + } + } else { + tmptag = selmon->pertag->prevtag; + selmon->pertag->prevtag = selmon->pertag->curtag; + selmon->pertag->curtag = tmptag; + } + + selmon->nmaster = selmon->pertag->nmasters[selmon->pertag->curtag]; + selmon->mfact = selmon->pertag->mfacts[selmon->pertag->curtag]; + selmon->sellt = selmon->pertag->sellts[selmon->pertag->curtag]; + selmon->lt[selmon->sellt] = selmon->pertag->ltidxs[selmon->pertag->curtag][selmon->sellt]; + selmon->lt[selmon->sellt^1] = selmon->pertag->ltidxs[selmon->pertag->curtag][selmon->sellt^1]; + + if (selmon->showbar != selmon->pertag->showbars[selmon->pertag->curtag]) + togglebar(NULL); + focus(NULL); arrange(selmon); } diff --git a/dwm.o b/dwm.o index 17c2ec96e171498cd69cef69cf0e9c32a0ba6665..13ef8bdfbc72a0bc9e6e65b0638c55faa3281bd4 100644 GIT binary patch delta 15757 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 GJNUmeJ3$@*