Introduction
Introduction Statistics Contact Development Disclaimer Help
dwm-cfacts-6.1.diff - sites - public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log
Files
Refs
---
dwm-cfacts-6.1.diff (3142B)
---
1 diff --git a/config.def.h b/config.def.h
2 index 7054c06..9878dbf 100644
3 --- a/config.def.h
4 +++ b/config.def.h
5 @@ -68,6 +68,9 @@ static Key keys[] = {
6 { MODKEY, XK_d, incnmaster, {.i …
7 { MODKEY, XK_h, setmfact, {.f …
8 { MODKEY, XK_l, setmfact, {.f …
9 + { MODKEY|ShiftMask, XK_h, setcfact, {.f …
10 + { MODKEY|ShiftMask, XK_l, setcfact, {.f …
11 + { MODKEY|ShiftMask, XK_o, setcfact, {.f …
12 { MODKEY, XK_Return, zoom, {0} …
13 { MODKEY, XK_Tab, view, {0} …
14 { MODKEY|ShiftMask, XK_c, killclient, {0} …
15 diff --git a/dwm.c b/dwm.c
16 index 0362114..881afe6 100644
17 --- a/dwm.c
18 +++ b/dwm.c
19 @@ -87,6 +87,7 @@ typedef struct Client Client;
20 struct Client {
21 char name[256];
22 float mina, maxa;
23 + float cfact;
24 int x, y, w, h;
25 int oldx, oldy, oldw, oldh;
26 int basew, baseh, incw, inch, maxw, maxh, minw, minh;
27 @@ -201,6 +202,7 @@ static void setclientstate(Client *c, long state);
28 static void setfocus(Client *c);
29 static void setfullscreen(Client *c, int fullscreen);
30 static void setlayout(const Arg *arg);
31 +static void setcfact(const Arg *arg);
32 static void setmfact(const Arg *arg);
33 static void setup(void);
34 static void showhide(Client *c);
35 @@ -1052,6 +1054,7 @@ manage(Window w, XWindowAttributes *wa)
36 c->w = c->oldw = wa->width;
37 c->h = c->oldh = wa->height;
38 c->oldbw = wa->border_width;
39 + c->cfact = 1.0;
40
41 if (c->x + WIDTH(c) > c->mon->mx + c->mon->mw)
42 c->x = c->mon->mx + c->mon->mw - WIDTH(c);
43 @@ -1528,6 +1531,23 @@ setlayout(const Arg *arg)
44 drawbar(selmon);
45 }
46
47 +void setcfact(const Arg *arg) {
48 + float f;
49 + Client *c;
50 +
51 + c = selmon->sel;
52 +
53 + if(!arg || !c || !selmon->lt[selmon->sellt]->arrange)
54 + return;
55 + f = arg->f + c->cfact;
56 + if(arg->f == 0.0)
57 + f = 1.0;
58 + else if(f < 0.25 || f > 4.0)
59 + return;
60 + c->cfact = f;
61 + arrange(selmon);
62 +}
63 +
64 /* arg > 1.0 will set mfact absolutly */
65 void
66 setmfact(const Arg *arg)
67 @@ -1667,9 +1687,15 @@ void
68 tile(Monitor *m)
69 {
70 unsigned int i, n, h, mw, my, ty;
71 + float mfacts = 0, sfacts = 0;
72 Client *c;
73
74 - for (n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next…
75 + for (n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next…
76 + if (n < m->nmaster)
77 + mfacts += c->cfact;
78 + else
79 + sfacts += c->cfact;
80 + }
81 if (n == 0)
82 return;
83
84 @@ -1679,13 +1705,15 @@ tile(Monitor *m)
85 mw = m->ww;
86 for (i = my = ty = 0, c = nexttiled(m->clients); c; c = nexttil…
87 if (i < m->nmaster) {
88 - h = (m->wh - my) / (MIN(n, m->nmaster) - i);
89 + h = (m->wh - my) * (c->cfact / mfacts);
90 resize(c, m->wx, m->wy + my, mw - (2*c->bw), h …
91 my += HEIGHT(c);
92 + mfacts -= c->cfact;
93 } else {
94 - h = (m->wh - ty) / (n - i);
95 + h = (m->wh - ty) * (c->cfact / sfacts);
96 resize(c, m->wx + mw, m->wy + ty, m->ww - mw - …
97 ty += HEIGHT(c);
98 + sfacts -= c->cfact;
99 }
100 }
101
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.