From eb31a58408455770b10fabd9c71ca01908930a8d Mon Sep 17 00:00:00 2001 From: Horhik Date: Wed, 18 Nov 2020 05:55:01 +0200 Subject: [PATCH] patch dwm --- dwm-6.2/config.def.h | 7 +- dwm-6.2/config.def.h.orig | 18 +- dwm-6.2/config.h | 7 +- dwm-6.2/dwm | Bin 72280 -> 72440 bytes dwm-6.2/dwm.c | 15 ++ dwm-6.2/dwm.c.orig | 18 +- dwm-6.2/dwm.c.rej | 47 +--- dwm-6.2/dwm.o | Bin 64256 -> 64944 bytes ...dwm-actualfullscreen-20191112-cb3f58a.diff | 53 +++++ dwm-6.2/patches/dwm-fullscreen-6.2.diff | 56 +++++ dwm-6.2/patches/dwm-noborder-6.2.diff | 30 +++ dwm-6.2/patches/dwm-smartborders-6.2.diff | 225 ++++++++++++++++++ 12 files changed, 424 insertions(+), 52 deletions(-) create mode 100644 dwm-6.2/patches/dwm-actualfullscreen-20191112-cb3f58a.diff create mode 100644 dwm-6.2/patches/dwm-fullscreen-6.2.diff create mode 100644 dwm-6.2/patches/dwm-noborder-6.2.diff create mode 100644 dwm-6.2/patches/dwm-smartborders-6.2.diff diff --git a/dwm-6.2/config.def.h b/dwm-6.2/config.def.h index 3e6f4fe..eca04d5 100644 --- a/dwm-6.2/config.def.h +++ b/dwm-6.2/config.def.h @@ -70,7 +70,8 @@ static const Rule rules[] = { { NULL, NULL, "scratchpad", 0, 1, -1, 's' }, { NULL, NULL, "sp_volume", 0, 1, -1, 'v' }, { NULL, NULL, "ScratchEmacs", 0, 1, -1, 'e' }, - +{ "Evolution", NULL, "Tasks - Evolution", 0, 1, -1, 't' }, +{ NULL, NULL, "Task - No Summary", 0, 1, -1, 0 } }; /* layout(s) */ @@ -100,13 +101,13 @@ static const Layout layouts[] = { static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn() */ static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, "-fn", dmenufont, "-nb", col_gray1, "-nf", col_gray3, "-sb", col_cyan, "-sf", col_gray4, "-c", "-l", "20", NULL}; static const char *termcmd[] = { "alacritty", NULL }; - static const char *flameshot[] = { "flameshot","gui", NULL }; /*First arg only serves to match against key in rules*/ static const char *scratchpadcmd[] = {"s", "alacritty", "-t", "scratchpad", NULL}; static const char *sp_emacs[] = {"e", "emacs", "-T", "ScratchEmacs", NULL}; static const char *sp_volume_control[] = {"v","alacritty", "-t", "sp_volume","-e", "pulsemixer", NULL}; +static const char *tasks[] = {"t","evolution", NULL}; static Key keys[] = { @@ -129,6 +130,7 @@ static Key keys[] = { { MODKEY, XK_m, setlayout, {.v = &layouts[2]} }, { MODKEY, XK_space, setlayout, {0} }, { MODKEY|ShiftMask, XK_space, togglefloating, {0} }, + { MODKEY|ShiftMask, XK_f, togglefullscr, {0} }, { MODKEY, XK_0, view, {.ui = ~0 } }, { MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } }, { MODKEY, XK_comma, focusmon, {.i = -1 } }, @@ -142,6 +144,7 @@ static Key keys[] = { { MODKEY, XK_u, togglescratch, {.v = scratchpadcmd } }, { MODKEY|ShiftMask, XK_m, togglescratch, {.v = sp_volume_control } }, { MODKEY, XK_e, togglescratch, {.v = sp_emacs } }, + { MODKEY, XK_t, togglescratch, {.v = tasks } }, { MODKEY, XK_n, togglealttag, {0} }, TAGKEYS( XK_1, 0) TAGKEYS( XK_2, 1) diff --git a/dwm-6.2/config.def.h.orig b/dwm-6.2/config.def.h.orig index eabacf6..3e6f4fe 100644 --- a/dwm-6.2/config.def.h.orig +++ b/dwm-6.2/config.def.h.orig @@ -12,12 +12,22 @@ static const char col_gray1[] = "#282828"; static const char col_gray2[] = "#928374"; static const char col_gray3[] = "#d5c4a1"; static const char col_gray4[] = "#ebdbb2"; -static const char col_cyan[] = "#d65d0e"; -//static const char col_cyan[] = "#d79921"; +static const char col_cyan[] = "#3c3836"; +static const char col_norm[] = "#d65d0e"; +static const char col_norm2[] = "#b16286"; +static const char col_norm3[] = "#d79921"; static const char *colors[][3] = { /* fg bg border */ - [SchemeNorm] = { col_gray3, col_gray1, col_gray2 }, - [SchemeSel] = { col_gray4, col_cyan, col_cyan }, + [SchemeNorm] = { col_norm, col_cyan, col_cyan}, + + [SchemeSel] = { col_gray4, col_norm2, col_norm3 }, + [SchemeStatus] = { col_norm2, col_cyan, "#000000" }, // Statusbar right {text,background,not used but cannot be empty} + + [SchemeTagsSel] = { col_gray1, col_norm3, "#000000" }, // Tagbar left selected {text,background,not used but cannot be empty} + [SchemeTagsNorm] = { col_norm2, col_cyan, "#000000" }, // Tagbar left unselected {text,background,not used but cannot be empty} + + [SchemeInfoSel] = { col_gray4, col_cyan, "#000000" }, // infobar middle selected {text,background,not used but cannot be empty} + [SchemeInfoNorm] = { col_norm2, col_cyan, "#000000" }, // infobar middle unselected {text,background,not used but cannot be empty} }; static const char *const autostart[] = { diff --git a/dwm-6.2/config.h b/dwm-6.2/config.h index 3e6f4fe..aa151a7 100644 --- a/dwm-6.2/config.h +++ b/dwm-6.2/config.h @@ -70,7 +70,8 @@ static const Rule rules[] = { { NULL, NULL, "scratchpad", 0, 1, -1, 's' }, { NULL, NULL, "sp_volume", 0, 1, -1, 'v' }, { NULL, NULL, "ScratchEmacs", 0, 1, -1, 'e' }, - +{ "Evolution", NULL, "Tasks - Evolution", 0, 1, -1, 't' }, +{ NULL, NULL, "Task - No Summary", 0, 1, -1, 0 } }; /* layout(s) */ @@ -100,13 +101,13 @@ static const Layout layouts[] = { static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn() */ static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, "-fn", dmenufont, "-nb", col_gray1, "-nf", col_gray3, "-sb", col_cyan, "-sf", col_gray4, "-c", "-l", "20", NULL}; static const char *termcmd[] = { "alacritty", NULL }; - static const char *flameshot[] = { "flameshot","gui", NULL }; /*First arg only serves to match against key in rules*/ static const char *scratchpadcmd[] = {"s", "alacritty", "-t", "scratchpad", NULL}; static const char *sp_emacs[] = {"e", "emacs", "-T", "ScratchEmacs", NULL}; static const char *sp_volume_control[] = {"v","alacritty", "-t", "sp_volume","-e", "pulsemixer", NULL}; +static const char *tasks[] = {"t","evolution", NULL}; static Key keys[] = { @@ -129,6 +130,7 @@ static Key keys[] = { { MODKEY, XK_m, setlayout, {.v = &layouts[2]} }, { MODKEY, XK_space, setlayout, {0} }, { MODKEY|ShiftMask, XK_space, togglefloating, {0} }, + { MODKEY|ShiftMask, XK_f, togglefullscr, {0} }, { MODKEY, XK_0, view, {.ui = ~0 } }, { MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } }, { MODKEY, XK_comma, focusmon, {.i = -1 } }, @@ -142,6 +144,7 @@ static Key keys[] = { { MODKEY, XK_u, togglescratch, {.v = scratchpadcmd } }, { MODKEY|ShiftMask, XK_m, togglescratch, {.v = sp_volume_control } }, { MODKEY, XK_e, togglescratch, {.v = sp_emacs } }, + { MODKEY, XK_e, togglescratch, {.v = tasks } }, { MODKEY, XK_n, togglealttag, {0} }, TAGKEYS( XK_1, 0) TAGKEYS( XK_2, 1) diff --git a/dwm-6.2/dwm b/dwm-6.2/dwm index 587e0a211d201e7da818c22493f48c297cbd9f06..c91a4dd591392193e2a23d637238351681485d82 100755 GIT binary patch delta 24168 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%0DZW>NqaG8Wo=;26DWbQ}NNK z_)t)M)G0nFY@x|Dmc)0PF?2)elg8EYjpnzp&I+CqMg$c`ws3wKry?!n#FvI5lR{45 z|4W|RZzJgq{VxTjd~J+Z z^X8llX%H+Gk_~5P;6|hMx$Bm+8=9n;I0hmqjy@Uw0+Es_22A|q#PtII0r;9TI zJ#NtFcl=TA=g+dFl%o;p7AUorqRabVT;7-1E}GLno1}>!q8fbID3r`;>2x`tl;hac-tA4?i{5w8rZ2c3gfekuSx|2_z9=XOeTtY!Pd! zxLX+tNt(|fviOo2l4~!;Te?is%5p>_Qa+dQAvZ3Won869QtS@rbMD6+cX6#H9FNb_ zfaj2=&qo|zny;l-Xhiw~IIRJR*Gv@0zvS{M(-}bKs{uKM1sd}92aMrB95;BF5^}}oPicFyn!UGCGusnb0b$1Kg;tbSEK)(PiuDP91YOA z5biKI-syD>zry8Db3Bs!75m=bIsP=qMRsokmnDCvL_Y+j4{jaV^MEUS%oX_TAO#`I zG(&!KH95lNTXB3P$8$KI%yIEESyruUNV~cHZu6)h-o>z6EJS;81+hrmxS>prizS}j zV1YN1<6^Jw!yP=wadFK5l-rrf@%MRWf1b+2zw|n1hajy``4K3rixQ*a_ zUs}U)aa$pJ(wD&L^iWu*8Q^16+73K|R;jq|@I%$m=Kxa(#f+MG)$A0%4kEUgL%AEV zCF-UrN#Ao^oO#)08h9r-E{BCX(pS`U|`dt6=|g;|3`=OM@2zoQuthpvWRS`QOHv!tC5!f@No8RD16n!x~l zEF|Ze*%{5b;y&aeuf?{&X|>1cR+uLl9xCa7>43i3qyu%ub=G0VGZnE{aj|REMv7qKmVRZO*|M7Z zy2o?UgY(PDV(4yXy8e=Tr3NF(o=UO@+$yd+KTAV9aPCQR1KhJ*H;U`Vac(X3D>tTL z<2oi2Ann*rM*Pvr`Hc85lA>t;J^u&`(JUf+nTexus63svJd>=9(Ef%=oFVefc*_NN2t+|7-U{*Dk%1)MG|M3@jH96?6)PZ> z+&feg;hR6Y!-wQp7EYz1aW*8QaHI>8-84<2ZiUL_jK7bDiThCKK!cwoE|IxQ=@|F$ z>nIIL6ywsDeSwDm-=KGhdsFR_O0L&?iA7(h+j>o>@M{B+s+(4;Ffn#J|jP z5DQz-(9#xXw*W(^r2oy^WU?5NX-qPUh0l^be}$2oe+63>K!>)$&>@<;k=!d`av#$$ zv7F1)EZ3M5xJ)I-GkCeza{ODSdy0kVDe(O#+3X$K!QAMJADH z_sy34rnK(y%e;I>pOy(^XE@j~=7Jk9P!z?_`Lil0dg^kFWhh{mHg)uBlB{q*a(c!0MVhqomsKjBw1E@h>Z1j5eOkujSS-6OW zr7T>-!c8=MTMm^^u;le6iE_Lgv?ND1%W*91wq&s!7DD^7zCK4V{v;N@%))5euPt*h zglH}KkJd6Ec4;L{<^vj9)^eFc%QTsL8j;p9nXN3`$HJqfXJlmNXO_6eLJtkUN;Ak$ z8NOQRCC@f|Wojg^X-ePVe6=M=jxyi{Rq2TkxkKaXHk#e)Hl=~hdYo)`@a(sYTBI;@ByA&2zCW0O;{ROa(nDBE;1489wAF(bJlnz8PK)kjn zJgj9Qs`TAZ*&}C`zH5Q5Xr#>2qZYXv(17N0w~$FSnye#QqqN_BT{@w;+}5W|mKhdQ V`fhVMxp8HHmNdzwCxYY_{|7cqgQ@@k diff --git a/dwm-6.2/dwm.c b/dwm-6.2/dwm.c index bbefd5d..dade245 100644 --- a/dwm-6.2/dwm.c +++ b/dwm-6.2/dwm.c @@ -227,6 +227,7 @@ static void tile(Monitor *); static void togglealttag(); static void togglebar(const Arg *arg); static void togglefloating(const Arg *arg); +static void togglefullscr(const Arg *arg); static void togglescratch(const Arg *arg); static void toggletag(const Arg *arg); static void toggleview(const Arg *arg); @@ -1380,6 +1381,13 @@ resizeclient(Client *c, int x, int y, int w, int h) c->oldw = c->w; c->w = wc.width = w; c->oldh = c->h; c->h = wc.height = h; wc.border_width = c->bw; + if (((nexttiled(c->mon->clients) == c && !nexttiled(c->next)) + || &monocle == c->mon->lt[c->mon->sellt]->arrange) + && !c->isfullscreen && !c->isfloating) { + c->w = wc.width += c->bw * 2; + c->h = wc.height += c->bw * 2; + wc.border_width = 0; + } XConfigureWindow(dpy, c->win, CWX|CWY|CWWidth|CWHeight|CWBorderWidth, &wc); configure(c); XSync(dpy, False); @@ -1957,6 +1965,13 @@ togglescratch(const Arg *arg) } } +void +togglefullscr(const Arg *arg) +{ + if(selmon->sel) + setfullscreen(selmon->sel, !selmon->sel->isfullscreen); +} + void toggletag(const Arg *arg) { diff --git a/dwm-6.2/dwm.c.orig b/dwm-6.2/dwm.c.orig index ab72749..cf0175e 100644 --- a/dwm-6.2/dwm.c.orig +++ b/dwm-6.2/dwm.c.orig @@ -60,7 +60,7 @@ /* enums */ enum { CurNormal, CurResize, CurMove, CurLast }; /* cursor */ -enum { SchemeNorm, SchemeSel }; /* color schemes */ +enum { SchemeNorm, SchemeSel, SchemeStatus, SchemeTagsSel, SchemeTagsNorm, SchemeInfoSel, SchemeInfoNorm }; /* color schemes */ enum { NetSupported, NetWMName, NetWMState, NetWMCheck, NetWMFullscreen, NetActiveWindow, NetWMWindowType, NetWMWindowTypeDialog, NetClientList, NetLast }; /* EWMH atoms */ @@ -227,6 +227,7 @@ static void tile(Monitor *); static void togglealttag(); static void togglebar(const Arg *arg); static void togglefloating(const Arg *arg); +static void togglefullscr(const Arg *arg); static void togglescratch(const Arg *arg); static void toggletag(const Arg *arg); static void toggleview(const Arg *arg); @@ -772,7 +773,7 @@ drawbar(Monitor *m) /* draw status first so it can be overdrawn by tags later */ if (m == selmon) { /* status is only drawn on selected monitor */ - drw_setscheme(drw, scheme[SchemeNorm]); + drw_setscheme(drw, scheme[SchemeStatus]); tw = TEXTW(stext) - lrpad + 2; /* 2px right padding */ drw_text(drw, m->ww - tw, 0, tw, bh, 0, stext, 0); } @@ -786,7 +787,7 @@ drawbar(Monitor *m) for (i = 0; i < LENGTH(tags); i++) { w = TEXTW(tags[i]); wdelta = selmon->alttag ? abs(TEXTW(tags[i]) - TEXTW(tagsalt[i])) / 2 : 0; - drw_setscheme(drw, scheme[m->tagset[m->seltags] & 1 << i ? SchemeSel : SchemeNorm]); + drw_setscheme(drw, scheme[m->tagset[m->seltags] & 1 << i ? SchemeTagsSel : SchemeTagsNorm]); drw_text(drw, x, 0, w, bh, wdelta + lrpad / 2, (selmon->alttag ? tagsalt[i] : tags[i]), urg & 1 << i); if (occ & 1 << i) drw_rect(drw, x + boxs, boxs, boxw, boxw, @@ -811,12 +812,12 @@ drawbar(Monitor *m) int mid = (m->ww - (int)TEXTW(m->sel->name)) / 2 - x; /* make sure name will not overlap on tags even when it is very long */ mid = mid >= lrpad / 2 ? mid : lrpad / 2; - drw_setscheme(drw, scheme[m == selmon ? SchemeSel : SchemeNorm]); + drw_setscheme(drw, scheme[m == selmon ? SchemeInfoSel : SchemeInfoNorm]); drw_text(drw, x, 0, w, bh, mid, m->sel->name, 0); if (m->sel->isfloating) drw_rect(drw, x + boxs, boxs, boxw, boxw, m->sel->isfixed, 0); } else { - drw_setscheme(drw, scheme[SchemeNorm]); + drw_setscheme(drw, scheme[SchemeInfoNorm]); drw_rect(drw, x, 0, w, bh, 1, 1); } } @@ -1957,6 +1958,13 @@ togglescratch(const Arg *arg) } } +void +togglefullscr(const Arg *arg) +{ + if(selmon->sel) + setfullscreen(selmon->sel, !selmon->sel->isfullscreen); +} + void toggletag(const Arg *arg) { diff --git a/dwm-6.2/dwm.c.rej b/dwm-6.2/dwm.c.rej index 8338a65..46ebb95 100644 --- a/dwm-6.2/dwm.c.rej +++ b/dwm-6.2/dwm.c.rej @@ -1,41 +1,10 @@ --- dwm.c +++ dwm.c -@@ -703,7 +703,7 @@ drawbar(Monitor *m) - - /* draw status first so it can be overdrawn by tags later */ - if (m == selmon) { /* status is only drawn on selected monitor */ -- drw_setscheme(drw, scheme[SchemeNorm]); -+ drw_setscheme(drw, scheme[SchemeStatus]); - sw = TEXTW(stext) - lrpad + 2; /* 2px right padding */ - drw_text(drw, m->ww - sw, 0, sw, bh, 0, stext, 0); - } -@@ -716,7 +716,7 @@ drawbar(Monitor *m) - x = 0; - for (i = 0; i < LENGTH(tags); i++) { - w = TEXTW(tags[i]); -- drw_setscheme(drw, scheme[m->tagset[m->seltags] & 1 << i ? SchemeSel : SchemeNorm]); -+ drw_setscheme(drw, scheme[m->tagset[m->seltags] & 1 << i ? SchemeTagsSel : SchemeTagsNorm]); - drw_text(drw, x, 0, w, bh, lrpad / 2, tags[i], urg & 1 << i); - if (occ & 1 << i) - drw_rect(drw, x + boxs, boxs, boxw, boxw, -@@ -725,17 +725,17 @@ drawbar(Monitor *m) - x += w; - } - w = blw = TEXTW(m->ltsymbol); -- drw_setscheme(drw, scheme[SchemeNorm]); -+ drw_setscheme(drw, scheme[SchemeTagsNorm]); - x = drw_text(drw, x, 0, w, bh, lrpad / 2, m->ltsymbol, 0); - - if ((w = m->ww - sw - x) > bh) { - if (m->sel) { -- drw_setscheme(drw, scheme[m == selmon ? SchemeSel : SchemeNorm]); -+ drw_setscheme(drw, scheme[m == selmon ? SchemeInfoSel : SchemeInfoNorm]); - drw_text(drw, x, 0, w, bh, lrpad / 2, m->sel->name, 0); - if (m->sel->isfloating) - drw_rect(drw, x + boxs, boxs, boxw, boxw, m->sel->isfixed, 0); - } else { -- drw_setscheme(drw, scheme[SchemeNorm]); -+ drw_setscheme(drw, scheme[SchemeInfoNorm]); - drw_rect(drw, x, 0, w, bh, 1, 1); - } - } +@@ -211,6 +211,7 @@ static void tagmon(const Arg *arg); + static void tile(Monitor *); + static void togglebar(const Arg *arg); + static void togglefloating(const Arg *arg); ++static void togglefullscr(const Arg *arg); + static void toggletag(const Arg *arg); + static void toggleview(const Arg *arg); + static void unfocus(Client *c, int setfocus); diff --git a/dwm-6.2/dwm.o b/dwm-6.2/dwm.o index bb8cfb42056ecb7dc2b592e0c8e45b2479800e73..2ae5af1575cb95f4da20f675b2b13d8f4eb42075 100644 GIT binary patch delta 22241 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 EKbuqGKmY&$ delta 21788 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 BxvBsF diff --git a/dwm-6.2/patches/dwm-actualfullscreen-20191112-cb3f58a.diff b/dwm-6.2/patches/dwm-actualfullscreen-20191112-cb3f58a.diff new file mode 100644 index 0000000..21eea19 --- /dev/null +++ b/dwm-6.2/patches/dwm-actualfullscreen-20191112-cb3f58a.diff @@ -0,0 +1,53 @@ +From 3a16816a6f5d38014c2a06ce395873c545c8789a Mon Sep 17 00:00:00 2001 +From: Soenke Lambert +Date: Tue, 12 Nov 2019 10:44:02 +0100 +Subject: [PATCH] Fullscreen current window with [Alt]+[Shift]+[f] + +This actually fullscreens a window, instead of just hiding the statusbar +and applying the monocle layout. +--- + config.def.h | 1 + + dwm.c | 8 ++++++++ + 2 files changed, 9 insertions(+) + +diff --git a/config.def.h b/config.def.h +index 1c0b587..8cd3204 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -78,6 +78,7 @@ static Key keys[] = { + { MODKEY, XK_m, setlayout, {.v = &layouts[2]} }, + { MODKEY, XK_space, setlayout, {0} }, + { MODKEY|ShiftMask, XK_space, togglefloating, {0} }, ++ { MODKEY|ShiftMask, XK_f, togglefullscr, {0} }, + { MODKEY, XK_0, view, {.ui = ~0 } }, + { MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } }, + { MODKEY, XK_comma, focusmon, {.i = -1 } }, +diff --git a/dwm.c b/dwm.c +index 4465af1..c1b899a 100644 +--- a/dwm.c ++++ b/dwm.c +@@ -211,6 +211,7 @@ static void tagmon(const Arg *arg); + static void tile(Monitor *); + static void togglebar(const Arg *arg); + static void togglefloating(const Arg *arg); ++static void togglefullscr(const Arg *arg); + static void toggletag(const Arg *arg); + static void toggleview(const Arg *arg); + static void unfocus(Client *c, int setfocus); +@@ -1719,6 +1720,13 @@ togglefloating(const Arg *arg) + arrange(selmon); + } + ++void ++togglefullscr(const Arg *arg) ++{ ++ if(selmon->sel) ++ setfullscreen(selmon->sel, !selmon->sel->isfullscreen); ++} ++ + void + toggletag(const Arg *arg) + { +-- +2.17.1 + diff --git a/dwm-6.2/patches/dwm-fullscreen-6.2.diff b/dwm-6.2/patches/dwm-fullscreen-6.2.diff new file mode 100644 index 0000000..36e3140 --- /dev/null +++ b/dwm-6.2/patches/dwm-fullscreen-6.2.diff @@ -0,0 +1,56 @@ +From 54719285bd1a984e2efce6e8a8eab184fec11abf Mon Sep 17 00:00:00 2001 +From: Sermak +Date: Mon, 8 Jul 2019 01:06:44 +0200 +Subject: [PATCH] Simulate toggleable fullscreen mode + +--- + config.def.h | 1 + + dwm.c | 14 ++++++++++++++ + 2 files changed, 15 insertions(+) + +diff --git a/config.def.h b/config.def.h +index 1c0b587..f774cc5 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -76,6 +76,7 @@ static Key keys[] = { + { MODKEY, XK_t, setlayout, {.v = &layouts[0]} }, + { MODKEY, XK_f, setlayout, {.v = &layouts[1]} }, + { MODKEY, XK_m, setlayout, {.v = &layouts[2]} }, ++ { MODKEY|ShiftMask, XK_f, fullscreen, {0} }, + { MODKEY, XK_space, setlayout, {0} }, + { MODKEY|ShiftMask, XK_space, togglefloating, {0} }, + { MODKEY, XK_0, view, {.ui = ~0 } }, +diff --git a/dwm.c b/dwm.c +index 4465af1..04b1e06 100644 +--- a/dwm.c ++++ b/dwm.c +@@ -199,6 +199,7 @@ static void sendmon(Client *c, Monitor *m); + static void setclientstate(Client *c, long state); + static void setfocus(Client *c); + static void setfullscreen(Client *c, int fullscreen); ++static void fullscreen(const Arg *arg); + static void setlayout(const Arg *arg); + static void setmfact(const Arg *arg); + static void setup(void); +@@ -1497,6 +1498,19 @@ setfullscreen(Client *c, int fullscreen) + } + } + ++Layout *last_layout; ++void ++fullscreen(const Arg *arg) ++{ ++ if (selmon->showbar) { ++ for(last_layout = (Layout *)layouts; last_layout != selmon->lt[selmon->sellt]; last_layout++); ++ setlayout(&((Arg) { .v = &layouts[2] })); ++ } else { ++ setlayout(&((Arg) { .v = last_layout })); ++ } ++ togglebar(arg); ++} ++ + void + setlayout(const Arg *arg) + { +-- +2.22.0 diff --git a/dwm-6.2/patches/dwm-noborder-6.2.diff b/dwm-6.2/patches/dwm-noborder-6.2.diff new file mode 100644 index 0000000..f381eb8 --- /dev/null +++ b/dwm-6.2/patches/dwm-noborder-6.2.diff @@ -0,0 +1,30 @@ +From 9102fdb9c670218373bbe83c891c8e8138d6a6f4 Mon Sep 17 00:00:00 2001 +From: redacted +Date: Tue, 23 Apr 2019 00:39:27 +0100 +Subject: [PATCH] added noborder patch + +--- + dwm.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/dwm.c b/dwm.c +index 4465af1..685eca1 100644 +--- a/dwm.c ++++ b/dwm.c +@@ -1282,6 +1282,13 @@ resizeclient(Client *c, int x, int y, int w, int h) + c->oldw = c->w; c->w = wc.width = w; + c->oldh = c->h; c->h = wc.height = h; + wc.border_width = c->bw; ++ if (((nexttiled(c->mon->clients) == c && !nexttiled(c->next)) ++ || &monocle == c->mon->lt[c->mon->sellt]->arrange) ++ && !c->isfullscreen && !c->isfloating) { ++ c->w = wc.width += c->bw * 2; ++ c->h = wc.height += c->bw * 2; ++ wc.border_width = 0; ++ } + XConfigureWindow(dpy, c->win, CWX|CWY|CWWidth|CWHeight|CWBorderWidth, &wc); + configure(c); + XSync(dpy, False); +-- +2.21.0 + diff --git a/dwm-6.2/patches/dwm-smartborders-6.2.diff b/dwm-6.2/patches/dwm-smartborders-6.2.diff new file mode 100644 index 0000000..1ff246f --- /dev/null +++ b/dwm-6.2/patches/dwm-smartborders-6.2.diff @@ -0,0 +1,225 @@ +diff --git a/dwm.c b/dwm.c +index 4465af1..3c94e4b 100644 +--- a/dwm.c ++++ b/dwm.c +@@ -143,7 +143,7 @@ typedef struct { + + /* function declarations */ + static void applyrules(Client *c); +-static int applysizehints(Client *c, int *x, int *y, int *w, int *h, int interact); ++static int applysizehints(Client *c, int *x, int *y, int *w, int *h, int *bw, int interact); + static void arrange(Monitor *m); + static void arrangemon(Monitor *m); + static void attach(Client *c); +@@ -188,8 +188,8 @@ static void pop(Client *); + static void propertynotify(XEvent *e); + static void quit(const Arg *arg); + static Monitor *recttomon(int x, int y, int w, int h); +-static void resize(Client *c, int x, int y, int w, int h, int interact); +-static void resizeclient(Client *c, int x, int y, int w, int h); ++static void resize(Client *c, int x, int y, int w, int h, int bw, int interact); ++static void resizeclient(Client *c, int x, int y, int w, int h, int bw); + static void resizemouse(const Arg *arg); + static void restack(Monitor *m); + static void run(void); +@@ -312,7 +312,7 @@ applyrules(Client *c) + } + + int +-applysizehints(Client *c, int *x, int *y, int *w, int *h, int interact) ++applysizehints(Client *c, int *x, int *y, int *w, int *h, int *bw, int interact) + { + int baseismin; + Monitor *m = c->mon; +@@ -325,18 +325,18 @@ applysizehints(Client *c, int *x, int *y, int *w, int *h, int interact) + *x = sw - WIDTH(c); + if (*y > sh) + *y = sh - HEIGHT(c); +- if (*x + *w + 2 * c->bw < 0) ++ if (*x + *w + 2 * *bw < 0) + *x = 0; +- if (*y + *h + 2 * c->bw < 0) ++ if (*y + *h + 2 * *bw < 0) + *y = 0; + } else { + if (*x >= m->wx + m->ww) + *x = m->wx + m->ww - WIDTH(c); + if (*y >= m->wy + m->wh) + *y = m->wy + m->wh - HEIGHT(c); +- if (*x + *w + 2 * c->bw <= m->wx) ++ if (*x + *w + 2 * *bw <= m->wx) + *x = m->wx; +- if (*y + *h + 2 * c->bw <= m->wy) ++ if (*y + *h + 2 * *bw <= m->wy) + *y = m->wy; + } + if (*h < bh) +@@ -374,7 +374,7 @@ applysizehints(Client *c, int *x, int *y, int *w, int *h, int interact) + if (c->maxh) + *h = MIN(*h, c->maxh); + } +- return *x != c->x || *y != c->y || *w != c->w || *h != c->h; ++ return *x != c->x || *y != c->y || *w != c->w || *h != c->h || *bw != c->bw; + } + + void +@@ -394,9 +394,16 @@ arrange(Monitor *m) + void + arrangemon(Monitor *m) + { ++ Client *c; ++ + strncpy(m->ltsymbol, m->lt[m->sellt]->symbol, sizeof m->ltsymbol); + if (m->lt[m->sellt]->arrange) + m->lt[m->sellt]->arrange(m); ++ else ++ /* <>< case; rather than providing an arrange function and upsetting other logic that tests for its presence, simply add borders here */ ++ for (c = selmon->clients; c; c = c->next) ++ if (ISVISIBLE(c) && c->bw == 0) ++ resize(c, c->x, c->y, c->w - 2*borderpx, c->h - 2*borderpx, borderpx, 0); + } + + void +@@ -566,7 +573,7 @@ configurenotify(XEvent *e) + for (m = mons; m; m = m->next) { + for (c = m->clients; c; c = c->next) + if (c->isfullscreen) +- resizeclient(c, m->mx, m->my, m->mw, m->mh); ++ resizeclient(c, m->mx, m->my, m->mw, m->mh, 0); + XMoveResizeWindow(dpy, m->barwin, m->wx, m->by, m->ww, bh); + } + focus(NULL); +@@ -1112,7 +1119,7 @@ monocle(Monitor *m) + if (n > 0) /* override layout symbol */ + snprintf(m->ltsymbol, sizeof m->ltsymbol, "[%d]", n); + for (c = nexttiled(m->clients); c; c = nexttiled(c->next)) +- resize(c, m->wx, m->wy, m->ww - 2 * c->bw, m->wh - 2 * c->bw, 0); ++ resize(c, m->wx, m->wy, m->ww, m->wh, 0, 0); + } + + void +@@ -1180,7 +1187,7 @@ movemouse(const Arg *arg) + && (abs(nx - c->x) > snap || abs(ny - c->y) > snap)) + togglefloating(NULL); + if (!selmon->lt[selmon->sellt]->arrange || c->isfloating) +- resize(c, nx, ny, c->w, c->h, 1); ++ resize(c, nx, ny, c->w, c->h, c->bw, 1); + break; + } + } while (ev.type != ButtonRelease); +@@ -1266,14 +1273,14 @@ recttomon(int x, int y, int w, int h) + } + + void +-resize(Client *c, int x, int y, int w, int h, int interact) ++resize(Client *c, int x, int y, int w, int h, int bw, int interact) + { +- if (applysizehints(c, &x, &y, &w, &h, interact)) +- resizeclient(c, x, y, w, h); ++ if (applysizehints(c, &x, &y, &w, &h, &bw, interact)) ++ resizeclient(c, x, y, w, h, bw); + } + + void +-resizeclient(Client *c, int x, int y, int w, int h) ++resizeclient(Client *c, int x, int y, int w, int h, int bw) + { + XWindowChanges wc; + +@@ -1281,7 +1288,7 @@ resizeclient(Client *c, int x, int y, int w, int h) + c->oldy = c->y; c->y = wc.y = y; + c->oldw = c->w; c->w = wc.width = w; + c->oldh = c->h; c->h = wc.height = h; +- wc.border_width = c->bw; ++ c->oldbw = c->bw; c->bw = wc.border_width = bw; + XConfigureWindow(dpy, c->win, CWX|CWY|CWWidth|CWHeight|CWBorderWidth, &wc); + configure(c); + XSync(dpy, False); +@@ -1330,7 +1337,7 @@ resizemouse(const Arg *arg) + togglefloating(NULL); + } + if (!selmon->lt[selmon->sellt]->arrange || c->isfloating) +- resize(c, c->x, c->y, nw, nh, 1); ++ resize(c, c->x, c->y, nw, nh, c->bw, 1); + break; + } + } while (ev.type != ButtonRelease); +@@ -1477,22 +1484,20 @@ setfullscreen(Client *c, int fullscreen) + PropModeReplace, (unsigned char*)&netatom[NetWMFullscreen], 1); + c->isfullscreen = 1; + c->oldstate = c->isfloating; +- c->oldbw = c->bw; +- c->bw = 0; + c->isfloating = 1; +- resizeclient(c, c->mon->mx, c->mon->my, c->mon->mw, c->mon->mh); ++ resizeclient(c, c->mon->mx, c->mon->my, c->mon->mw, c->mon->mh, 0); + XRaiseWindow(dpy, c->win); + } else if (!fullscreen && c->isfullscreen){ + XChangeProperty(dpy, c->win, netatom[NetWMState], XA_ATOM, 32, + PropModeReplace, (unsigned char*)0, 0); + c->isfullscreen = 0; + c->isfloating = c->oldstate; +- c->bw = c->oldbw; + c->x = c->oldx; + c->y = c->oldy; + c->w = c->oldw; + c->h = c->oldh; +- resizeclient(c, c->x, c->y, c->w, c->h); ++ c->bw = c->oldbw; ++ resizeclient(c, c->x, c->y, c->w, c->h, c->bw); + arrange(c->mon); + } + } +@@ -1619,7 +1624,7 @@ showhide(Client *c) + /* show clients top down */ + XMoveWindow(dpy, c->win, c->x, c->y); + if ((!c->mon->lt[c->mon->sellt]->arrange || c->isfloating) && !c->isfullscreen) +- resize(c, c->x, c->y, c->w, c->h, 0); ++ resize(c, c->x, c->y, c->w, c->h, c->bw, 0); + showhide(c->snext); + } else { + /* hide clients bottom up */ +@@ -1673,13 +1678,17 @@ tagmon(const Arg *arg) + void + tile(Monitor *m) + { +- unsigned int i, n, h, mw, my, ty; ++ unsigned int i, n, h, mw, my, ty, bw; + Client *c; + + for (n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), n++); + if (n == 0) + return; + ++ if (n == 1) ++ bw = 0; ++ else ++ bw = borderpx; + if (n > m->nmaster) + mw = m->nmaster ? m->ww * m->mfact : 0; + else +@@ -1687,11 +1696,11 @@ tile(Monitor *m) + for (i = my = ty = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), i++) + if (i < m->nmaster) { + h = (m->wh - my) / (MIN(n, m->nmaster) - i); +- resize(c, m->wx, m->wy + my, mw - (2*c->bw), h - (2*c->bw), 0); ++ resize(c, m->wx, m->wy + my, mw - 2*bw, h - 2*bw, bw, 0); + my += HEIGHT(c); + } else { + h = (m->wh - ty) / (n - i); +- resize(c, m->wx + mw, m->wy + ty, m->ww - mw - (2*c->bw), h - (2*c->bw), 0); ++ resize(c, m->wx + mw, m->wy + ty, m->ww - mw - 2*bw, h - 2*bw, bw, 0); + ty += HEIGHT(c); + } + } +@@ -1715,7 +1724,9 @@ togglefloating(const Arg *arg) + selmon->sel->isfloating = !selmon->sel->isfloating || selmon->sel->isfixed; + if (selmon->sel->isfloating) + resize(selmon->sel, selmon->sel->x, selmon->sel->y, +- selmon->sel->w, selmon->sel->h, 0); ++ selmon->sel->w - 2 * (borderpx - selmon->sel->bw), ++ selmon->sel->h - 2 * (borderpx - selmon->sel->bw), ++ borderpx, 0); + arrange(selmon); + } +