From 170fbdf8a63e08c411c648a4bc0c6f7c1ef3746a Mon Sep 17 00:00:00 2001 From: Ronald Regan <1985ronald@tutanota.com> Date: Sun, 10 Mar 2019 23:46:39 +0000 Subject: [PATCH] Made patches folder --- config.def.h | 19 +-- config.h | 115 --------------- dwm | Bin 62312 -> 62312 bytes dwm.o | Bin 57512 -> 57192 bytes patches/dwm-movestack-6.1.diff | 73 ++++++++++ patches/dwm-pertag-20170513-ceac8c9.diff | 177 +++++++++++++++++++++++ 6 files changed, 260 insertions(+), 124 deletions(-) delete mode 100644 config.h create mode 100644 patches/dwm-movestack-6.1.diff create mode 100644 patches/dwm-pertag-20170513-ceac8c9.diff diff --git a/config.def.h b/config.def.h index 1c0b587..ea76dfd 100644 --- a/config.def.h +++ b/config.def.h @@ -3,10 +3,12 @@ /* 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 showbar = 0; /* 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_white[] = "#FFFFFF"; +static const char col_black[] = "#000000"; static const char col_gray1[] = "#222222"; static const char col_gray2[] = "#444444"; static const char col_gray3[] = "#bbbbbb"; @@ -14,8 +16,8 @@ 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 }, + [SchemeNorm] = { col_black, col_gray1, col_cyan }, + [SchemeSel] = { col_gray4, col_black, col_white }, }; /* tagging */ @@ -28,7 +30,6 @@ static const Rule rules[] = { */ /* class instance title tags mask isfloating monitor */ { "Gimp", NULL, NULL, 0, 1, -1 }, - { "Firefox", NULL, NULL, 1 << 8, 0, -1 }, }; /* layout(s) */ @@ -44,7 +45,7 @@ static const Layout layouts[] = { }; /* key definitions */ -#define MODKEY Mod1Mask +#define MODKEY Mod4Mask #define TAGKEYS(KEY,TAG) \ { MODKEY, KEY, view, {.ui = 1 << TAG} }, \ { MODKEY|ControlMask, KEY, toggleview, {.ui = 1 << TAG} }, \ @@ -61,18 +62,18 @@ static const char *termcmd[] = { "st", NULL }; static Key keys[] = { /* modifier key function argument */ - { MODKEY, XK_p, spawn, {.v = dmenucmd } }, + { MODKEY, XK_d, 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_o, 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|ShiftMask, XK_q, killclient, {0} }, { MODKEY, XK_t, setlayout, {.v = &layouts[0]} }, { MODKEY, XK_f, setlayout, {.v = &layouts[1]} }, { MODKEY, XK_m, setlayout, {.v = &layouts[2]} }, @@ -93,7 +94,7 @@ static Key keys[] = { TAGKEYS( XK_7, 6) TAGKEYS( XK_8, 7) TAGKEYS( XK_9, 8) - { MODKEY|ShiftMask, XK_q, quit, {0} }, + { MODKEY|ShiftMask, XK_x, quit, {0} }, }; /* button definitions */ diff --git a/config.h b/config.h deleted file mode 100644 index 1c0b587..0000000 --- a/config.h +++ /dev/null @@ -1,115 +0,0 @@ -/* 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 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 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/dwm b/dwm index 2e1f81786a6a1a2e1d7b8de0a8ac8335ea343041..0e33a8abd643ecde0d357d4074d1f516020445d6 100755 GIT binary patch delta 7542 zcmZ`;3tUvy)<1gy9TbN_p~LtBgaWd7_y|e)VhD6lG)gT{ODUhFrG;f>0*w~)jTpK# z#Wy}FpEzowreNkPO(-k%vnzD-Hl``2S=}Dz{`Wd(dhq@3{>lHp_gZVOz4zMtth49n z{g0`yJw*{yb{^~dB?fQLx=VKvy zdwVFoF5U>qS*SPvV6vG;NBy_XN&dQZ5>=Q+hOP{_>W+EP-_`Z(h16$;e)wZ%bBEHk zX1`FIZ%ngptrVy0m9rG3sv(WWjC|TPRHv#mMm6U*x6o`L!@+)?eLdba;Vraplf9ctNzvwzxE7kFG!6agjedPvXjf8YH&vXanr?}I_@3Irrk+H! z8hF<5P)v0gsZX?Z0R}5?VS2z*5WOmhwkIU*NSf7Jc&I3)b9}`JMMaXnSy~AlPKj^z0<67H(#@35T36?z`sNTi-6u&bT#y=S zb3@>8edx{o6`kE_lh7~u6L>79ds91!_b5BHQXcms?|FH`tF1&w z`eDjcQ@I&WK36R1M9ImQTSliwHF%H*7moppcVV>dLv|iK=expC zyYsbht+3T#_mrtuuI0Ek$&t~g(46Bc`qA5Avs~uP7^`EBRv6&*N7L<;Bj2e3rdu3t zo~k=H-JMzPaJwClVm;D{i|yP_8PH6(TSmStG|)XO(mfLzX#TGTm0gQLobfmMMG9<-K;kD`1(wjQ|eOpNq@nEnOytm^*MJIC1JIx z+%tGE6ZT}UjNehGoEH9JYH1mG3S6wtaWx^Xky7rRyGgDy;9mKNxYN2ya$R${(a4ST zCT@Y!bwuYiWZHFL&D0(#d*69OpdNnbr+WWqMbKdr+Lib=v#d z5qLoO+Tj5yM~{)0oxjjO-+WPgLL*9(+9toNX~lgJsosleQE7Dlo@iq-IdFHS&A~Qs z<&A`hQ;_#|m8L!HZI%&$#~?g;-nKCK5pR$YAB;~3j+hO5>|F$DrMB?Qo-%!v-79%$ zPW&Y#F!KcO6B|8AuKHGZGnMZsPcr!rm^5XoCvm|mf_76kY9!koJ-8^*NnDiZ{#+<{ zVSdq>WtukEPf`5WVhW+y9-N>;w9_!9o!}CLs~Nl%9E7{j5G-RDSVm_y_#}8WI0{>T z7MupY1%4YGjtpwq4tsDocp|tPcqaG+_-p_+yKS|m`Q!TL1or|z{+_0-1J45=2A={q zgRg>vS}RKA9!-k`zX9$Aeh=&b9|Dg8-&ce1gQtTRg4ctqz*XS=;HFUH~2jz78$~ z*I(4M?clT~O}h%72Dai>Uk*+JxBUtOfu94Hf_r?8h=K3<23y-+Q3}90;ML%<;JduA z1N&bdiqnhAqsSD8!85PIu!Evlzr!H{j|XoCmtDhY1t0!i)8g=y1l>fWz`ujN;Fw!D z#9@lE5S&B17DwBTZPc_x`RHc0#)M&kzh3xDryGl7MG4uK^zGt$N7L?=%KjFs(^T+* z1*a+#&7Jte)pp4M@jcZnNfb7^yrfgB7$lA13R%{v6jjkl*eQ)Mzam<^NUv4&jo$$S z949VvOe@lP)n8=t*HjE-E2*hsr1+N7mUb5!O%o1HD6UPL|aCo^y0{xL3o}jvA z(P>+uc|cdNhknqUgDmMUvRuf1fDDefNZnY-zNV<%>-#PO$K=auSE6M*v5D?ZLzc)V3}%q%VO?~ z>R8xZq^K1U;tjH|h!&G+9O~cDoE3w_1!`CkiyQRMD+Y+4$i8x!SWRE9>?A7b=ams6 zk8G>Di&2!dDn*phYpZ(Vms9nsXwii}gFKbQ>J;$|rLG7$ew5REEWkh_;hsYb~C5zmVF*ppx zkj1bBD+U)rR!+%lRNE0~W=PG;7VCJ#PDXYew0BX#nx5huEm{*BW;?2BcS#!*8IMqG zWOr&<6Cu{qjWwN2LC46l_6f0zrmXENZqqw!W5r%-SgVSQba`!r$$Wy^th>KU1@c%g zysec?xdVRP1xAx|S%(}|O$F;z+j(TRR7jLD7VA)G<&4ij`wPuq7c1_gnspK41vi>YCKCk*@D`a$ARO5HFzxf#i;xAZx}VjXUbcne9Y z9g-KHx=|ME?H}({zbZKLEv4cXY zqKk6SqZk3+a$eI?aN3j%i*=qU!xCQRmtl#V>z{3jdm|v*lH_caX_@Lb&d)N#ZYdU~ z!Il{g9IeMJNp?$|-4clo=$N6Ow0ihkh-~M8J9(O&CR2JFi#e;U-C{0=s2Td5^Kd%M z3LUJPmL<*PO}-FWt`GWsF9qChprsM9mb!B2EXbTTL-!a~D@!K+HbWOq)82V7@D^(6 zunO?ZcXc<>)J@i?HNCY<4r%GA`I3crUdsP0=|**|!E>J0D~%_0wo}0_ z>A!@rlCh4lX;(y4y3y-7gXeNqQ4|eDiqa`+x9n|aEMP3z9T8#C0ws$tYb+Nqu3*DqJWuX2V!l& zEGl7nCClqr-o$cI!}dVf17Qz@Jo3}S;*X6sJp-8**P#yHSdRD`pJ;vk&Kcf{(|r=1FR^`l#rG-Lr}ZasN)>IW@}z20aiNei zIb|dTzWu?l8#O>153NvwmB{&e-#EiXlJpSu-_|I82H2mW8*Rc__HV`@O0HLJL2^`+Me)6ed<(EqLA@#xq>V^p%w;TKEM{E5 zxQg*z#yyNj7(ZuhrjiC#{KEBMs%}sNI^(!TlHJrn^pS1b5VS+E(@MEMHjWOL$E8+G zVSJTw9^-1pZHzS%1CIaU@t@T2iHcA1vZtWrPgQ)-l^7+_mWV5)jPM;<`Ut+aQ3@4& zss;>%wj0lDJolN-IGb@k<0`rVFI9$@v6;FTY(JOXY;%C|B;!9AzhnG~F@UPisJ0Mv zk@Glh%;UVV)g7tnjEuQNJB56P*cg^eGxRYYGsenio5>QBUp8!}8s}!5VdFC7&l>Zr zGUN-m?;6G}j5Um>7%wv3V*H)4EfsvO+B)KZ%Q@TRjSnS4Cnc8Vf3Aw2(gtrQi31sj zGmc@L$>?INkeI#2@HXW^-Hp6Z%W}Yw4>Z=|yA~ZWp=39MB6Kfw-uScxLzOChcB^>lW_^-2F4o36O5lrv|S0(qj9WQ?`x!c zb!#sm+hA@s`98V4K z{0!Hfj0+`tk}kaECsL^P;@A#T3Z_0kZrb#5FBB>-6(l70NbZ?TX^oEtKRLPJsb`d@ zo|`=SrHPXY$9a}C&TZ?7yBcZ2oi_VgV&Ji8eS*iR(~2> z96EkIG0>O5b4WC&gjDfQQ~aJc*i6~YiGjZ4Tu&vt<8 delta 7716 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 diff --git a/dwm.o b/dwm.o index 2759f7f9c1df5e4bb59f7d4e90adec0d869bbe75..ce4a93b0fa6086961afe38a58e61b599b11a62ff 100644 GIT binary patch delta 6999 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]soGLxb4{$W}Wmu(J_b)y@O#Y=ZtDknH6T2D8mjqIULUXA9g^ zJALa1vnoidSI5E5R;a3%;oZX~xK?k&-w%evYA@w*5>zypV1cOHMIF&#;}41k{^hFu?29~sA5Z2&@<|ynm!q%pP#1 zW1D0Z&(}xaW&9b8hBIvvv%#%4*%~XdiKd*?kIX#Fry;&w9v>&HN`Unl!H)~zpB4P% z0DhR@r^38;31+s3hKvvleurt7tc3ykk-}OG*W0Bc|91_ZKR4Xt31Vp?RCDIM>klf? z9>7Nl{z3r1Wq?X_2Jl|-Vu&BLc!Be0dRt@FHc@=665$&M?5t!>39$OVlZ}ITw9-d) z^zrAvL%eAh!?d%~Z?^~dej!fL-ORW2?25^X+Z?!J@| zVsxPjODvqcl)$C}yF5x?{2YwFJTj#CIn^`~cffC;;<8QuX)?529;uJp3;K?cd@psN zxE21pW8@RpUR1?R3_j`@7INaW+T8#lR}%Ca#>40Z0qH6yLmW+|`le+PL0aZ-!KL7v# delta 7108 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 > 0) { ++ /* find the client after selmon->sel */ ++ for(c = selmon->sel->next; c && (!ISVISIBLE(c) || c->isfloating); c = c->next); ++ if(!c) ++ for(c = selmon->clients; c && (!ISVISIBLE(c) || c->isfloating); c = c->next); ++ ++ } ++ else { ++ /* find the client before selmon->sel */ ++ for(i = selmon->clients; i != selmon->sel; i = i->next) ++ if(ISVISIBLE(i) && !i->isfloating) ++ c = i; ++ if(!c) ++ for(; i; i = i->next) ++ if(ISVISIBLE(i) && !i->isfloating) ++ c = i; ++ } ++ /* find the client before selmon->sel and c */ ++ for(i = selmon->clients; i && (!p || !pc); i = i->next) { ++ if(i->next == selmon->sel) ++ p = i; ++ if(i->next == c) ++ pc = i; ++ } ++ ++ /* swap c and selmon->sel selmon->clients in the selmon->clients list */ ++ if(c && c != selmon->sel) { ++ Client *temp = selmon->sel->next==c?selmon->sel:selmon->sel->next; ++ selmon->sel->next = c->next==selmon->sel?c:c->next; ++ c->next = temp; ++ ++ if(p && p != c) ++ p->next = c; ++ if(pc && pc != selmon->sel) ++ pc->next = selmon->sel; ++ ++ if(selmon->sel == selmon->clients) ++ selmon->clients = c; ++ else if(c == selmon->clients) ++ selmon->clients = selmon->sel; ++ ++ arrange(selmon); ++ } ++} ++ diff --git a/patches/dwm-pertag-20170513-ceac8c9.diff b/patches/dwm-pertag-20170513-ceac8c9.diff new file mode 100644 index 0000000..1a2a3cf --- /dev/null +++ b/patches/dwm-pertag-20170513-ceac8c9.diff @@ -0,0 +1,177 @@ +diff --git a/dwm.c b/dwm.c +index a5ce993..45f1e27 100644 +--- a/dwm.c ++++ b/dwm.c +@@ -112,6 +112,7 @@ typedef struct { + void (*arrange)(Monitor *); + } Layout; + ++typedef struct Pertag Pertag; + struct Monitor { + char ltsymbol[16]; + float mfact; +@@ -131,6 +132,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; + } + +@@ -968,7 +994,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); + } + +@@ -1503,9 +1529,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); +@@ -1524,7 +1550,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); + } + +@@ -1701,7 +1727,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); +@@ -1740,9 +1766,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); + } +@@ -2036,11 +2086,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); + }