dwm-multimon-4-status_all-6.1.patch - sites - public wiki contents of suckless.org
(HTM) git clone git://git.suckless.org/sites
(DIR) Log
(DIR) Files
(DIR) Refs
---
dwm-multimon-4-status_all-6.1.patch (6165B)
---
1 From d318ffdc7ab7a365e548776a1d8ed5ccbd67cd42 Mon Sep 17 00:00:00 2001
2 From: "Gary B. Genett" <me@garybgenett.net>
3 Date: Mon, 24 Mar 2014 14:44:04 -0700
4 Subject: added statusall toggle, replacing need for patch
5 MIME-Version: 1.0
6 Content-Type: multipart/mixed; boundary="------------1.8.3.2"
7
8 This is a multi-part message in MIME format.
9 --------------1.8.3.2
10 Content-Type: text/plain; charset=UTF-8; format=fixed
11 Content-Transfer-Encoding: 8bit
12
13 ---
14 config.def.h | 1 +
15 dwm.c | 12 ++++++------
16 2 files changed, 7 insertions(+), 6 deletions(-)
17
18
19 --------------1.8.3.2
20 Content-Type: text/x-patch; name="0004-added-statusall-toggle-replacing-need-for-patch.patch"
21 Content-Transfer-Encoding: 8bit
22 Content-Disposition: attachment; filename="0004-added-statusall-toggle-replacing-need-for-patch.patch"
23
24 diff --git a/config.def.h b/config.def.h
25 index 92b1a461604c81c061f60780dc189a83dd697562..b4759a569dc23754dd240da51dd12607ae93e0f3 100644
26 --- a/config.def.h
27 +++ b/config.def.h
28 @@ -24,20 +24,21 @@ static const Rule rules[] = {
29 /* class instance title tags mask isfloating monitor */
30 { "Gimp", NULL, NULL, 0, True, -1 },
31 { "Firefox", NULL, NULL, 1 << 8, False, -1 },
32 };
33
34 /* layout(s) */
35 static const float mfact = 0.55; /* factor of master area size [0.05..0.95] */
36 static const int nmaster = 1; /* number of clients in master area */
37 static const int nviews = 1; /* number of tags highlighted by default */
38 static const Bool resizehints = True; /* True means respect size hints in tiled resizals */
39 +static const Bool statusall = False;/* True means status is shown in all bars, not just active monitor */
40
41 static const int master[1]; /* nmaster override per monitor */
42 //static const int master[] = {1,-1}; /* monitor 0 = nmaster 1, monitor 1 = no nmaster (all vertical) */
43 static const int views[1]; /* nviews override per monitor */
44 //static const int views[] = {4,~0}; /* monitor 0 = nviews 4, monitor 1 = all (all highlighted) */
45
46 static const Layout layouts[] = {
47 /* symbol arrange function */
48 { "[]=", tile }, /* first entry is default */
49 { "><>", NULL }, /* no layout function means floating behavior */
50 diff --git a/dwm.c b/dwm.c
51 index 2b3bf5f99c95180cfb5a3bb04b4181481fbe7bbd..92aa91a75a39cf1ed298a2279db9974a4f456129 100644
52 --- a/dwm.c
53 +++ b/dwm.c
54 @@ -719,21 +719,21 @@ drawbar(Monitor *m) {
55 drw_setscheme(drw, &scheme[SchemeNorm]);
56 drw_text(drw, x, 0, w, bh, m->ltsymbol, 0);
57 x += w;
58 char custom[4] = {0}; // needs to be +1 of actual size, for some reason
59 snprintf(custom, sizeof(custom), "<%d>", m->num);
60 w = bmw = TEXTW(custom);
61 drw_setscheme(drw, m == selmon ? &scheme[SchemeSel] : &scheme[SchemeNorm]);
62 drw_text(drw, x, 0, w, bh, custom, 0);
63 x += w;
64 xx = x;
65 - if(m == selmon) { /* status is only drawn on selected monitor */
66 + if(m == selmon || statusall) { /* status is only drawn on selected monitor, unless statusall is true */
67 w = TEXTW(stext);
68 x = m->ww - w;
69 if(x < xx) {
70 x = xx;
71 w = m->ww - xx;
72 }
73 drw_setscheme(drw, &scheme[SchemeNorm]);
74 drw_text(drw, x, 0, w, bh, stext, 0);
75 }
76 else
77 @@ -779,21 +779,21 @@ enternotify(XEvent *e) {
78 return;
79 focus(c);
80 }
81
82 void
83 expose(XEvent *e) {
84 Monitor *m;
85 XExposeEvent *ev = &e->xexpose;
86
87 if(ev->count == 0 && (m = wintomon(ev->window)))
88 - drawbar(m);
89 + statusall ? drawbars() : drawbar(m);
90 }
91
92 void
93 focus(Client *c) {
94 if(!c || !ISVISIBLE(c))
95 for(c = selmon->stack; c && !ISVISIBLE(c); c = c->snext);
96 /* was if(selmon->sel) */
97 if(selmon->sel && selmon->sel != c)
98 unfocus(selmon->sel, False);
99 if(c) {
100 @@ -1222,21 +1222,21 @@ propertynotify(XEvent *e) {
101 updatesizehints(c);
102 break;
103 case XA_WM_HINTS:
104 updatewmhints(c);
105 drawbars();
106 break;
107 }
108 if(ev->atom == XA_WM_NAME || ev->atom == netatom[NetWMName]) {
109 updatetitle(c);
110 if(c == c->mon->sel)
111 - drawbar(c->mon);
112 + statusall ? drawbars() : drawbar(c->mon);
113 }
114 if(ev->atom == netatom[NetWMWindowType])
115 updatewindowtype(c);
116 }
117 }
118
119 void
120 quit(const Arg *arg) {
121 running = False;
122 }
123 @@ -1325,21 +1325,21 @@ resizemouse(const Arg *arg) {
124 focus(NULL);
125 }
126 }
127
128 void
129 restack(Monitor *m) {
130 Client *c;
131 XEvent ev;
132 XWindowChanges wc;
133
134 - drawbar(m);
135 + statusall ? drawbars() : drawbar(m);
136 if(!m->sel)
137 return;
138 if(m->sel->isfloating || !m->lt[m->sellt]->arrange)
139 XRaiseWindow(dpy, m->sel->win);
140 if(m->lt[m->sellt]->arrange) {
141 wc.stack_mode = Below;
142 wc.sibling = m->barwin;
143 for(c = m->stack; c; c = c->snext)
144 if(!c->isfloating && ISVISIBLE(c)) {
145 XConfigureWindow(dpy, c->win, CWSibling|CWStackMode, &wc);
146 @@ -1475,21 +1475,21 @@ setfullscreen(Client *c, Bool fullscreen) {
147 void
148 setlayout(const Arg *arg) {
149 if(!arg || !arg->v || arg->v != selmon->lt[selmon->sellt])
150 selmon->sellt ^= 1;
151 if(arg && arg->v)
152 selmon->lt[selmon->sellt] = (Layout *)arg->v;
153 strncpy(selmon->ltsymbol, selmon->lt[selmon->sellt]->symbol, sizeof selmon->ltsymbol);
154 if(selmon->sel)
155 arrange(selmon);
156 else
157 - drawbar(selmon);
158 + statusall ? drawbars() : drawbar(selmon);
159 }
160
161 /* arg > 1.0 will set mfact absolutly */
162 void
163 setmfact(const Arg *arg) {
164 float f;
165
166 if(!arg || !selmon->lt[selmon->sellt]->arrange)
167 return;
168 f = arg->f < 1.0 ? arg->f + selmon->mfact : arg->f - 1.0;
169 @@ -1941,21 +1941,21 @@ updatetitle(Client *c) {
170 if(!gettextprop(c->win, netatom[NetWMName], c->name, sizeof c->name))
171 gettextprop(c->win, XA_WM_NAME, c->name, sizeof c->name);
172 if(c->name[0] == '\0') /* hack to mark broken clients */
173 strcpy(c->name, broken);
174 }
175
176 void
177 updatestatus(void) {
178 if(!gettextprop(root, XA_WM_NAME, stext, sizeof(stext)))
179 strcpy(stext, "dwm-"VERSION);
180 - drawbar(selmon);
181 + statusall ? drawbars() : drawbar(selmon);
182 }
183
184 void
185 updatewindowtype(Client *c) {
186 Atom state = getatomprop(c, netatom[NetWMState]);
187 Atom wtype = getatomprop(c, netatom[NetWMWindowType]);
188
189 if(state == netatom[NetWMFullscreen])
190 setfullscreen(c, True);
191 if(wtype == netatom[NetWMWindowTypeDialog])
192
193 --------------1.8.3.2--
194
195