sites

public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log | Files | Refs

commit 11308ee7a2844fc18c3d8142f48728330a7971b5
parent cc4200df960f50ba5246ac7964fe96e86ef0d2f4
Author: Tobias Giess <tobias.giess@gmail.com>
Date:   Wed, 17 Jun 2020 19:25:31 +0200

Provide fix for cfacts patch

The current dwm-6.2 port of the cfacts patch does not work on clients in the stack. I added
a new diff file (dwm-cfacts-6.2-1.diff) that solves this issue. It was basically just one line
that got lost during port from version 6.1 to 6.2

Diffstat:
Adwm.suckless.org/patches/cfacts/dwm-cfacts-6.2-1.diff | 117+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mdwm.suckless.org/patches/cfacts/index.md | 2++
2 files changed, 119 insertions(+), 0 deletions(-)

diff --git a/dwm.suckless.org/patches/cfacts/dwm-cfacts-6.2-1.diff b/dwm.suckless.org/patches/cfacts/dwm-cfacts-6.2-1.diff @@ -0,0 +1,117 @@ +From ac76d998f1e70c89b313a2fea676678d511941d4 Mon Sep 17 00:00:00 2001 +From: Tobias Giess <tobias.giess@gmail.com> +Date: Wed, 17 Jun 2020 19:13:02 +0200 +Subject: [PATCH] fix cfacts not working on stack + +One line got lost while porting the cfacts patch from version 6.1 to version 6.2. +This single line caused that the cfacts patch was only working on master clients +but not on stack clients. +--- + config.def.h | 3 +++ + dwm.c | 34 +++++++++++++++++++++++++++++++--- + 2 files changed, 34 insertions(+), 3 deletions(-) + +diff --git a/config.def.h b/config.def.h +index 1c0b587..83910c1 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -70,6 +70,9 @@ static Key keys[] = { + { MODKEY, XK_d, incnmaster, {.i = -1 } }, + { MODKEY, XK_h, setmfact, {.f = -0.05} }, + { MODKEY, XK_l, setmfact, {.f = +0.05} }, ++ { MODKEY|ShiftMask, XK_h, setcfact, {.f = +0.25} }, ++ { MODKEY|ShiftMask, XK_l, setcfact, {.f = -0.25} }, ++ { MODKEY|ShiftMask, XK_o, setcfact, {.f = 0.00} }, + { MODKEY, XK_Return, zoom, {0} }, + { MODKEY, XK_Tab, view, {0} }, + { MODKEY|ShiftMask, XK_c, killclient, {0} }, +diff --git a/dwm.c b/dwm.c +index 4465af1..c0ad1b3 100644 +--- a/dwm.c ++++ b/dwm.c +@@ -87,6 +87,7 @@ typedef struct Client Client; + struct Client { + char name[256]; + float mina, maxa; ++ float cfact; + int x, y, w, h; + int oldx, oldy, oldw, oldh; + int basew, baseh, incw, inch, maxw, maxh, minw, minh; +@@ -200,6 +201,7 @@ static void setclientstate(Client *c, long state); + static void setfocus(Client *c); + static void setfullscreen(Client *c, int fullscreen); + static void setlayout(const Arg *arg); ++static void setcfact(const Arg *arg); + static void setmfact(const Arg *arg); + static void setup(void); + static void seturgent(Client *c, int urg); +@@ -1029,6 +1031,7 @@ manage(Window w, XWindowAttributes *wa) + c->w = c->oldw = wa->width; + c->h = c->oldh = wa->height; + c->oldbw = wa->border_width; ++ c->cfact = 1.0; + + updatetitle(c); + if (XGetTransientForHint(dpy, w, &trans) && (t = wintoclient(trans))) { +@@ -1511,6 +1514,23 @@ setlayout(const Arg *arg) + drawbar(selmon); + } + ++void setcfact(const Arg *arg) { ++ float f; ++ Client *c; ++ ++ c = selmon->sel; ++ ++ if(!arg || !c || !selmon->lt[selmon->sellt]->arrange) ++ return; ++ f = arg->f + c->cfact; ++ if(arg->f == 0.0) ++ f = 1.0; ++ else if(f < 0.25 || f > 4.0) ++ return; ++ c->cfact = f; ++ arrange(selmon); ++} ++ + /* arg > 1.0 will set mfact absolutely */ + void + setmfact(const Arg *arg) +@@ -1674,9 +1694,15 @@ void + tile(Monitor *m) + { + unsigned int i, n, h, mw, my, ty; ++ float mfacts = 0, sfacts = 0; + Client *c; + +- for (n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), n++); ++ for (n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), n++) { ++ if (n < m->nmaster) ++ mfacts += c->cfact; ++ else ++ sfacts += c->cfact; ++ } + if (n == 0) + return; + +@@ -1686,13 +1712,15 @@ tile(Monitor *m) + mw = m->ww; + 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); ++ h = (m->wh - my) * (c->cfact / mfacts); + resize(c, m->wx, m->wy + my, mw - (2*c->bw), h - (2*c->bw), 0); + my += HEIGHT(c); ++ mfacts -= c->cfact; + } else { +- h = (m->wh - ty) / (n - i); ++ h = (m->wh - ty) * (c->cfact / sfacts); + resize(c, m->wx + mw, m->wy + ty, m->ww - mw - (2*c->bw), h - (2*c->bw), 0); + ty += HEIGHT(c); ++ sfacts -= c->cfact; + } + } + +-- +2.27.0 + diff --git a/dwm.suckless.org/patches/cfacts/index.md b/dwm.suckless.org/patches/cfacts/index.md @@ -44,6 +44,7 @@ Download -------- * [dwm-cfacts-6.1.diff](dwm-cfacts-6.1.diff) * [dwm-cfacts-6.2.diff](dwm-cfacts-6.2.diff) +* [dwm-cfacts-6.2-1.diff](dwm-cfacts-6.2-1.diff) Additional layouts with cfacts ------------------------------ @@ -58,3 +59,4 @@ Author * Patrick Steinhardt (pks) <ps@pks.im> * Aaron Duxler <aaron@duxler.xyz> - Additional layouts bottomstack + centeredmaster + deck * mss <mss@waifu.club> - dwm-6.2 port. +* Tobias Giess <tobias.giess@gmail.com> - Fix dwm-6.2 port not working on clients in the stack