From 5588f79ccb25680f906ec226fc72196641780242 Mon Sep 17 00:00:00 2001 From: bjarke-cachy-btw Date: Wed, 17 Jun 2026 11:18:18 +0200 Subject: [PATCH] added window rule for personal project --- config.h | 20 ++--- dwm | Bin 95728 -> 95728 bytes dwm.o | Bin 87840 -> 87944 bytes patches/dwm-placedir-6.6.diff | 145 ++++++++++++++++++++++++++++++++++ 4 files changed, 156 insertions(+), 9 deletions(-) create mode 100644 patches/dwm-placedir-6.6.diff diff --git a/config.h b/config.h index d4f30c4..f6728fc 100644 --- a/config.h +++ b/config.h @@ -52,15 +52,17 @@ static const Rule rules[] = { * WM_CLASS(STRING) = instance, class * WM_NAME(STRING) = title */ - /* class instance title tags mask isfloating isterminal isswallow monitor */ - { "steam", NULL, NULL, 1 << 1, 0, 0, -1 -1 }, - { "Firefox", NULL, NULL, 1 << 2, 0, 0, -1 -1 }, - { "brave-browser", NULL, NULL, 1 << 3, 0, 0, -1 -1 }, - { "discord", NULL, NULL, 1 << 4, 0, 0, -1 -1 }, - { "feishin", NULL, NULL, 1 << 5, 0, 0, -1 -1 }, - { NULL, "spterm", NULL, SPTAG(0), 1, 0, 0, -1 }, - { NULL, "spfm", NULL, SPTAG(1), 1, 0, 0, -1 }, - { NULL, "keepassxc", NULL, SPTAG(2), 0, 0, 0, -1 }, + /* class instance title tags mask isfloating isterminal isswallow monitor */ + { "Playground", NULL, NULL, 0, 1, 0, -1 -1 }, + + { "steam", NULL, NULL, 1 << 1, 0, 0, -1 -1 }, + { "Firefox", NULL, NULL, 1 << 2, 0, 0, -1 -1 }, + { "brave-browser", NULL, NULL, 1 << 3, 0, 0, -1 -1 }, + { "discord", NULL, NULL, 1 << 4, 0, 0, -1 -1 }, + { "feishin", NULL, NULL, 1 << 5, 0, 0, -1 -1 }, + { NULL, "spterm", NULL, SPTAG(0), 1, 0, 0, -1 }, + { NULL, "spfm", NULL, SPTAG(1), 1, 0, 0, -1 }, + { NULL, "keepassxc", NULL, SPTAG(2), 0, 0, 0, -1 }, }; /* layout(s) */ diff --git a/dwm b/dwm index 6973c91f87aca23ee95624d623d837650cd8e56a..0149747977dfcb87e9a4746fc217946199bf36fa 100755 GIT binary patch delta 2561 zcmZ{mZ){Ul6u^5rM&2VCzHP*}()G1v8+15aXAqE~Y$^m2qMaWUf)T1lXQ;D7(eXvt z7XvZ4mZNzKVl02uB_#67L%PI-KheN2S?rn^Kn!kVV8gz2*_RQb^Ss`BNqdd^@b1p< z{O-B8_nz0ZFjZNYs!U`TDDAG|pVFTE{gYs#3W`y}S3W9r%<8lI;cNI`EndU4ICfU- zSTq&>MeXSSxgj^+^2W*a_kUXU>c*GtvlSoc9#LLlx-0ww`)3e4z4|_jFD|k(XIVBY z@l%`^B;NfM^JgWVSjj$=X0TDzANi5_VaD;Ax7rhtoY*jP;t2J$e<}OhX_mFHtzL&L z_ImZUg5*5hmBe?7U179dudVZ!?~V41+v``T`?(dtX<8wUL7xr@=egXHX3SV@FWLWa ze8RU8FZvXSV49}KohMp84GTU6N7z`M4U})-I8OU?_4t>psD_<}jv+(Ch~d=frD!Wf z`zcD`F^UdQWEo0zHdtP#9n*%cwm+-`ejW4VYJR6qn_u_Dmz2*~$lU}+{nQjvw)-#w6`G!ZI$=Mlrr}9J>P4B2rc~ zv4#Bsr$y-LDM-#L-eel4$qC~GIg!TlQxUBe$LgStvjI&NuYu+G7z%2ta0*3dD-q#@ z@fgiIP~ya~m&kC5V-=lziBl*#bxTU?M3?BeiHKM$j%`HxN*oIvXQ;#}6rJlOP8fp? zIw}pNb*5?78X{uPR?+D$aSG@-gC!1~71bFjaj3hA%$7J7b~ZXEPtU06261<YQFyN+&8bXuqsgtrNc{YG;O>{?%n!55+ zRxONCBEv+U-OES^CW+*U-29M{2woym*QBZQ_b{>(r-^JL^33~;(AUONx+5Z|yBXP! zT||b6q~2mAf&E0T6B+1XB!y`r%2G`|v5OJvw59sKacTbp{7kgv+fE*@UT44q+wdgR4H(FXf zGkkL7NqKT`#dq+)zPiF+bEae0i_mMw23A$TTKmM|IKV-B(dP}Y@Edfwo{BYUyWiPz zsA<{ zbBiB^xRKjD7I)Bmhpl;+^O*@2=gnyk_=BQ3I`~Q6<63~nxlFJg{sKstssVl&G@A`L z4SnVfCyJQ&4cGxAIK6ftllMcY5^`pLBj~EQpwaU1vf0%H>)}Br*#wU~>YUi|b~x`I zH_X@9!E2DpTv`Vg=BwhBvN8vsgKI#mMmNw=Br?ejFc+d_lReO?_C3x%Nnhq_4}9cS j#jmM^xw#istAqS!&!Bmb!s-+cQ~amh#mrbQ_~-o#AD!}? delta 2460 zcmZ{mUrbw79LM`BLV7je1r`ql`VU$xI;5D%U=XD`k}X-Z_~MKS15FG%LW)jBAGExf zEoPzhC%Hsjgw5!bM2dH&7?KT$N#SX&W?6v{AYl>1%O!i6zTmGt=g#(+_2HiT`+UFW z_dEA@&TX!-S8VJRM^g_Q$1J&@aV)m>sV7wmxhUl*9G4k)wdteq4Lr~msNl8$28+%d zI=;5?#!e)?xYK!EU!5pATy|5R)~^+vV|FvWjoU4O7x_&FgEg$h5XDXP?lrEePQECU zPYWKv{#w@3CaKXQ+#Qnm@;uKL#&iv{Mex%?G>k`M-+49}A{@b%l94u-wIzj{AAQm0eHv8pReDv&SWWnQ*4C-^D5oNgepkf_tte#ofrO1aO~n zwAB~Z3#4q?Sw~F%##zxau37PM9kA`Xr5i!>sMh}sJJWm|6o{2n-AO zWq2>oL;ayye(!&^s6SrX9e-i}&AJ8#y{u6c`)vLXoa^PgW1bz8zk)#@v;Xq3*gI*~ zYdGv<%BvT-+J$La+f|>c{3QG#1Rui;k#7a*!xkd8230xo8J|V{B+^FY`42gXV2sEB zk@fdEiQ*!W2_hx$aWaYfM3#v>`z|N+o;NW2oV3E30j@4!52?$NI{7A7Q#eX$MpDOy zxVnY2r0z=Um9t!>v)8~raX(Sm?XexMh9o{Nctqlt1dmI6TJSB2>w;H3nXCJ<#oVxY zA)MgCeZD04h{ThEPf9$E+mAE*A3}{w>MbnyGy83!E=cMs21#|^5zUp&w-JM`QXvV zvaPw?0oSc=m-c!m^uktRu@i2TDCSENNnCgVZUa^A@1{}{R>Z@?O6Z- diff --git a/dwm.o b/dwm.o index d853c499a3459096a38986b0ebdafacd1d227bc4..a6076d9e9b8d41dbd29f2f518319ceac3737c0b9 100644 GIT binary patch delta 1080 zcmZ9LT}V@57{~WNxpXqu%xVt$P`YRZ;nqc_7jBwS(v4FmTNLe3kQY%F1@2}acN&$G zbMX{(;Y}2TwQ;hk2zdxfh)@a92&rzwi|V4Aa!B>QJ8yJ+4;&tz-|zW&&kJYtseSO7 zJ?q14{@}NP%FfGb;?ni2H?LgOcP38Sx7zpN~;R5}y;iR^khS*Gc?6<%6i%!@pxu zl=!8RCHlfjQoQ7YC<#d=9|ey~{NG3SS$LG+n|S&yoX=koa|SFtX4W4qwWKYAHyEN} z(8AAH7UU=pg2z6=HK{$Q!3?RK%>F0yG{T5?*)l?5sK9S z?vwcB4U_vNeopWZ)wi;3os#xO&9*3ox$cwn9kDG<8Ll5odhE2>oh#&9u>=@2bQ}%d zRdGA>rnT|2^IMyy1*Wk|Xom;m4&<4Q(W;iGt~34vipfL`?Kx;-&d9ih2^8rYaRTJ>}4Y1%-Oa4^#;L zkU|b$@YLkeCW;bP8-#*UOGrhu6~RhT8@!|kA)fT6vz-mtSy*1?dFGpMcV@CrO><97 zvqMm;?w`||>-JfbHkpiCw9Z|1x2EPcopRl(g&!w-FrdBCdH^-Q^6Wd(TKW0kK`d$I zubv}t*1q)MgN&tGc@F|I#%o&^{07TbA71Wbyy(Jp3mfAYQZ~#`W*83T{w`_zS+(#4 zi!gg1QdQR_L;I~eb%k0?AFmp^Am~Md*9BfDdjO8q>uys)FB^Pa;0=Rs3cP9Xw!q&S zyd&^;oQI`9f_QHfNPRnhbJgGj0jK$BY+Dxued_|(b%DP*&v{$mFK%+) z5%@KOOMAK3?}*<1&J-WpIH&m#>`K2dY4R|iG(>Cc8U>-ke?lbUN<@zU@xP%5f1NR7gctr6L1kg)G z7Us)IUYw>aCe4Wx`XZ8~k~<2Yy#9bDq8OH&Au6$ijapGwn62Q#R_2q2Juh@s+*#(7l5ciNQ&8qpWQr2EW{lP$|Y1RH+qXwe1ES8e_vW#m6xC E4}~eVZ~y=R diff --git a/patches/dwm-placedir-6.6.diff b/patches/dwm-placedir-6.6.diff new file mode 100644 index 0000000..d4e5544 --- /dev/null +++ b/patches/dwm-placedir-6.6.diff @@ -0,0 +1,145 @@ +From e9af0dec465dc85cf507c9b44d9ac87e868f30fe Mon Sep 17 00:00:00 2001 +From: Bakkeby +Date: Fri, 28 Jun 2024 10:07:47 +0200 +Subject: [PATCH] placedir patch + +Moving clients around with behaviour similar to that of focusdir +--- + config.def.h | 4 +++ + dwm.c | 98 ++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 102 insertions(+) + +diff --git a/config.def.h b/config.def.h +index 9efa774..d835024 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -67,6 +67,10 @@ static const Key keys[] = { + { MODKEY, XK_b, togglebar, {0} }, + { MODKEY, XK_j, focusstack, {.i = +1 } }, + { MODKEY, XK_k, focusstack, {.i = -1 } }, ++ { MODKEY|ControlMask, XK_Left, placedir, {.i = 0 } }, // left ++ { MODKEY|ControlMask, XK_Right, placedir, {.i = 1 } }, // right ++ { MODKEY|ControlMask, XK_Up, placedir, {.i = 2 } }, // up ++ { MODKEY|ControlMask, XK_Down, placedir, {.i = 3 } }, // down + { MODKEY, XK_i, incnmaster, {.i = +1 } }, + { MODKEY, XK_d, incnmaster, {.i = -1 } }, + { MODKEY, XK_h, setmfact, {.f = -0.05} }, +diff --git a/dwm.c b/dwm.c +index 1443802..3ac0a7f 100644 +--- a/dwm.c ++++ b/dwm.c +@@ -184,6 +184,7 @@ static void monocle(Monitor *m); + static void motionnotify(XEvent *e); + static void movemouse(const Arg *arg); + static Client *nexttiled(Client *c); ++static void placedir(const Arg *arg); + static void pop(Client *c); + static void propertynotify(XEvent *e); + static void quit(const Arg *arg); +@@ -1208,6 +1209,103 @@ nexttiled(Client *c) + return c; + } + ++void ++placedir(const Arg *arg) ++{ ++ Client *s = selmon->sel, *f = NULL, *c, *next, *fprior, *sprior; ++ ++ if (!s || s->isfloating) ++ return; ++ ++ unsigned int score = -1; ++ unsigned int client_score; ++ int dist; ++ int dirweight = 20; ++ ++ next = s->next; ++ if (!next) ++ next = s->mon->clients; ++ for (c = next; c != s; c = next) { ++ ++ next = c->next; ++ if (!next) ++ next = s->mon->clients; ++ ++ if (!ISVISIBLE(c)) // || HIDDEN(c) ++ continue; ++ ++ switch (arg->i) { ++ case 0: // left ++ dist = s->x - c->x - c->w; ++ client_score = ++ dirweight * MIN(abs(dist), abs(dist + s->mon->ww)) + ++ abs(s->y - c->y); ++ break; ++ case 1: // right ++ dist = c->x - s->x - s->w; ++ client_score = ++ dirweight * MIN(abs(dist), abs(dist + s->mon->ww)) + ++ abs(c->y - s->y); ++ break; ++ case 2: // up ++ dist = s->y - c->y - c->h; ++ client_score = ++ dirweight * MIN(abs(dist), abs(dist + s->mon->wh)) + ++ abs(s->x - c->x); ++ break; ++ default: ++ case 3: // down ++ dist = c->y - s->y - s->h; ++ client_score = ++ dirweight * MIN(abs(dist), abs(dist + s->mon->wh)) + ++ abs(c->x - s->x); ++ break; ++ } ++ ++ if (((arg->i == 0 || arg->i == 2) && client_score <= score) || client_score < score) { ++ score = client_score; ++ f = c; ++ } ++ } ++ ++ if (f && f != s) { ++ for (fprior = f->mon->clients; fprior && fprior->next != f; fprior = fprior->next); ++ for (sprior = s->mon->clients; sprior && sprior->next != s; sprior = sprior->next); ++ ++ if (s == fprior) { ++ next = f->next; ++ if (sprior) ++ sprior->next = f; ++ else ++ f->mon->clients = f; ++ f->next = s; ++ s->next = next; ++ } else if (f == sprior) { ++ next = s->next; ++ if (fprior) ++ fprior->next = s; ++ else ++ s->mon->clients = s; ++ s->next = f; ++ f->next = next; ++ } else { // clients are not adjacent to each other ++ next = f->next; ++ f->next = s->next; ++ s->next = next; ++ if (fprior) ++ fprior->next = s; ++ else ++ s->mon->clients = s; ++ if (sprior) ++ sprior->next = f; ++ else ++ f->mon->clients = f; ++ } ++ ++ arrange(f->mon); ++ } ++} ++ + void + pop(Client *c) + { +-- +2.50.1 +