From 85e8b9a0618a8f4de61932e896fdba8c961dfc53 Mon Sep 17 00:00:00 2001 From: TolaMironcenko Date: Mon, 1 Jul 2024 09:49:23 +0700 Subject: [PATCH] fibonacii dwm --- dwm/config.def.h | 5 ++ dwm/config.def.h.orig | 116 +++++++++++++++++++++++++++++ dwm/config.def.h.rej | 26 +++++++ dwm/config.h | 5 ++ dwm/dwm | Bin 63216 -> 67408 bytes dwm/dwm.o | Bin 57760 -> 58752 bytes dwm/fibonacci.c | 66 ++++++++++++++++ dwm/patches/dwm-fibonacci-6.2.diff | 114 ++++++++++++++++++++++++++++ 8 files changed, 332 insertions(+) create mode 100644 dwm/config.def.h.orig create mode 100644 dwm/config.def.h.rej create mode 100644 dwm/fibonacci.c create mode 100644 dwm/patches/dwm-fibonacci-6.2.diff diff --git a/dwm/config.def.h b/dwm/config.def.h index 9efa774..c76c8ab 100644 --- a/dwm/config.def.h +++ b/dwm/config.def.h @@ -37,11 +37,14 @@ 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 */ +#include "fibonacci.c" static const Layout layouts[] = { /* symbol arrange function */ { "[]=", tile }, /* first entry is default */ { "><>", NULL }, /* no layout function means floating behavior */ { "[M]", monocle }, + { "[@]", spiral }, + { "[\\]", dwindle }, }; /* key definitions */ @@ -77,6 +80,8 @@ static const Key keys[] = { { MODKEY, XK_t, setlayout, {.v = &layouts[0]} }, { MODKEY, XK_f, setlayout, {.v = &layouts[1]} }, { MODKEY, XK_m, setlayout, {.v = &layouts[2]} }, + { MODKEY, XK_r, setlayout, {.v = &layouts[3]} }, + { MODKEY|ShiftMask, XK_r, setlayout, {.v = &layouts[4]} }, { MODKEY, XK_space, setlayout, {0} }, { MODKEY|ShiftMask, XK_space, togglefloating, {0} }, { MODKEY, XK_0, view, {.ui = ~0 } }, diff --git a/dwm/config.def.h.orig b/dwm/config.def.h.orig new file mode 100644 index 0000000..9efa774 --- /dev/null +++ b/dwm/config.def.h.orig @@ -0,0 +1,116 @@ +/* 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[] = { "monospace:size=10" }; +static const char dmenufont[] = "monospace:size=10"; +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 *colors[][3] = { + /* fg bg border */ + [SchemeNorm] = { col_gray3, col_gray1, col_gray2 }, + [SchemeSel] = { col_gray4, col_cyan, col_cyan }, +}; + +/* tagging */ +static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" }; + +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[] = { "st", NULL }; + +static const 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 const 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/dwm/config.def.h.rej b/dwm/config.def.h.rej new file mode 100644 index 0000000..6b8c17e --- /dev/null +++ b/dwm/config.def.h.rej @@ -0,0 +1,26 @@ +--- config.def.h ++++ config.def.h +@@ -36,11 +36,14 @@ 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 */ + ++#include "fibonacci.c" + static const Layout layouts[] = { + /* symbol arrange function */ + { "[]=", tile }, /* first entry is default */ + { "><>", NULL }, /* no layout function means floating behavior */ + { "[M]", monocle }, ++ { "[@]", spiral }, ++ { "[\\]", dwindle }, + }; + + /* key definitions */ +@@ -76,6 +79,8 @@ 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, XK_r, setlayout, {.v = &layouts[3]} }, ++ { MODKEY|ShiftMask, XK_r, setlayout, {.v = &layouts[4]} }, + { MODKEY, XK_space, setlayout, {0} }, + { MODKEY|ShiftMask, XK_space, togglefloating, {0} }, + { MODKEY, XK_0, view, {.ui = ~0 } }, diff --git a/dwm/config.h b/dwm/config.h index 49b4d35..98a174c 100644 --- a/dwm/config.h +++ b/dwm/config.h @@ -37,11 +37,14 @@ 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 */ +#include "fibonacci.c" static const Layout layouts[] = { /* symbol arrange function */ { "[]=", tile }, /* first entry is default */ { "><>", NULL }, /* no layout function means floating behavior */ { "[M]", monocle }, + { "[@]", spiral }, + { "[\\]", dwindle }, }; /* key definitions */ @@ -78,6 +81,8 @@ static const Key keys[] = { { MODKEY, XK_t, setlayout, {.v = &layouts[0]} }, { MODKEY, XK_f, setlayout, {.v = &layouts[1]} }, { MODKEY, XK_m, setlayout, {.v = &layouts[2]} }, + { MODKEY, XK_r, setlayout, {.v = &layouts[3]} }, + { MODKEY|ShiftMask, XK_r, setlayout, {.v = &layouts[4]} }, { MODKEY, XK_space, setlayout, {0} }, { MODKEY|ShiftMask, XK_space, togglefloating, {0} }, { MODKEY, XK_0, view, {.ui = ~0 } }, diff --git a/dwm/dwm b/dwm/dwm index 35e86d2274cdd0220f1746678cb07264b162aecd..49684e53f1705bbb50b6c56ccfeddec94ce600e4 100755 GIT binary patch delta 19209 zcmZ{s30zf0`^V2YAOa~~S3pZK5m8e?4RA@h3UpPn>qfXGZYXJq3Tn1o4E2@JqNcxM znqqF)O5HO5uc^3ZuAsg|i^W^&i;;<@yxQXVKQr?@IL`mm`Fxz;Ip61*nP=wAnX}x% z+ABU~ulN>(HXUY&EnbRIV87O7n+$w_ z!E{{GSbCMP03T0_Qg7*==$*d>%xUyelfwDu8@`hL?kewkpY!*b=e&!XJn8SDZ2mHr zk&`TUQZatwQOGkj{^GOJzu<3pp~iELV|bE#465LR*QKFM%P{;o$tyKpdsgyVjYqDL z+;LDUmG6&%M%}|bhH-*PNB2Dj!&tIX@=T3ySuS~j#*@*%MB`J@zf9wzVNkzOsTr!M zWg4fRxTSIG3CAHB7`1rbVtE{;@lp)b4V>3se+tNusbv^}1r_`aFVXlF?CP?=;k9?U zsK36e9f$92!9Hq%#%a*SX*>-Fms{iHpQ`c9sRp2=GHx1A@mG3?#>;M0!K+8ZC6llEu6lk0(DARa-1Bhe& zcdr7x{{3Y`45}bX<5YoL<1NR@j5HHcIej-vK2!7elueR`OwBL=Gti7j1r0*JLi0a3 zMV3P|9{DGsf1&2@SttBG2F-YsVJK!O)-q(v3`VKOhogVB#z!F!J0Sz3^2Z~O6dd}W z3=`21rDd3eJWk`2k;iNN%}ugGm&T`}zgy+}{7*+is%ii}19_UpGmsZ(JStOGT%_^L zmnARJcq8Cq{O!^VujR=MM>QUZ6;x^b{RPtBA0K0>N9SQV4vh~$9(EG1f66cop8=z^ z3_mQF6~t+L(rn4oH0~D7GK>`(e_@gIFR16}IBA|V9K}a33W$#Bk&O7ox1~QldJ%7q zr^YxZ?ZiWo`)j;|2MrF*P=$7jZ+H>G#-iN6l$ExFS>`r`KL&W?=jrv zB^sZFEhs%LyW9_?soWLmQH4LK@G^yWBhJTPrDEtw2GA;nXDPfC18M*aUyh`;OiDu# z{@zQQzrrnopbp?-{PPSxiXlYF;H&U3h4ad3i&Qx84cej<&g-Bp?k>N3{<$&!uE7W( zZ%~)Q0~PL8_FIIT4!b=n$qVQeFJ^Z|cDuz-eLu-W}Rd^ePmnr;yg;y&40fkp7 zye*DDVXjsT?UW3)3J+8GErqvNxKS<-c*8m<++X40^&HN>Losx$HyB2U!Xp$OrtnS* zk5qW1!lM-4S>bV<^YOGK6h0pPMg6-J1AY$|=2C@ER4O>C@Fx{srtnD$uT*%N!mG~U z_~WNwvSO%KGE7l;t-_}&{FcI}Dcr!PXkPwwh5OfYXn(q5aMT;%^-JL)3ZJR)FokC* zJW}CLDLhKyvpA>oAEy}brAB0nSNPLPK`w z;qw)~Na5KE&rvwOCJO5c$p?$eZ=sT*K*@lwYriaKwS0~4sR&F&r{a6oc%5$#|PY%BEAKP~2 zCxoX?b9MFY$ZO1MP<{13Z0hi5t)+|E_rve+w)`h>$@`(Y{0?`0JY< z#;*TiogN<;as*uZTzjEW{yqnUpLfdqs`H)v#_ug=FFyXVb^l@(=+3ofC9+rDZLML6 z>_hjbQO+lvDb6v@(L?h7920$Ilq>g_5Ldn@wffd=UiU%QveGPvD}Pre6lWi<{_!^J zFtX6J+2v`SOFX>&iV8GJc|Sf^(wtN#~@4Zs_uF214Ma z)vms*YG~HrM)UcRYt_TKfU5^wwC%C3ykDW6<0sl3KZ9X0F1mF5#DmeL2VMCMet_XK z%9ZzrEB}d1SD#ziEnRsnk7u(r!ya^g2Bzv}|K?pYe-U)gc7A-IiiiEf_{)97PK%Cw zd^fqzy|tH!gbBl?GA!YzHT19G|Y zu2#Qxo>%iiYW0aa_SuN8j+Ec|@owHLHHTBjPxOu$)!5JKbHkf9cAc-4@GJXk;xOyK zSG+@?ylythfq^%&$fGb-X&ldwOzT(;Vdu zocg3`HIHOZO?x#c;fie!$x8^&tZ7socZD^aUS#$7h3%N0XWjP;>z#hYT35sVOb@f3 ztzm6vY_*zPWQS*Lww}7co|<{h>VLsIF{9G70xz-HS-Y)*cHSGaUh}j53i1A9-XErQ zJJ`E4>$+u4_?LIl!iJ_*TIpS~=(1&9kMYia?w^)5CdeE4;ts3XGskT^89JcZuTp>g z()&|RwXb#J3-8HgLw&5ALo77!qR06}V)Pkj-hc0orMn~P$Ufe~hk5Td#gXK+4^)2$ zxaQ}?WoMc!jeu@+=4XXRIrArk$3>q>jJ}cxhy4>*jk8_Lt~6QN037m{B}1B!cQqmJ znpv9rA2Zv^`?~ycpQBB3*YSxnA@6eTzkL$>oSz@L%+3mQmj9Z2+b648O}Fxz+}l=m zaN;sMdw}_UO<%q5*P245(rQ|Iq%IwUT;lHJys>-pWxYW|zENtcB1IFPXk;f~*2O&+Rr z=8q2V?X(Z)eVv$B3*#s;`peGyot;bbMu+<*` z1qD6PC;_tj!$05r-r>-Lm#_1A;NHt?FJv$--{%2Kblv4eAnZ-xmhORNn#jXuJA}ci_wf?&I&) z)ir?ROt^oGZI7t_wiq%lE6r{Mmvx<=w_*NVpN|WYeEi18Pc+6)Uv+W|-H#Xb$xt8!?x!tx`z;OT+a}+cN^a5xF=tI7S(QSuqPXL_LE&1>FEz2pYB%$^mtQ9t9l*`W@)O&mb^= z!${d>+adli9^3pcL=t0n5K*#NYis7@yeoz-^D4g^((7~WNpl3jf zL8IX^DFZzQS_^u!6v~BD)B6xq3_1ez7HH&Qs2Dzbq#S|4BdY}?VuFxnjlN6?o+XM>i2=76?7VcWYv-vqq@`ol@+V)#B%2Ra+H;c44G0XiJC z3Un#x4bX09Y&!}*mkbB>xM62G?92vz7jy;aUuU7qKv$fD9ss=q>I>gdp8l6@hl7@b z#(`c3O$HrUVcXL{Pk}B4E&K`^0vc2a`9W`iwtxw`_t#J{=nJ53(4W4xJ$4rC%=reo z5VQ>R9O!-D*|vXE!-#{)JRI~VxOc1s4ToF67SKtcpMws7+wLvUy%!*$W)KkQ1kk1z zp+`Yig6;yX1w99P0&d75&EYd!H3R}0U+sZ&3OhY6!#M?=3%V5a0!-*tpxt3IZ2=#6 zJ^<|v8hRD{K$Afiffiqf!30;!i#LIT-mJ6j_dspXQc%DD+IARx@UcPrgYpfsiOpO* z(lFV@HO*V+z%>`aSwcf-JTw#j^@e}9*05%U5oRCOr?8DVl#MBT)O?%0RoKJ)lASCZ zW*%UnYuh|L=V8j~yi%u5IHx+Ee+ID6To4Yo)^J6fP@QH$Nyp}4k z4^~(fup7You=2GF&8OIqH@h}i1oj1N?z-k|<(nbqUbgj34@A>(T|0;-aa|{K0(*L0 zS2LTfUDs}8*88?i9|3szwJ=$%0hR&#eB;a)CWc>tMGGQX2(W+;Y#Xi^v4ud&Czw0$ zv%vMOyG#RMm6?!X}bM7WN{8UGIKbHSd#vH*iHnubUS>DF3W+3}?W31VaUD?>ne1)|y>Sg`5o23+WG4E$f zih7x6*{4OFTDF4uN{l`zo{zc~a3&(zwW3&a9P7NPpS58hJ5|_;t=iPX%x8NxwKHF0 z=QmAi*=xUTKgxrKjh~n-7+mRW#M{ly6>R$3{T{h_(6-xiy8ym* zVCQ`(&&Gm!n*lx6jGceGjoF6XetV$VjrG~w!F+>F+#GCOKg5=b_!Zit=Y5;tw z9D=FzPp}QCw^>e#KMdFfuyt_yN8QTV$FR~rmI>0G9xvibKid_MI zf_2{B#%#e7w+{||@0@Kv%%d3>odG$-SX?t*JEm*H|tMy%w(8&*$l{)6Gq$X_ojH$fE$(W5#LA0 zX46*iK)w)W0%K5+<5kNQ6!MDCprEi-zJr1yS2jopidydH42sKbm=NUl8Dj>;IhpxR zi)elx;$ez)!c?tJGoyjU0)soR*mxy;FR%BdZlF+3VjxEMZ{fSDQDcYQ)+C zPCS&6Ruxde{4(QPrj+`?t1xh~H@2mN-Y~LH!Thu$4G-z3caQNDlG2rOheD(RW@&aC zHjc=ifp%J{rst=Nob31JhiA8$SO6_uJ9#2`k6OX(|8E!Hg(-jl>;YQff$sGI&P6~g z+U~JK{YDlN8eD0|C7=q@HM_oE<7v%KgOl>l)9kcP1LkP?5lVL`(gFz63c$nq-|5J% z4^9do3Nug-(J6occ>4{59B9c4IZy!)VF9!vO}BT~>@)^=3;9O*Y2_N_51@~5Q~)_p z0Tci|Y)}ix-bj{jkewC_k(~k{J2jB(jb;1c!5<5v%a9x>fSzcl0BAm-0LV@Okevb` zI|V>?4?N3@jT|Tda-aZuX#wzwiEk7D*(m_BQvhVA0MPC+C;)Px0H^>8ptr2Ae!(bl z3V`es0NE)3vQq%k4*gF7kOKuk1(1rnCj>#KfZwh7MgfqW0w6mDKz0g1*!lUV0LXy? zpaLj>7*XBb0K)K?0w6mDKz0g%>=XdEi}6PRkOKuk1yBI=Xihy44+Zdz0w6mD5HGCo zXpTyD3IObK{8IqrKmkwz6o7cvgTg3)9N6a@1weKRAV*m520(TSAcwAh3V<9a04jh2 z=z|4P0QBHM0g#;nAUpK{*(m_SgBLmlKn@guUcg)ofEN4Vp+SrMXiXoj;Uhb(-8(o% z5?Y(r3>V`WwDvB09e-@FhHnOG4G$8&tZKKvHEJ`vcBl<&@Ohg-w1|$@%+VS-S`$ZW z;AqVoEpekIZ5f-{{vO@?(uy?-kXEYEF<+s^H(HP;j|?L)lgDSi&&s{cS*g{cC#^K2 zm1X2e3(Dx27LrYx4FyD4ZV#70S{62G9(#SyjP~);o6bhzdU+g*g}4u})_dDpsRvl! zy&m&4`{&;7){2hoXJ93bS>V1W&6TWuzQ-y$$%FL7U~x&PDX8hF3s9G%u14L4x)b#X zY6a>g)H+l@ry;ghs1Z^tM_rA&4Rt5#5!4FQOQ?0IeuFUp)CjJ8ZizvVgqnhyj=BJKIqGWE zZKyj@kDykdUP7%y^-I72P$NLa+!li%2{i>Z9d!Zfa@5tR+fa9+9zm@@y@Xna>X(QC zphhI(+!li%2{i>Z9d!Zfa@5tR+fa9+9zm@@y@Xna>X(E8phhIgx!s6Ckc66onvS{v zbvf#4)NQCcQIDWjpk6|)L-oTi39V2gI^#|ZY7%M+YC7tINBLCXIeJz$APU5kyCS{# zwsHWw^$R@_(*n;9n%<=Doc^^~+Kk=9FwY=QXN_N3L2 zwEB@&JJRY#%0@bCGyC|^LeE%P8{Jyrqk&-=LB?~)Go;yQjr;;~dLRu)PB$F7lXV7e z!t$|m*jisKhv(zvw;d;e=Or}o&le_CQ~H$zbW4p#zDwi$Bj2A#TuRwkn`3KN+&e!33h=(m{ z;5RB>{`yLJOg*tma8GNaP%{)@hBq|M0}w6aO@VC^j>1CN=e);cfyGA+zQ@NA=Yx^2 zk!IsvP#(|5p# zr%3D3KojcchAONe1Pf{k8F>q`r%NypM^Pwn?tfGZ=v(MQ&MP(k0Q#3=#o#2i4uZEd z!cK_x!`ED_I1)1yXpwdY&I9^nrgVG&{bP}rBgguUc;v-+{qp>Lb0M$5&ng*MzcCUG z17}Ice@HRXkRL%#U7Z1(w>S+04MTr^S@A$={rwo|dcG||{>d})xJHWM$w$LRejUPw z^%!qp1qN0?J+vPE=`RiJ#%JtA@Z;N2^rt@*2$tBWK)zs}1bj^K?Hf>W)g0hQ(Eq%P`Sv4b_y?bP zVB<3!-)fMbLQbz?w~+g0NxvP~)jps+Q2N`8_R?$wB0sf2f;cYx{D-2!Z=p1Flw!0; z-W53?BYf+DoF0zzB{m*GPTzU39wQk!eZayqZKMGA@JQ*?8eX=>B+NkHo3JPg!~iaL$H3M3=Agx&@h2d+OXjuHNL_Oe_@7nX*RAPpZcN% zE0G&8QSlzVihMHirpW2fU;5#xTuWV)pCdiHp&<-2>{=rEyS`E*fb*`?|McM@#HMNrQAFa6SVXTFbVgKfSSjhXExZr+0h#IR~!4 z;b@?b1_QC;kC4-s@2ki^M^0Zm2O*!1{2G6-)`m)!{+If;?t=%yE4B_3{sIHIz4#l<@ zdDS_2?2p~B980g-EP139V-@lujlTih*SKb*o57;WI}h1HM^Zl!c|(lq)A#a2g10j0 z|D_;nGiXv6oQl%3?CtV9fvw=M8Jw|#VeFkV4>gA;sddsb5Hl=grf;yhnx~=L8%XEX zk4q!oZj7D6=afjl5$P{%^4VZk>Kg(J4nArSY_=0=G<&UKNR%HGVl^@7n+ye(z&S*c zohk{vxQrE9XNvSWk-`sRP~--YzAMt5B0VJ1Ga~(wr=fhU5HE8lp12~ctRdU5Bc~kx~GCD#ZifyLwTqM%vA}ti@4w3#-r0@eQlyg?3KZ&%CmmKPV z9(ITh$HGt^V6RmKo83h^P^80o8a)Be$T7V9`=b9e>HaKsB{Oja@jr zsa=l%=VdM)A;}-m`+Q3hdB=)$4o`=?gr3{*TvHq0!jkC~UgkH9chElt+x`R^J{4tt z!PC%l=+hosv;%$43!f_@y(Lm#w*Tv3vz17@h_tszoji?pLs#%tbi^0vc393t;10Nr z(4X#6Y#Ac&Vv**EG+(5vMfwp>L-%5tckroP{Gtv892Gv5JRMSlKG%oKl3~sh+n>li z>*X;#4T;V7J{hMk_BK80v}AL?4K^c0+DD{AMLJHTvqbu=NLPwWh2;jzB!+#t`65mHvbQDYgls%sC?U zh;)TW*NSwjNOy|#lt_OP>3>DqkU78S*ELV0c^aC~SYCblSRE#OVBHLOP7`S&zh*<{ zfj>X{RTyR>MzuuvyeiW7cpCi~dM?Ka^EP_!Mou5(=?U?G$a_kp--r?}p=ZvcGOHg> zH#MAF&^_^3B+50Ot3d#K`Dq3pl3K8UswbOgXHJ`(HGO`@;^{Lpp2?bTOv`+hl~%R) z&B~ZPouyZGd2s5y>EQ76oM(*Llb@ZF4K9=C&71tp41oa8nd+^nTI=gKZDGbU(`I{L zy4b%#KzhcMInPX*ORnrQy_r|jEdGuB%(d=;EAagTzMKbM zj}4$`p89Ej`TwZ`L1GpJqeh=&baF8|ce$gmd7obL`m7f#x|DSU1ogSsEKr W7aQQNmHsf_*Tq^--(kn7v6;UgD@seVsOO1(E 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 D(>UOE diff --git a/dwm/dwm.o b/dwm/dwm.o index d67d90aeac648820962b98a4ce0e35742759cd3e..21b824dfdb14e3ec3ea86c24d20840589a1367d9 100644 GIT binary patch delta 5063 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 c; c = nexttiled(c->next), n++); + if(n == 0) + return; + + nx = mon->wx; + ny = 0; + nw = mon->ww; + nh = mon->wh; + + for(i = 0, c = nexttiled(mon->clients); c; c = nexttiled(c->next)) { + if((i % 2 && nh / 2 > 2 * c->bw) + || (!(i % 2) && nw / 2 > 2 * c->bw)) { + if(i < n - 1) { + if(i % 2) + nh /= 2; + else + nw /= 2; + if((i % 4) == 2 && !s) + nx += nw; + else if((i % 4) == 3 && !s) + ny += nh; + } + if((i % 4) == 0) { + if(s) + ny += nh; + else + ny -= nh; + } + else if((i % 4) == 1) + nx += nw; + else if((i % 4) == 2) + ny += nh; + else if((i % 4) == 3) { + if(s) + nx += nw; + else + nx -= nw; + } + if(i == 0) + { + if(n != 1) + nw = mon->ww * mon->mfact; + ny = mon->wy; + } + else if(i == 1) + nw = mon->ww - nw; + i++; + } + resize(c, nx, ny, nw - 2 * c->bw, nh - 2 * c->bw, False); + } +} + +void +dwindle(Monitor *mon) { + fibonacci(mon, 1); +} + +void +spiral(Monitor *mon) { + fibonacci(mon, 0); +} diff --git a/dwm/patches/dwm-fibonacci-6.2.diff b/dwm/patches/dwm-fibonacci-6.2.diff new file mode 100644 index 0000000..81bba7a --- /dev/null +++ b/dwm/patches/dwm-fibonacci-6.2.diff @@ -0,0 +1,114 @@ +From ec9f55b6005cfa3b025b3d700c61af3ce539d057 Mon Sep 17 00:00:00 2001 +From: Niki Yoshiuchi +Date: Sat, 18 Apr 2020 09:55:26 -0700 +Subject: [PATCH] Adding the fibonacci layout patch + +--- + config.def.h | 5 ++++ + fibonacci.c | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 71 insertions(+) + create mode 100644 fibonacci.c + +diff --git a/config.def.h b/config.def.h +index 1c0b587..5708487 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -36,11 +36,14 @@ 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 */ + ++#include "fibonacci.c" + static const Layout layouts[] = { + /* symbol arrange function */ + { "[]=", tile }, /* first entry is default */ + { "><>", NULL }, /* no layout function means floating behavior */ + { "[M]", monocle }, ++ { "[@]", spiral }, ++ { "[\\]", dwindle }, + }; + + /* key definitions */ +@@ -76,6 +79,8 @@ 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, XK_r, setlayout, {.v = &layouts[3]} }, ++ { MODKEY|ShiftMask, XK_r, setlayout, {.v = &layouts[4]} }, + { MODKEY, XK_space, setlayout, {0} }, + { MODKEY|ShiftMask, XK_space, togglefloating, {0} }, + { MODKEY, XK_0, view, {.ui = ~0 } }, +diff --git a/fibonacci.c b/fibonacci.c +new file mode 100644 +index 0000000..fce0a57 +--- /dev/null ++++ b/fibonacci.c +@@ -0,0 +1,66 @@ ++void ++fibonacci(Monitor *mon, int s) { ++ unsigned int i, n, nx, ny, nw, nh; ++ Client *c; ++ ++ for(n = 0, c = nexttiled(mon->clients); c; c = nexttiled(c->next), n++); ++ if(n == 0) ++ return; ++ ++ nx = mon->wx; ++ ny = 0; ++ nw = mon->ww; ++ nh = mon->wh; ++ ++ for(i = 0, c = nexttiled(mon->clients); c; c = nexttiled(c->next)) { ++ if((i % 2 && nh / 2 > 2 * c->bw) ++ || (!(i % 2) && nw / 2 > 2 * c->bw)) { ++ if(i < n - 1) { ++ if(i % 2) ++ nh /= 2; ++ else ++ nw /= 2; ++ if((i % 4) == 2 && !s) ++ nx += nw; ++ else if((i % 4) == 3 && !s) ++ ny += nh; ++ } ++ if((i % 4) == 0) { ++ if(s) ++ ny += nh; ++ else ++ ny -= nh; ++ } ++ else if((i % 4) == 1) ++ nx += nw; ++ else if((i % 4) == 2) ++ ny += nh; ++ else if((i % 4) == 3) { ++ if(s) ++ nx += nw; ++ else ++ nx -= nw; ++ } ++ if(i == 0) ++ { ++ if(n != 1) ++ nw = mon->ww * mon->mfact; ++ ny = mon->wy; ++ } ++ else if(i == 1) ++ nw = mon->ww - nw; ++ i++; ++ } ++ resize(c, nx, ny, nw - 2 * c->bw, nh - 2 * c->bw, False); ++ } ++} ++ ++void ++dwindle(Monitor *mon) { ++ fibonacci(mon, 1); ++} ++ ++void ++spiral(Monitor *mon) { ++ fibonacci(mon, 0); ++} +-- +2.20.1 +