Introduction
Introduction Statistics Contact Development Disclaimer Help
dwm-layoutmonitorrules-20211216-a786211d6cb7.diff - sites - public wiki content…
git clone git://git.suckless.org/sites
Log
Files
Refs
---
dwm-layoutmonitorrules-20211216-a786211d6cb7.diff (2609B)
---
1 diff --git config.def.h config.def.h
2 index a2ac963..9af5393 100644
3 --- config.def.h
4 +++ config.def.h
5 @@ -37,6 +37,11 @@ static const int nmaster = 1; /* number of cli…
6 static const int resizehints = 1; /* 1 means respect size hints in t…
7 static const int lockfullscreen = 1; /* 1 will force focus on the fulls…
8
9 +static const LayoutMonitorRule lm_rules[] = {
10 + /* >=w, >=h, req'd layout, new nmaster, new mfact */
11 + { 3000, 0, 0, 2, 0.66 },
12 +};
13 +
14 static const Layout layouts[] = {
15 /* symbol arrange function */
16 { "[]=", tile }, /* first entry is default */
17 diff --git dwm.c dwm.c
18 index 5e4d494..d462775 100644
19 --- dwm.c
20 +++ dwm.c
21 @@ -111,6 +111,13 @@ typedef struct {
22 void (*arrange)(Monitor *);
23 } Layout;
24
25 +typedef struct {
26 + int mw, mh; /* >= matching */
27 + int layout; /* only apply if this is the current layout, <0 …
28 + int nmaster; /* the new nmaster to apply */
29 + float mfact; /* the new mfact to apply */
30 +} LayoutMonitorRule;
31 +
32 struct Monitor {
33 char ltsymbol[16];
34 float mfact;
35 @@ -142,6 +149,7 @@ typedef struct {
36 } Rule;
37
38 /* function declarations */
39 +static void applylmrules(void);
40 static void applyrules(Client *c);
41 static int applysizehints(Client *c, int *x, int *y, int *w, int *h, in…
42 static void arrange(Monitor *m);
43 @@ -276,6 +284,31 @@ static Window root, wmcheckwin;
44 struct NumTags { char limitexceeded[LENGTH(tags) > 31 ? -1 : 1]; };
45
46 /* function implementations */
47 +void
48 +applylmrules(void)
49 +{
50 + float new_mfact = mfact;
51 + int new_nmaster = nmaster;
52 + size_t i;
53 +
54 + for (i = 0; i < LENGTH(lm_rules); i++) {
55 + const LayoutMonitorRule *lmr = &lm_rules[i];
56 +
57 + if (selmon->mw >= lmr->mw &&
58 + selmon->mh >= lmr->mh &&
59 + selmon->sellt == lmr->layout)
60 + {
61 + new_mfact = lmr->mfact;
62 + new_nmaster = lmr->nmaster;
63 + break;
64 + }
65 + }
66 +
67 + selmon->mfact = new_mfact;
68 + selmon->nmaster = new_nmaster;
69 + arrange(selmon);
70 +}
71 +
72 void
73 applyrules(Client *c)
74 {
75 @@ -572,6 +605,7 @@ configurenotify(XEvent *e)
76 }
77 focus(NULL);
78 arrange(NULL);
79 + applylmrules();
80 }
81 }
82 }
83 @@ -1506,9 +1540,8 @@ setlayout(const Arg *arg)
84 if (arg && arg->v)
85 selmon->lt[selmon->sellt] = (Layout *)arg->v;
86 strncpy(selmon->ltsymbol, selmon->lt[selmon->sellt]->symbol, si…
87 - if (selmon->sel)
88 - arrange(selmon);
89 - else
90 + applylmrules();
91 + if (!selmon->sel)
92 drawbar(selmon);
93 }
94
95 @@ -1595,6 +1628,7 @@ setup(void)
96 XSelectInput(dpy, root, wa.event_mask);
97 grabkeys();
98 focus(NULL);
99 + applylmrules();
100 }
101
102
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.