Introduction
Introduction Statistics Contact Development Disclaimer Help
dwm-cfacts-6.2-1.diff - sites - public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log
Files
Refs
---
dwm-cfacts-6.2-1.diff (3687B)
---
1 From ac76d998f1e70c89b313a2fea676678d511941d4 Mon Sep 17 00:00:00 2001
2 From: Tobias Giess <[email protected]>
3 Date: Wed, 17 Jun 2020 19:13:02 +0200
4 Subject: [PATCH] fix cfacts not working on stack
5
6 One line got lost while porting the cfacts patch from version 6.1 to ver…
7 This single line caused that the cfacts patch was only working on master…
8 but not on stack clients.
9 ---
10 config.def.h | 3 +++
11 dwm.c | 34 +++++++++++++++++++++++++++++++---
12 2 files changed, 34 insertions(+), 3 deletions(-)
13
14 diff --git a/config.def.h b/config.def.h
15 index 1c0b587..83910c1 100644
16 --- a/config.def.h
17 +++ b/config.def.h
18 @@ -70,6 +70,9 @@ static Key keys[] = {
19 { MODKEY, XK_d, incnmaster, {.i …
20 { MODKEY, XK_h, setmfact, {.f …
21 { MODKEY, XK_l, setmfact, {.f …
22 + { MODKEY|ShiftMask, XK_h, setcfact, {.f …
23 + { MODKEY|ShiftMask, XK_l, setcfact, {.f …
24 + { MODKEY|ShiftMask, XK_o, setcfact, {.f …
25 { MODKEY, XK_Return, zoom, {0} …
26 { MODKEY, XK_Tab, view, {0} …
27 { MODKEY|ShiftMask, XK_c, killclient, {0} …
28 diff --git a/dwm.c b/dwm.c
29 index 4465af1..c0ad1b3 100644
30 --- a/dwm.c
31 +++ b/dwm.c
32 @@ -87,6 +87,7 @@ typedef struct Client Client;
33 struct Client {
34 char name[256];
35 float mina, maxa;
36 + float cfact;
37 int x, y, w, h;
38 int oldx, oldy, oldw, oldh;
39 int basew, baseh, incw, inch, maxw, maxh, minw, minh;
40 @@ -200,6 +201,7 @@ static void setclientstate(Client *c, long state);
41 static void setfocus(Client *c);
42 static void setfullscreen(Client *c, int fullscreen);
43 static void setlayout(const Arg *arg);
44 +static void setcfact(const Arg *arg);
45 static void setmfact(const Arg *arg);
46 static void setup(void);
47 static void seturgent(Client *c, int urg);
48 @@ -1029,6 +1031,7 @@ manage(Window w, XWindowAttributes *wa)
49 c->w = c->oldw = wa->width;
50 c->h = c->oldh = wa->height;
51 c->oldbw = wa->border_width;
52 + c->cfact = 1.0;
53
54 updatetitle(c);
55 if (XGetTransientForHint(dpy, w, &trans) && (t = wintoclient(tr…
56 @@ -1511,6 +1514,23 @@ setlayout(const Arg *arg)
57 drawbar(selmon);
58 }
59
60 +void setcfact(const Arg *arg) {
61 + float f;
62 + Client *c;
63 +
64 + c = selmon->sel;
65 +
66 + if(!arg || !c || !selmon->lt[selmon->sellt]->arrange)
67 + return;
68 + f = arg->f + c->cfact;
69 + if(arg->f == 0.0)
70 + f = 1.0;
71 + else if(f < 0.25 || f > 4.0)
72 + return;
73 + c->cfact = f;
74 + arrange(selmon);
75 +}
76 +
77 /* arg > 1.0 will set mfact absolutely */
78 void
79 setmfact(const Arg *arg)
80 @@ -1674,9 +1694,15 @@ void
81 tile(Monitor *m)
82 {
83 unsigned int i, n, h, mw, my, ty;
84 + float mfacts = 0, sfacts = 0;
85 Client *c;
86
87 - for (n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next…
88 + for (n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next…
89 + if (n < m->nmaster)
90 + mfacts += c->cfact;
91 + else
92 + sfacts += c->cfact;
93 + }
94 if (n == 0)
95 return;
96
97 @@ -1686,13 +1712,15 @@ tile(Monitor *m)
98 mw = m->ww;
99 for (i = my = ty = 0, c = nexttiled(m->clients); c; c = nexttil…
100 if (i < m->nmaster) {
101 - h = (m->wh - my) / (MIN(n, m->nmaster) - i);
102 + h = (m->wh - my) * (c->cfact / mfacts);
103 resize(c, m->wx, m->wy + my, mw - (2*c->bw), h …
104 my += HEIGHT(c);
105 + mfacts -= c->cfact;
106 } else {
107 - h = (m->wh - ty) / (n - i);
108 + h = (m->wh - ty) * (c->cfact / sfacts);
109 resize(c, m->wx + mw, m->wy + ty, m->ww - mw - …
110 ty += HEIGHT(c);
111 + sfacts -= c->cfact;
112 }
113 }
114
115 --
116 2.27.0
117
You are viewing proxied material from suckless.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.