From ab3f787725dc78cb9ae73c47d40e00be0a6b2159 Mon Sep 17 00:00:00 2001 From: Bryson Steck Date: Fri, 8 Oct 2021 12:41:04 -0600 Subject: [PATCH] initial commit --- config.def.h | 1 + config.h | 124 +++++++++++++++++++++++++++++++++++++++++++++ drw.o | Bin 0 -> 10584 bytes dwm | Bin 0 -> 61992 bytes dwm.c | 36 ++++++++++--- dwm.o | Bin 0 -> 57536 bytes uselessgap.diff | 81 ++++++++++++++++++++++++++++++ util.o | Bin 0 -> 2256 bytes xfce-plugins.diff | 125 ++++++++++++++++++++++++++++++++++++++++++++++ 9 files changed, 361 insertions(+), 6 deletions(-) create mode 100644 config.h create mode 100644 drw.o create mode 100755 dwm create mode 100644 dwm.o create mode 100644 uselessgap.diff create mode 100644 util.o create mode 100644 xfce-plugins.diff diff --git a/config.def.h b/config.def.h index a2ac963..08cfbd4 100644 --- a/config.def.h +++ b/config.def.h @@ -2,6 +2,7 @@ /* appearance */ static const unsigned int borderpx = 1; /* border pixel of windows */ +static const unsigned int gappx = 6; /* gaps between 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 */ diff --git a/config.h b/config.h new file mode 100644 index 0000000..f251033 --- /dev/null +++ b/config.h @@ -0,0 +1,124 @@ +/* See LICENSE file for copyright and license details. */ + +/* appearance */ +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[] = { "JetBrains Mono:size=12" }; +static const char dmenufont[] = "JetBrains Mono:size=12"; +static const char col_gray1[] = "#222222"; +static const char col_gray2[] = "#444444"; +static const char col_gray3[] = "#bbbbbb"; +static const char col_gray4[] = "#eeeeee"; +static const char col_cyan[] = "#005577"; +static const char col_nord0[] = "#2e3440"; +static const char col_nord1[] = "#3b4252"; +static const char col_nord2[] = "#434c5e"; +static const char col_nord3[] = "#4c566a"; +static const char col_nord4[] = "#d8dee9"; +static const char col_nord10[] = "#5e81ac"; +static const unsigned int gappx = 6; + +static const char *colors[][3] = { + /* fg bg border */ + [SchemeNorm] = { col_nord4, col_nord0, col_nord0 }, + [SchemeSel] = { col_nord4, col_nord10, col_nord1 }, +}; + +/* tagging */ +static const char *tags[] = { "1", "2", "3", "4" }; + +static const Rule rules[] = { + /* xprop(1): + * WM_CLASS(STRING) = instance, class + * WM_NAME(STRING) = title + */ + /* class instance title tags mask isfloating monitor */ + { "Gimp", NULL, NULL, 0, 1, -1 }, + { "Firefox", NULL, NULL, 1 << 8, 0, -1 }, +}; + +/* 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 */ +static const int resizehints = 1; /* 1 means respect size hints in tiled resizals */ +static const int lockfullscreen = 1; /* 1 will force focus on the fullscreen window */ + +static const Layout layouts[] = { + /* symbol arrange function */ + { "[]=", tile }, /* first entry is default */ + { "><>", NULL }, /* no layout function means floating behavior */ + { "[M]", monocle }, +}; + +/* key definitions */ +#define MODKEY Mod1Mask +#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} }, + +/* helper for spawning shell commands in the pre dwm-5.0 fashion */ +#define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } } + +/* commands */ +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, NULL }; +static const char *termcmd[] = { "alacritty", NULL }; + +static Key keys[] = { + /* modifier key function argument */ + { 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_k, focusstack, {.i = -1 } }, + { MODKEY, XK_i, incnmaster, {.i = +1 } }, + { MODKEY, XK_d, incnmaster, {.i = -1 } }, + { MODKEY, XK_h, setmfact, {.f = -0.05} }, + { MODKEY, XK_l, setmfact, {.f = +0.05} }, + { MODKEY, XK_Return, zoom, {0} }, + { MODKEY, XK_Tab, view, {0} }, + { MODKEY|ShiftMask, XK_c, killclient, {0} }, + { MODKEY, XK_t, setlayout, {.v = &layouts[0]} }, + { MODKEY, XK_f, setlayout, {.v = &layouts[1]} }, + { MODKEY, XK_m, setlayout, {.v = &layouts[2]} }, + { MODKEY, XK_space, setlayout, {0} }, + { MODKEY|ShiftMask, XK_space, togglefloating, {0} }, + { MODKEY, XK_0, view, {.ui = ~0 } }, + { MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } }, + { 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 } }, + 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) + { MODKEY|ShiftMask, XK_q, quit, {0} }, +}; + +/* button definitions */ +/* click can be ClkTagBar, ClkLtSymbol, ClkStatusText, ClkWinTitle, ClkClientWin, or ClkRootWin */ +static Button buttons[] = { + /* 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} }, +}; + diff --git a/drw.o b/drw.o new file mode 100644 index 0000000000000000000000000000000000000000..57700fd5a8de8afefcb924e12f501da0236c1fb7 GIT binary patch literal 10584 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 Sxae1Y^}|8pg}DN`tou(Nm`$<( literal 0 HcmV?d00001 diff --git a/dwm.c b/dwm.c index 5e4d494..496e52b 100644 --- a/dwm.c +++ b/dwm.c @@ -52,8 +52,8 @@ #define ISVISIBLE(C) ((C->tags & C->mon->tagset[C->mon->seltags])) #define LENGTH(X) (sizeof X / sizeof X[0]) #define MOUSEMASK (BUTTONMASK|PointerMotionMask) -#define WIDTH(X) ((X)->w + 2 * (X)->bw) -#define HEIGHT(X) ((X)->h + 2 * (X)->bw) +#define WIDTH(X) ((X)->w + 2 * (X)->bw + gappx) +#define HEIGHT(X) ((X)->h + 2 * (X)->bw + gappx) #define TAGMASK ((1 << LENGTH(tags)) - 1) #define TEXTW(X) (drw_fontset_getwidth(drw, (X)) + lrpad) @@ -1277,12 +1277,36 @@ void resizeclient(Client *c, int x, int y, int w, int h) { XWindowChanges wc; + unsigned int n; + unsigned int gapoffset; + unsigned int gapincr; + Client *nbc; - c->oldx = c->x; c->x = wc.x = x; - 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; + + /* Get number of clients for the selected monitor */ + for (n = 0, nbc = nexttiled(selmon->clients); nbc; nbc = nexttiled(nbc->next), n++); + + /* Do nothing if layout is floating */ + if (c->isfloating || selmon->lt[selmon->sellt]->arrange == NULL) { + gapincr = gapoffset = 0; + } else { + /* Remove border and gap if layout is monocle or only one client */ + if (selmon->lt[selmon->sellt]->arrange == monocle || n == 1) { + gapoffset = 0; + gapincr = -2 * borderpx; + wc.border_width = 0; + } else { + gapoffset = gappx; + gapincr = 2 * gappx; + } + } + + c->oldx = c->x; c->x = wc.x = x + gapoffset; + c->oldy = c->y; c->y = wc.y = y + gapoffset; + c->oldw = c->w; c->w = wc.width = w - gapincr; + c->oldh = c->h; c->h = wc.height = h - gapincr; + XConfigureWindow(dpy, c->win, CWX|CWY|CWWidth|CWHeight|CWBorderWidth, &wc); configure(c); XSync(dpy, False); diff --git a/dwm.o b/dwm.o new file mode 100644 index 0000000000000000000000000000000000000000..07a31cd0726acbd34b27fa962bf5cfaa17b4207c GIT binary patch literal 57536 zcmeIbdwf*Y)joc50mH?aXi-y(I!dfT5fen4C~AgG$cYXTNRS93gd`9okeJMH@kZ7zdEfW<{r&sh zpG?j<&tCgkYp;FZ=ggV4)+S`dAF;o z*7Zwk-I4=|qukE!M6TPlp_L;14m$Mx6@u#8%j|Le@2WKZ)F!vc@ZWj$2=ai{uFCQt94uy{QX(T<-wM7Nj=SBGySz zv@)gF^*5;07nb@p-*Crmpwx+Xd$tXeEcQgbXXE~HbXgti8hwoGA5P~*Z$>jdbvt(? zX8SV>{b+H_k510m87tWy4bOPG&8XrzGQZ+D?2CVRgCT2m&nZ6389|-Z+LUY!nG=u+qo-oBD_^g9yro1 z*|eUrc!c4BS*?9<6m|FDugdK@k2Do^r|FQ|-aoe|{P4w*j(=u_*L?#>v}U&J{UciC zUlLh-{pUHShHvf0am0nC;aj(k*h|ppfzy#=2TxBNI3005otEb8O`hHH*MCvssfh`d z-oL{S&xVz(-R(My^eZDSb-j<`-rwd&FY7;xbJk= zt7>)qkHg=GJw`n~cwmI|WpNB(f4z8TJJ=K0i?9p6`@$cN$p^j&2tGsQlUzS5< zoi(q2_q-lA^+G&a94FIhaQ*C)3n+~j%dai!Mr+K039kP;su`8u?rqumM{{%` zB6ESpy?A~e$rt-Ky6XA`*GuF_=wAWgQg>S{-$fz^$0|B%YkX*Ea8J|v62ml@+S1fR zu8(@3M!grSy+4!}y$LgmUER!v*jJ$Sx&GC)P?MXU^zZ(D${gzNCThXa{+{&l!1_K& zJ)zoma@;GZo7ROnsigBSq@< z{=U~xTgIRnp_VyMs_qB%lrCKV+S>GY&>6d44>iw;e#(Vfe|oX&y;EMaBj%S+@n=uY z==PI^s8r*-)A9dM?S8BkQhm?VQU#t9y(Bt2T7$7*cF~?{bO?E_zqU4AI>?&KjlTbx z^r=Am`a1W7*BuXrDEgT(CF%CD})m&M!v0r$+9S z7xkAH?Q=Wd46l0|m%dNtM*W)nF~l_`>R*#TIqE0!3o~|{Ta!O}<;>Xly(J%%dwt=G zKSswthb%?CokhE1r-3iJe{ZyF%=yUa`0X(d^|m{`0zUR{Q7%Z4|GToQqFu4!!=vYd zJQkk1w{KQ#{DGofQ7y zUR9NJ;Sm?k%0p)~MvWzdeS3kbSWuEXgf|DgC8{S)j(58f`Pr`bxAc{;4&{{xM`!y} z@*jbx96eUwun*;XHjmR(qeiy|RcwozrTvpc-*6GfzCl(|KFR8*z+%z(!3L=KtL|4iR!Zv8d+*-ui< zDtc4N#k~)T`YXLHCBUz{$gRf|^l8`ogWJEu#XRjeciAVSWB%Oic*b92C6{L>-;epT za$+TygycDr7Ve_@X2=JaoKQ=3Qk{VMK#j7qL_c$ej8m-K~i zdI4%Fd6t>h~=wCuObhVtC#6=)&vi`^)sMcz$+y(Jqjcm%J4I z<{pqJ@%M2O4L?sXZ&})x)7ftpq%J-^^z3Kw5Y>HPlAzk+aiA>90nI)t`7Ay+8FIT6LvY zTATjmXZ`(^ezZ33sgck1lmL*XN^eaqE>}Yyr%ip2Vos^NSl+oOc~Mb!uTKt0sRDPB zqtm6Z#PyVo+)VUzTF)Fy=1}%4CM33cbBet=1zyDzuVO;_!oO24%|uL*PNVVixf+H0 zPDuZWT%t8Z`=9AO2g7~(S%sCg_U#F(#N3j5We7#)Gp zC$;G^DxE|&F3>USrR$q6=ILYtjbr|pd@fVf3|Ud!&)ymLw#HGQc}m?kM(1ZKS5rCr zWu-6ug(bZY#?_=;&RY1k&Ebb(?Bty)k+weO?Rz8>+G6NjVS~!;9sB=F3-}dxu zag_IYS=Z#RMQ4?JyJOzFimG<5+n=2u%ffWrO-;$q4tMqs&XZm5Pfw7MN>b-kGMJq& zjhXA3E;pUID=_um$98jq>N}8u-2MNdFOB+gdH_1n zP!^&(FuU?kVj0R@*PHOI7^#Lhlyvs?w=ZP1FyIbWZ7L-PMQfv%%Faba%wJyvH<4fF zz%9h`Zp{0SyQrC@NjpjNb4 zNF0Y8()f@Fp|4N>oO(0#=6!qS^;ElPN;HppjwJjPjlh0YsUO?mj!RLACa&^tq1mbL z)6~@UA6%~vgVqcrilHs<>>!%d>KyFSq#mn~B=dbg7bpHL#6*?Jd&hr} zxMRMWW~KLiN``%(dimZZs&jaZ&eL;nF7q+PVA|4!$&Gf-yk)z-NPRF`WqMu@CJM;f z^&cL9YGa)NuFLWZR2lYNBJK%sj!_E9zP^_S+-a7gei&%36urOo(EZ#>%F07_(}r1AZhAn>EaOmEIEjmpnq3R^L|Gi7VjvS6_48b zd9IIbj%QqNXUF?rV5OQEPN&ajxL)}{?eIP@Q_aJC5A#=DEVTKfl*|m^Um_b{G*!dG zZ|=h6$>B$L=d_;yeYP7uAg$V;hr3T7$Vu(a@KR)aQTM)bCnGVUs5^CSj)Q$JFSU^J z!^<6zAl?YcBdt47i&yJ50Tod;Pl( zRM0#Y6WzX%v~!2DRog5N79gf?l)EiOClu~0)sYxPA1steI#H1k9a(_LVu_>^3d9Q? zHTePNe&YcM9e zSOexHvSZi4UUQYj$?1}pokTSN|UE$0#Z*e6pwZrRvMtSv~ zDc!d<9IOfSEDmocc26It9~)uSx2e;CpvJ5`7bf0?lcJAN zY26Xs|1bYG%3`#uX4dc*KY(@PcWV3miU~2lixl`zkbPiqVi_-#yn0eaKaG)FaqgB}Ib1?zR@jk_r3s{6JjT+~Q z{`(EQLfXHh{TTEopJBw=O=Ye3V_BdcW@)s<*jr zJ*JXfRsEQ~qV0v<{_Sqb*lo!@(Z`W{+N{+3jMV*Ni%jiD#?e&rXg)A>5`(srcOuz? z9Z;3oQXpQQNA;g$yOyxSyCH)KHBBvgW~ZK7NOmB{$%}_(v}niRX1&|h zxgKIPcTrnTRlJ-)FYt&mNw@jvrU?<| zmbj6`u-;Zo4fMW%@_(0_>C6g0ysD;XSG?=LIu4_v7@VwN10Y_qEGPL@UJhoRSzeWT zHgo^36E}Cf_n%}K13eZ`-5AumuFmV<>85%j@sd9$pTlTDJ1}~i>q*MI-is)Da~9JN z-gDA5$9tyS`-k^B$~5}YU;J|HYwlh-Df}zkyqKNyX(VjM_$ZqC1ZDV@^5> zPi-R0A9XrV0rz3)cOu^o<1A2H$k9_^Y9^`enK+Em+40dn4L`2KL;x$7@WZe9vz@Y0 zHNSPLygyM%tEFRQ|5iPZh$}XT)`Z z_I*|Q1>8RgVIzk2zEIPXfA1SDSBUw0-0SX1tu4l8G$v?kBk7N*L-w|*HZixib#H%v zZ4b5x(GZVAgM&y@`Vs8fPDIlc@SA0}o{zsiy_dEowY}FpsS9Blxea)z(l3usBj9w=&IB zYbQ^wnmlE;r`A+4Pp_crl`kLbK)Tww^Lne%0_OEx;(Gs7g?Zn*@HBe2RaByWw7@-A zt#^}{)9ZzANwgGQ-?>pYS%dgu)zP`B0~v{<&~{P>GLwhnhU`=1O^5CSU)md|KAKt3 zn=s4jg^4k#r!FJ0xpqlyI-Wj-6L5~oiJ}bnZ6C)pt zcYWMk+>toZd&NEXru`kH^C+xs{0cB558JJ=SZ@Z4~+w%TV zYV|^t=C;J}xxMdTbzR##Z4Vqn&n@&P<{66pTVEwjdRaLY_pUI<&Q*P8_>Ao<5Bn@! zTanwB{aN_3r#}tns=9+aQ`;AZ&va?#-iYTW5R!DB4Hs$Y@piihoi^#`!b%NoXPKSLrDwI>fKZEQbrm zoHOYTW2nHT#*&p5dHAwzsIW|Nr5>3v8nJr2Wu_)kzYTQgB7Khe9#9@fq}Z{AC; z_W}DR@kd%L6*`IE(=l>F5{tV;e%_;)o>1qcr1~l(<-m*;&vY=s>Qj+!v~wNqJ~q?D zI*H}!K59JgC=Mk>eLU5attp~~C$8cB%uUpOY4uu+@qdgp{<~P8%T6NCah^PdtruEzY!^&e9X)X}(AmOc+?yyRpu1#9Ev;d<~uB`Tm>z$I$TPmUZMf%Q^? zw_x&Ud>WEJy5o4R%69Ur*qkjmC3yn5j_wTVsbaWuFR4n=-O=7%=;TvZ7iZ{w%=A-l zQ1AN;`uXrWdX5Xz`T~q!1&PJ@A4C029T=BfL>03Y{dD>bS}0b_BPiI@Q!6SdOYc49 zMD!koE^c$C7ZEv_Z&Mo|ois`%uobQr^yzo$&Zk<+-bEvT)_V#bS>r+SSW>!B-91+c z+>(}s$zkbZ{zk&O>nJHJ(2L>gP$`GzdGJ0hGEE&2_IA}Mk@zz1rqQU6p2&Bxb-3Og zcOxyFlekGTw~4lX;Xb{)%h76gmmalK`>lQ0V$=()liiYclAu$+}PKcdQ8m>5+gCEK=oLsW|;4!H@-@_Ra$k`@vEA!tF>BXs+k#bf#Cka9;1{=|RAEG4t4wINd+Szn&bFdM{kEGjV*;&P$5= zJ%yz2QGQo-FIw9h#!Wq}+Ei!ahy7`#sdvL}syo-Oxgn?I*~HkQXXhX#F4E0I(!C0M zk&er>q9EK!cY0@6KL(}FOn*-CxvJ#+iYduaMQ`fc5#if<^mA64AcD^K&BPqnUxsa}J&99NPc)G(>;PR<;8*9P=K1Xr+%}ky zoTBfqLsaXe|V57+)4Lp{Tua6TX~sQo4TXwI&U(nfj;L}h>aPYTQ&3I zD77kMyl9_V%W;hA*HKBQeNI_a^fLA6I`5-b2FO*6PQ$|oGN|v2sB#%vx0zgZV&vNy zu0J16elt<(cB$?6fnAQM+VaArOI4UhPDEZ0p8nUO)sge(_C2Q7MEBF}?4PQ;9|60R zs<-5cd_nphxRNHZk<=RObYk9#HI{lZv}hmZ4w|6%bWt8hQ^^bq3o;BzZ}-zbZcX0ExfW zO;3G!sE(dQ0c9C84b`N$k667hoq)a~n4>hN|3>Am&*!0f8jmH(LrDjZGkhyHok7`x zj?;$b4Rd74Th0(&SF1Xv%&ElC8gb8Ey*hb8(Vn6=t8^wZ{sfVttjL=2=`Rh|8f$Lv{Ev+4iv+2>Onv${{+~86sV^1P_W=(z-_IdX2JaOlJ|4Duc z4^xatU7d#qM)xPO)fU)`1KSUMmw3Hu##XfFrQKe3e&4sUl*iRAYviTvdMQwC7|)`L z_V~5MD)Tzu<0;>z;U7MedM2~?A~lmRNA)2i+~7k`+>QEG=)89&PVx^+?G7itG7}x| z*Qpave?oH%t@rZY`5&vESFLBz&0krHKK|UAU%QE~y58P7sl6Fqv=l7aUd{C`8vSnv z)7JK$sM9J3VNfA;;dQUT=cz|kXBzI@K^GS|*PY?|k5U`PC>&mQ6BU^w90k)eF&y zj-o9b-LxQBEdo3h$zd&84WM#{baFJ zM?CO0xNt#dqShg|?Supx874gXs{|cXY?Yq+UPEsM&bd}s>WwEn85Wn-p&CLeJw5M2 zmLilT%3A@QLhorv6w{S{sD96Y%8 z&y|O#J{}$$zb)!LMN)X|INx700cof@M6XRfQlgSq z!tqa|p57%oH##>lDM~a zVY&&fVNb9kMTq|Wk36r!rpZBf888tU7-R-+rC<$(y#h>}R-uzn1*oXdN=}j|4AEU& zU68JQUUeQxn%aDXsm&)Cr)g@#Hv3gEJV(Nh#L#mj%~-D0E~IIrJRFn6Y<+cY`q<|{ zRMLZG7vhjeJy@O2CKR(QD8^#~@1*BGOIg(GGL#7xN2*M`+S>FdYRRMaedqPg$8rZ9 zvs>~z@=l^2J@Y@5M`^KLm5!+n{+;wF(5278Kfk=x^?pIJMg4xP)AiKS(DloqBBhJH z97{1wc)gS=c5i-DdMz~SwZKPMyGoYhSYA!XWaA|1ywtcdrV8WA0*J-E7vQR`y>;kD z2IgkiTe$v1@-REw7%~QKmijGl8y**b0j-voHQ~<9xJV!M7BZl2l|K>(2R#qZBR0ekV0_?DnV|KXLyys@pT^a*ux-)m}E0r+FEh z`=6ba)tQTkxVNi+`@pl3bW=#zpmK zPPF93@J;I=n^jee^R?Ib7f<%9@Z`bMB`;pnl2tVYSd;9UETB2d3BLXg&2Opk;{iF$ z_;mrKzw&$Ri_DLCADpJYU$b-nYuKYs9f+(wD&}oIO*z#Y0Ixf@Dp3CesrwT+rIkKjF+UtnJm8_i3wl|HywIR~8>o(@ru1RT^mUB87I zh0#IDV&?x#gZaAIV3O2e-hU0wQ4f4jTlopK6|7d3p=M*Dn^$@XOUMAe zFwz6|_*w}bTSzZ>fi`Bt>qY~{?cumQWvi0LAtFuSbJe5TO(4=s-OFGTxB^!g_M-hY z&p5sF=>oHjsi8E7s!2jceF7Q;v4Q5J;ohg?pT(C%y;t|Y6LvrMo=x?iuy&aDDInjC zag9a6Z|{I_G2zNd&POkwjQCyDhv0!0;=?1LgYDol z_u^^#J8T2kbw#uzh1S!B8)4XAA80%-#uiqpp3%Hn8qW>Wy)U@&Ts*jo#dSZhj^DNA zkaavo8xXQmNMAzxd;jY??l^^T337i>XjrxUoJie@mPAuyTV&PJ6%8$`BFpPm)Gfi~ z()LJQb6aCw!a_JE0#D)d~sc(t~t`!*4EN?PNc2z%4B1EB2wSd(0Ja-4HGmj zmm{6}x)rA+B1>1aBTaLpy0W6ojmIKQbt@X08{5ut=AGOypI9|> zS2%N~FQ}R|qh?0gjCeI&#LDC4HRTKDR9+mLF^7QanrKZqozz4xDqk>dM%nCYXTing zH4CC;HI|EHGnA%o{QjSb-S^zM%C!}K{? z@9@6E`(MCfY{-|e`PLOR2R)Iec8>eZs%tfQ`bH=^%=O;GoRw-nZ@E(fJSa9e4;^x@ zdu80?pnX6++SK2;n^F&cv%~dUd3#k$%aCSr4v7&1H0UxRo{Q58Oy;Uw-_64V5@Y!b z*!t^0G2Xw19r_z#19$4Sv6VW92W3r`O{K-?6g5ezJJVp}VF-`88DBEDLAo79s%?CT zZqBg~{l7R_xvH8r;NU~}<;fWN_TWN!a&-Vc*}|X90iYJ(hhTXWU-HJBLN^eseh$_% zR3eM-eQ=w>x99a^Sn8Uqfg+=aBQeua*&9038S)etCXA1q2onZ&^f7JIi(;(aRN^5f z>F;7)0V|F|BAQAmWnhU9+_{Kuq6}+WFr`EsOOp;It~3tSqQ#jWd+#>Adc;VwGx!W8 z3rY_&xB{W?9z@g}Og*5+p5Y1V>yJ7vwHIZKWD`##u2Xs+#>qxM?7@&VL!`!T!%sUyyREn zms#=DBnguErB=M1zQKyO(>Gc1zkfdd1VO^zd~m#Ka1#GN<$pwgf5dl583Y&oLGhwLC|>jj#fu&_1v3oD<#W*=6fgRN;zfT@yy!pM&`qZiz83vK z@uEK{Ui1gWi~g^%J~@)W9By1y}%Y2^f-@=&6OEi=_3#8N^ zzQy?W=r|*kdsAjKly^f`c_@!DhH`Jn%&Zz2$|(taq;M+z1D?ukM6#(+ zouksN=lJhZd@R(O`R!0n0Z#8`d?p={?uN_@LwTvJ%1~9-IT@imAjIG}B>OzePNK=x zRLbuxlFd3ib7UyjB_kn@T;?PC0L$KtbIm)AWTWuSI-zwD72%26Qj!Pf&6!g}dEd;M z8j5sfPYo5^G%OY>ykU4*s5o_43^rYq5h{*`3ZtO{NI()Ppb$w(C*1?5P)GleZh5G9 zTBvkd$c=`oDno^rk|6o&R+jrd$*DY7z^rentWvo?#PQG45gNM4rklw28?vD}1)EB< z9?1+90720X*g*AkFQ+|?@}sy_zAHi-Gcvu30&J8tHgjyGdnx^97nNU+a)LIj2 ziiQ@h2sKrOTI1?GbN0wk)2vWywHBKmYMK^mZBQ4pLrvwOR(BKz^zuWwn%ddR zY};`-r#z-I=czIv-|pqOHwNM|pGQT!h$jTb1IXYGA{|0E)TiWLRHg3wbMcir;*=UD?_F2q1I$Kk{(ju)F8h%lzDsyG1 zHWpe~AF4$QZcbiu^baFk$X zO{n(b&_XnTsZ@kjt)bfL(88&5d9ZdpuIy(13et~2HvOHk6A7rmcrjp+jvsRvMc_Gl z`lrfnzLHo8o2LMp%<;1a>f%zW>ygYWsfcr3B|I~fcOjr_b$uSt5JCC`r&r|!{>)2N zGz|z;>vL!vxt(QJ-G8aoKo!^}t-$3yQRL9?DQgaq0kL z6@-xu&`bQe)LA2_abYI#m4p1$w-j=GiiA{oW?oN~xfqvmj$27_(`c+Jr@n*6+qu-P zd(f!14r$rZo~;ng$7emK{gBcspR0ZcwJY<_+J&JU(!Y`As2sE$m5MI6=Q-}efw;`6 zVtoYIhaBHT@u*kV^7vDXc0q#=^&z=DF}j6hP>pZG0A9LS^&wH|LsSJUZBczl0a0<9 zx`8zAU_Xc<7}*)<`&wD{Jgz%8(3~WdRS_z@#_0MoKQi-t52rbu(xA*!nOXT6u$Ssd zH^-e%x)+6VFJb&O#;IJK%R{*}!0CK1h?`6a{|lE8Hm;O z>wb>En&Rh@?a;61EYo3oEXa1MH)&3*+Qr4>Lv$!P(H<9Z*)(}W*v9#~`H*uQHI~yH z=NCb994e10=2H7XwV~YETpmq~t9pBBD0e>N9gO#p0ht>^xzqKybUWiy3CG+umAPzW z5BCqz9zDN)oMm=oLk8t>klm`kucSFhJhUMr>yxa|?HSR~-5HrPaN+{WoO7r-1hs=a z-Wa%$^sDxWI!*O7LQ`i{Li88L5bZ=D7UwiKP#TmEeB59fO>L!>WtNl7g;a)^H>GGS z&5RFLKix;&$+F6q3qrXxYOX`FhZrxSxlCZbdG2+0W@dBfK4{s9Qr(14H_q?Qyd2o& zz~Tm$_00^RH3nJ*$;^&J`RFpJp2C|S@6+7je_=-@*k^liz zmmM@8faXI6YAV^zCx_hi&l*^54o#XBa2F;EOm?8*32WB@SoIsY3NbF%i&^4W#=pnc zvKGx}{5i(C$vES2odJ79vm7ZM>3xOeuj1pmNfTf!*5Co@jm3U-5 zDC^o9;3R)LXHE3ZVfmXGr#48T9v|XS-+{q7Re1?nGIpG1NBOqDOj z#ZO-cPWH(9Q|#|z`Btji22|>+gaJ&(Qk^HqhS5|9f z;Jfi5`|oD|NV)u(@jEU2ufU1te9ov^9|P-S{9Ybs>u^nBA3nstQC$tzlYilwcyibk z-{*LGa)I#wVqC3t5l4?_6TY1L2DOd_elp5~`0ugoJQml4?`B>a3n`q)JhxMWLQv~i z9LKZ#c7+bwdFF7$1wNjs@R82l3`h7_%<{CyL_z#aPpK2ntrk8N z*OcGakI?dJO^efu7~jYE8#>ylVSMM28j$@O`f@n&s7Vu|u3-7aj9vnhma+*C&{>4KOycrEdQHRw4hoe;q*9`f2Tm>YJG&$ zQy4#PyvB?5!I{MPY{uVZd@AE-pQ-`1_QB~zjQ`hZ8lTMaa~OY>ajsrYBjfuRznbN* zWc_4v+0E%A8T#Zsmj5x|z*KX2mdSF4 z^V#6xL&cNhY~*$)Zbh?)DP77bB zaGpdNaUS!V`Jw12<$uKS5$&M0ng68!?pA7kNvWIW%(-(>tO3xAh!nm?N1Z;Zz+ zd=KLbEc`RZS6KKz8Nb@X`x*BveAqCuVwm$|3m?U}dQXpG=n;&+V96iD_y-n#9B{kt z5Z##p_}2pP^8@f{0r>O)e0Bi7C;)#8{o|qRzcN66O#ps<0De;d{(}JgfdKrW0Q`vn z{J8-9tpNO!0DOM{J`6+Aq5Srx0Q~p>d_n+zP5?e50IvjLnl0eCV1|9Sxa?Ew6T z0r<}Y@W%u27Xt8i1Mp7*aGC%gs=RUo@Dl^@vjXsG0r;E%d{F?tEC5dh;NJ?se-MEG zEC7Er0DnFJe=Pw2YXIICfPWHz)BUhRl~;cNJ{$x4q2xye;9~>u2?6+d0r;E%d`SSl zA^=YX;NJ|uzaN1AEC8qbbcgcK69M@40Q~I${DS~|e*m5tFzy@y{77S-ulCw8o*o?_ ze_Q~5N&tR(0DfKoeqjJUI{0RGbe{K)`(M*#kE0RCRO z?=&gt>LfUj29FLPEju1+M>cc!mQE=@S{jqSF^`b45-dCLl?y|I}N__RC8)`q%7 zQImsjekWS$o0m4ONI0w2H@h2>%a^a=b0}yNoT1gtOBXrqOPAC)H8(i* z&5d;{lC8wv(7MK{$9KjPjdX=CT(=|>?M_`=TiuE!3aW2ev3Ti{WLu-t)<|CyW~GpZ z{zj*LmDAqjP(GX`jfu9FmPBi!&7q^Vkyy3yOB!3259XuYsZX}Gx3oD8ZFQ@VFC4*? zfKQx6-I8{vxvjOX!CBP2N(9=Wr)5>s(gtOS@?d*oBH6ZtT%a|qTHXY=h_lF8eGS9l zkwl}jYIz-8>kMRxzY7mfuV`poNkpJr+)|%xN9iC1WYyKu70$B8HLY-fkgrHC$2ZuQ zEw5`|<}7KeTZHI#XL(&~E56^3udpv&yhg!`k|;|QU&GQiU8aqzQGku&U!^YD+}w^5 zz|)i3wacLeUz~RmElZX(H!jAv-4papepseUht8HSuB%TtOIOsdfCY)hHWns7E?e5% z%w^QxTDJ-%OkWnSUyiTl(}^mN6*`ab3pu>Ct)+D$eA2GZ3fY_FGB`rJHnB8;66U8o zVSv`4ygG4dds`hIrU8`?utY3zP z>cF_=0|h`rB(nh3W=+w+*_rCBeoY;!0Y^?&XDeFT8V1h_2e2aJ)R`DBE2Mu#^luXV zn@s=CqJL-8zpv51V)|D?|B#seD{*}7pU%%z|5dUgm99u7EK(_pRMH}qc9KdvNvl$6 zC#kfPRN6@@?Ie|Ul1e*CrJbbGo~hEFsnVV~$yrblpD{HWUod0Zv}(MHp(Z*tUcLa0 z1>H)b0lk{DxU~%}dNFleE9#o@0*R%G)};+j?QE(Fb5y-@YGb-C@MR<3D}km7hPD;; z=-g_nQH15HaW7b)3VuO-)3OEhx(cVZOgcB=s$R1KNmsDi+L_75wl!5PumNqXcIk@7 zwz}nYmF>~`#L|_G1AvmMR&BW5shx(l3})4*3T>=$F%p;Q9IT zHP^MbyHG)0-~zO*c2u0@jp|C(sK&$sw5?T38xj~mAfh@+I-#LLA#jFMJ00~<^eK9| zD5H8f9X*xyLTyE3V$O6@2xFmt;9TJsx3n#_&{ceCJGiKpRVUComZ)pgc2(Jl0Yi5?O$??X zFH)`a*zMFt(Kc48dVrFG@L=Tw1OCX!W>hOxf++35Rt8~R;?V@uqDw`Wsa!wMJmz3_ zGH_wkH|;5jS&p}kP~)t}TS?$6G*!F@1`VC29ktc^bujI5jn>YJJhTA>r83?@aN`mLlYT!3O zUiAK+apJhwz+*&!K!^MA5&7u`exrfUVw`w>X5fnqd5WX^&J?aQGQJ{l~|HZi*DYM0H)_Ft6$Q~N_5Uvh?jc_E z4#WNj1(G-M4-EVph!gq!j8lGpYv2!IJx4+GN`7}*`2AYU`77hZ^DsWb-*4ciAI9-5 zD&ZHN*%mJKd9{U0Io`oI={5N`TJmE5Glu-{3_D*Akl$^{Z!+XRu;j(goKX-$AbZUE z-)!KIAWrEP3(6xB&cY3m5w@XWXtQ*9FM`(!hP#A%6R_ zffLvBWF*1|7JfJP|D*X?~g28o_D;@!o{B(8K?Z3{(RVy7rmP;T>60>7B2R@ zY4Dr={KS$Mp5gplrId@jrN6 z^EQh|__39YLZT{m8d9p?PcBX-w_SXjRTxG~VXYl;Wz#lR2=PVxC zU)W{g;)i~N=hp_$G5nmiUA|Gq?fgzRI{{zAry z{{?&`U+tE>*mJ!hztfQKvgE~{M-AM}?|uU(-Qxc*EL`-C7z-f;$(QhdnQ`LSg^$>u zZ^;YKcthT_zrvCid*)cU@GLTTUNZEqH*m9k{m{T)Hst#P`2S_$lHXDM{6FRQj|NW> zuJt+V`)504vlo?K$ zg^OO7ank!LKH|?B1AooH=LPUAGUQ)32IRO8Namwra zhTbvx+F-)X{^~f!sk|so_|Gup{{md>pKahK&wK;_t0BL_z#lR2^#*Q^r{85<>=8fw z(83?*{^Vf;|CYi3q{06;1AoSl&jv32z)KdM&HRU-3?T%vrxTxQx8`7d!7Yc+C7hV#!On=M@aKNAME^ z@Utyk@^zktOTH=@r+g76`Kq$yr5~7M;lh8pg$sYZ!T)E2|6WU8`n?A%TzEDcJntDi zFIw{ApZ5arBgP{!f|RewM*{H50KC@1#SiTkeka$r4hxt2M4p9<{LL0F@;|n4nJ?XE z;llGP3*Vx%?>xjfm3uEfQtsWByv*}Qo~jdy-$d^b7B1y=G~>i?&eK)}$afg>=KSg= z12^XosuG&b^o^dJ{vpt?{$xFGHS-9w(Y2l)`-oiz16XT@U9ACa; z;AVd~VgluMFu%fowuMXktqQ;s7A`#Bvv4WLUs$;CZw|o!VBx}ZY4e<|7A`!y44#h+o{tRN>^Fv;r3od!W0^nC!iE1h#woua z8~mqO^0zS0#TG91N6*#*qF3;l7B20j)51l5mxYU+y%zpH+w+Nq-_Q8J8K->h#YgIM z;n%c)*eU#YCAkWOciI{*%E-?Wbl~v^WgybehdFlXVV#T zjy{om-Ou<*7B2Z6&p7$VEcZ(c`3}TM`OY_Rvm9Ft9Hxge;4%H2m8JC({{#3)x&QHqL431;KYQdL-ecf(V+Qd@47@J@ zzn|~lk=_>#`Lp=`1>su^{N9srfk3#q9{J%o1uNWKFMP?^&-oifBwsvDQ0?g32F~4; z;`xVxv)h#Xw+wtb&M8niQlBUMH3TA%o%iA+_&fp;Nd8uQ1aBk|f#mn$BlwjBB9Q!j z_z1q5Km@{X!$*J4{!e@a{|JkN#r;qyiHyj_thXTpJhL7+(N+1HsntHb?bP!+15{{Xn~ zPcd+kPq6(_#%+Grk{AA&2L3~Xzt+HsE1&u22kqLGm^Y^m6%`d-$BJyJYKMnqS z41V>cJHws{%s(s(AcD<5nsJ-|CrIx(##4Y?S#qKyW19)mJdEsfW@b{T#X#mevmi&h-zt)g9_mOU}@; z-{3Lryw$)vApbZ%6z(v1%yr*ghCFq3d^@Orvw@R6&++||9R^N%iHpLU7A|@}v~cmK z{Du;7&{|URb?RY?ZlGKy@qN}a4V=?YrY|G?mOKYfPdfOxkuAFKell3 z!@UO2FCi;_c)*eu`yVvqX$%p0dfy%ev0wO~HssBEwLL)obwi#wgnxH{{NF5G)*T;N z`2ET{>jbm=4#l1sPe_z5e>+GnvEA5@*Oyj z@O2d*MPA-p-D=_T-uBf7PV*&szw-tIr?QdvP;a#G#)t-XTKJV`YhbU1%lp1%-$v|| z_nsFLfFQWMH@wQi<^Acc7Cw+K1E+jBJP+Jp;FK?sm;D=xHvO>Cl9%`6@3e4vU-{ku zT-NmzO?u`1`-OCYVB=L5F7NSg4Zt^8xRm=w3m59r#4>p->ed-)iAf4>wr27 zm4yp`tAz{y1`8MdjTSEaJ1t!J_gc8{=kmCJko^`e{8bh%{H+!){2MHMzRtp#Y4Hho^8!cS;cUrjc@3nB@&*ky!Apcvq@K;&5 z@V8pH@Ncm20sAdn_;*_PbK1QF;~3dVx7z+iClq)b5PTT-YdIDkW<1xxxl2$qc?M4W zN3wjxz&nALDrx)NJap8??$`BPaw!bE~kWW2z@36kIODm8GjM}EJn$-=+JJa=2T{QlB? z7B2hj8!fzyc{W*iIpaGGoFMtVrQH@Tzt^(Y!sT~g4p_MSPD~Ct20{EOzw;EaaQQtX z*TUs@XsRq+ez#_!h0E`?v|9M=@!F2n7B0VQb+?7f@AS~`P*I=*`A2?l$)4BA??pu* zLxE)3#p-&p`ag)vwQJ#Y&xyii`Y^yF{Z*@lzrxoyS-AM?ZVQ*+=cBa}1+i0ppKrT{ z2k_0D|J@e;3gfa*FFdWBY1#i4{O636c_4DE#ufZh1V95?p@Qt-->joyxw}fc#ipPu{oW<@ehT zSh)08c|89S9{K&YVhfkwZ(D8Q(x2RE;f)b(&qEe2>!6n{T-JSQ3zzldzb#zWr(<%o z959CFALbmb{F=@}51>E8}&|DD5Y~Wu7eW-xFNs+vfZCC{Fe(?zDJh{o8Hf^80FI zM-SC2<8qaS%l<>c!sYkU?zV7QM{lxl*+(ipe5hX8kGk8ylUhXopNN+ZC+ZeC6Y&mO zeQc7mw#MeViR$gj6Y;kFI%nb{yzhNtTMJ!~coE(TK5;+@2;Q=vY-LCZA#$R6qpc0L zwG7~jZh*GFJ%RUQvkqL~CEE2Z%kif6gfkH@F>jn$aq;Za_4~^8^^z6IiLLTFW^GMl z(}Kl#F?FMv&Hvl;2oloJ$=%-oO(~zU%ugDWdfpnQ+0xn3#PQRPecT*)dLc}$;xB1Q@*n9Ce~ABTff1*j|BecP z2%ESc(^rlYkrO^v<9I0jJGW{9>3>N->9+MR2X-j^r89N<-ByMp8XoxHgtJ5G&*Ozl zE&HGJQ`czg?*K+BtYUH^lreDkajrN5oi z+x1nh<@jSxUnmOrcqga-l7)*q<@gIuZ;3g-;`BBy=>&faCp2}i{kM_R+jdF5CH+e{ zAx=B}ZcZNwiKIT->Hh%uQ03oBH`NeizlzGA%1F{nxg1J2rE?ak|IP*$JPMaT#m7!h l&BJaxlybvW^dHaiTJ6X7AFc5Zl|J%@O774*D$HP~|35HLMHc`7 literal 0 HcmV?d00001 diff --git a/uselessgap.diff b/uselessgap.diff new file mode 100644 index 0000000..d9cacbe --- /dev/null +++ b/uselessgap.diff @@ -0,0 +1,81 @@ +From 58a5ece9406ca6c90dc362617c065e4aac19417f Mon Sep 17 00:00:00 2001 +From: Cyril Cressent +Date: Wed, 3 Jul 2019 21:33:45 -0700 +Subject: [PATCH] Port the uselessgap patch to 6.2 + +--- + config.def.h | 1 + + dwm.c | 36 ++++++++++++++++++++++++++++++------ + 2 files changed, 31 insertions(+), 6 deletions(-) + +diff --git a/config.def.h b/config.def.h +index 1c0b587..b11471d 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -2,6 +2,7 @@ + + /* appearance */ + static const unsigned int borderpx = 1; /* border pixel of windows */ ++static const unsigned int gappx = 6; /* gaps between 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 */ +diff --git a/dwm.c b/dwm.c +index 4465af1..4545e05 100644 +--- a/dwm.c ++++ b/dwm.c +@@ -52,8 +52,8 @@ + #define ISVISIBLE(C) ((C->tags & C->mon->tagset[C->mon->seltags])) + #define LENGTH(X) (sizeof X / sizeof X[0]) + #define MOUSEMASK (BUTTONMASK|PointerMotionMask) +-#define WIDTH(X) ((X)->w + 2 * (X)->bw) +-#define HEIGHT(X) ((X)->h + 2 * (X)->bw) ++#define WIDTH(X) ((X)->w + 2 * (X)->bw + gappx) ++#define HEIGHT(X) ((X)->h + 2 * (X)->bw + gappx) + #define TAGMASK ((1 << LENGTH(tags)) - 1) + #define TEXTW(X) (drw_fontset_getwidth(drw, (X)) + lrpad) + +@@ -1276,12 +1276,36 @@ void + resizeclient(Client *c, int x, int y, int w, int h) + { + XWindowChanges wc; ++ unsigned int n; ++ unsigned int gapoffset; ++ unsigned int gapincr; ++ Client *nbc; + +- c->oldx = c->x; c->x = wc.x = x; +- 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; ++ ++ /* Get number of clients for the selected monitor */ ++ for (n = 0, nbc = nexttiled(selmon->clients); nbc; nbc = nexttiled(nbc->next), n++); ++ ++ /* Do nothing if layout is floating */ ++ if (c->isfloating || selmon->lt[selmon->sellt]->arrange == NULL) { ++ gapincr = gapoffset = 0; ++ } else { ++ /* Remove border and gap if layout is monocle or only one client */ ++ if (selmon->lt[selmon->sellt]->arrange == monocle || n == 1) { ++ gapoffset = 0; ++ gapincr = -2 * borderpx; ++ wc.border_width = 0; ++ } else { ++ gapoffset = gappx; ++ gapincr = 2 * gappx; ++ } ++ } ++ ++ c->oldx = c->x; c->x = wc.x = x + gapoffset; ++ c->oldy = c->y; c->y = wc.y = y + gapoffset; ++ c->oldw = c->w; c->w = wc.width = w - gapincr; ++ c->oldh = c->h; c->h = wc.height = h - gapincr; ++ + XConfigureWindow(dpy, c->win, CWX|CWY|CWWidth|CWHeight|CWBorderWidth, &wc); + configure(c); + XSync(dpy, False); +-- +2.22.0 + diff --git a/util.o b/util.o new file mode 100644 index 0000000000000000000000000000000000000000..3b48c2f667e0d2c6574012f800ee0078a6ec0b61 GIT binary patch literal 2256 zcmbuAO-vI(6vy8dl!~RTzyX7Y9#%sW+)xuEsY(hISal->YD6xzl&v)O%k9>Hnurk( zP1A&f2M-=Ncro!{qDK=NJ$U8lNj#e10S_JwCiT7D8JKL^i@s#?-u&MG&CJfs?mnK- zCS8&Q+$0!*!ycyqu_K3Z#0n$eg)W#=EBoq`AKwtE6;mEoD{(oZRy0}FDp5J6VKl#9 zH^aVQRKD#CYI4yRd@iq{+!uT)Z&?17ylMG2@>|Qlm+O}QAaA2zQmgH!2QW}^z=2R* ztzO0s_P(mMb$O2^`qWxn_N%q1JoGs#``w7q_YSdi;5!Deb`jL-d5X+IwX#DCc3TOx ziqYDmwnn(zvlYO+MMDkC?RIW;aGA@L9d=QES$UEU@q?mCR-fsW8CQ_;@%l zFm?S#Fc1nUA%)fg?brg?Xge_lE|BWP_?}Cwe+(H}ukAp3FbmR(U+VXCxHnMThx`=F z{U$%^^*?o8_3p9UFw31}xtm@$Bh4Mn-wr<;&9ZF=t2@lvqY0OSrMl2}3wmp9$WCDM zGmYrzIht{$1;5aOkF?;?7W`TZ9z#y+=j*oi57|r$J(SH%R!M=PjSs<6Mu(EQq#Fh# zrnKp?Q7th&IXO2GPsB&Zw21`VPZy0$-b|y)$m)4W7t3Y}idaxEKwrt2pxf66$~YgH z3mfh7pN4I(38K-R>A=SMJA!CV{YM*HdO9<%{~~a@Yn<;0oNhhmy8;*WzXX0<(C-VJ z?gSsFgI#o5XPdx1jMH;bMJHF zOGz^c%3`Smicz2r$?+uxB~{4f^gK%P1yfh>6+K%rlc~F`eW@w=PUa^AHZ_jildHUBCOxd_KBw*UFgRI?O%ion14Z=jpk+rbXFAduL8Y?WM{Au zXL3T8%{nJy+=&N~)0qESAHrH1^BgwO`22jmJjdtfK7t8~t&c4ip$txn zFj1Q00ueUR-a>vBHNJ=BuaS-;8Z>H8#_vp$Q-X6L_25RK1I=TGl3 zujl9AY;LNf{|Z@*c@M@kq_dvJbe=sTh%h)$9l_Xe2Za6;&FZ(=`X3%B?Z8?87wdl# AdH?_b literal 0 HcmV?d00001 diff --git a/xfce-plugins.diff b/xfce-plugins.diff new file mode 100644 index 0000000..c789daf --- /dev/null +++ b/xfce-plugins.diff @@ -0,0 +1,125 @@ +From 4e33fe0d465fb24f6b42d4a1fb63d4d7902f1986 Mon Sep 17 00:00:00 2001 +From: Gunther Klessinger +Date: Thu, 1 Jul 2021 09:19:07 +0200 +Subject: [PATCH] Supporting xfce4-panel in dwm + +We treat the panel as special window which +- never has borders +- never has focus +- always has y=0 +- is never shown as active window in the indicators +- is shown on all tags (via config rule) +- is ignored on focusstack (MOD+j, MOD+k) + +Which window? "xfce4-panel" - configurable in config.h +--- + config.def.h | 2 ++ + dwm.c | 28 +++++++++++++++++++++------- + 2 files changed, 23 insertions(+), 7 deletions(-) + +diff --git a/config.def.h b/config.def.h +index 1c0b587..3b9e7d6 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -3,6 +3,7 @@ + /* appearance */ + static const unsigned int borderpx = 1; /* border pixel of windows */ + static const unsigned int snap = 32; /* snap pixel */ ++static const char panel[][20] = { "xfce4-panel", "Xfce4-panel" }; /* name & cls of panel win */ + static const int showbar = 1; /* 0 means no bar */ + static const int topbar = 1; /* 0 means bottom bar */ + static const char *fonts[] = { "monospace:size=10" }; + + + /* layout(s) */ +diff --git a/dwm.c b/dwm.c +index b0b3466..956d402 100644 +--- a/dwm.c ++++ b/dwm.c +@@ -175,6 +175,7 @@ static long getstate(Window w); + static int gettextprop(Window w, Atom atom, char *text, unsigned int size); + static void grabbuttons(Client *c, int focused); + static void grabkeys(void); ++static int ispanel(Client *c); + static void incnmaster(const Arg *arg); + static void keypress(XEvent *e); + static void killclient(const Arg *arg); +@@ -710,6 +711,8 @@ drawbar(Monitor *m) + } + + for (c = m->clients; c; c = c->next) { ++ // prevent showing the panel as active application: ++ if (ispanel(c)) continue; + occ |= c->tags; + if (c->isurgent) + urg |= c->tags; +@@ -793,11 +796,14 @@ focus(Client *c) + selmon = c->mon; + if (c->isurgent) + seturgent(c, 0); +- detachstack(c); +- attachstack(c); +- grabbuttons(c, 1); +- XSetWindowBorder(dpy, c->win, scheme[SchemeSel][ColBorder].pixel); +- setfocus(c); ++ // prevents the panel getting focus when tag switching: ++ if (!ispanel(c)) { ++ detachstack(c); ++ attachstack(c); ++ grabbuttons(c, 1); ++ XSetWindowBorder(dpy, c->win, scheme[SchemeSel][ColBorder].pixel); ++ setfocus(c); ++ } + } else { + XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime); + XDeleteProperty(dpy, root, netatom[NetActiveWindow]); +@@ -853,6 +859,7 @@ focusstack(const Arg *arg) + if (c) { + focus(c); + restack(selmon); ++ if (ispanel(c)) focusstack(arg); + } + } + +@@ -964,6 +971,11 @@ grabkeys(void) + } + } + ++int ++ispanel(Client *c) { ++ return !strcmp(c->name, panel[0]); ++} ++ + void + incnmaster(const Arg *arg) + { +@@ -1049,7 +1061,8 @@ manage(Window w, XWindowAttributes *wa) + c->y = MAX(c->y, ((c->mon->by == c->mon->my) && (c->x + (c->w / 2) >= c->mon->wx) + && (c->x + (c->w / 2) < c->mon->wx + c->mon->ww)) ? bh : c->mon->my); + c->bw = borderpx; +- ++ // no border - even when active ++ if (ispanel(c)) c->bw = c->oldbw = 0; + wc.border_width = c->bw; + XConfigureWindow(dpy, w, CWBorderWidth, &wc); + XSetWindowBorder(dpy, w, scheme[SchemeNorm][ColBorder].pixel); +@@ -1283,6 +1296,7 @@ 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 (ispanel(c)) c->y = c->oldy = c->bw = wc.y = wc.border_width = 0; + XConfigureWindow(dpy, c->win, CWX|CWY|CWWidth|CWHeight|CWBorderWidth, &wc); + configure(c); + XSync(dpy, False); +@@ -1991,7 +2005,7 @@ void + updatestatus(void) + { + if (!gettextprop(root, XA_WM_NAME, stext, sizeof(stext))) +- strcpy(stext, "dwm-"VERSION); ++ strcpy(stext, " "); // no shining of dwm version thru panel, when transparent + drawbar(selmon); + } + +-- +2.31.1 +