dwm-multimon-2-unified_view-6.1.patch - sites - public wiki contents of suckles… | |
git clone git://git.suckless.org/sites | |
Log | |
Files | |
Refs | |
--- | |
dwm-multimon-2-unified_view-6.1.patch (6558B) | |
--- | |
1 From 2521a74714bb7c4b8787f30584f1565cc582928b Mon Sep 17 00:00:00 2001 | |
2 From: "Gary B. Genett" <[email protected]> | |
3 Date: Mon, 24 Mar 2014 13:57:47 -0700 | |
4 Subject: added n*view wrappers, for unified multi-monitor | |
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 | 5 +++++ | |
15 dwm.c | 24 ++++++++++++++++++++++++ | |
16 2 files changed, 29 insertions(+) | |
17 | |
18 | |
19 --------------1.8.3.2 | |
20 Content-Type: text/x-patch; name="0002-added-n-view-wrappers-for-unified… | |
21 Content-Transfer-Encoding: 8bit | |
22 Content-Disposition: attachment; filename="0002-added-n-view-wrappers-fo… | |
23 | |
24 diff --git a/config.def.h b/config.def.h | |
25 index af6bcfae52a8d1783158ae4f38f35b88025c04e1..d3b6a4b7bbf244a9d824d993… | |
26 --- a/config.def.h | |
27 +++ b/config.def.h | |
28 @@ -32,24 +32,27 @@ static const int nmaster = 1; /* number of c… | |
29 static const Bool resizehints = True; /* True means respect size hints … | |
30 | |
31 static const Layout layouts[] = { | |
32 /* symbol arrange function */ | |
33 { "[]=", tile }, /* first entry is default */ | |
34 { "><>", NULL }, /* no layout function means floating b… | |
35 { "[M]", monocle }, | |
36 }; | |
37 | |
38 /* key definitions */ | |
39 +#define WINKEY Mod4Mask | |
40 #define MODKEY Mod1Mask | |
41 #define TAGKEYS(KEY,TAG) \ | |
42 { MODKEY, KEY, view, {.ui … | |
43 { MODKEY|ControlMask, KEY, toggleview, {.ui … | |
44 + { MODKEY|WINKEY, KEY, nview, {.ui … | |
45 + { MODKEY|WINKEY|ControlMask, KEY, ntoggleview, {.ui … | |
46 { MODKEY|ShiftMask, KEY, tag, {.ui … | |
47 { MODKEY|ControlMask|ShiftMask, KEY, toggletag, {.ui … | |
48 | |
49 /* helper for spawning shell commands in the pre dwm-5.0 fashion */ | |
50 #define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL }… | |
51 | |
52 /* commands */ | |
53 static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in… | |
54 static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, "-fn", f… | |
55 static const char *termcmd[] = { "st", NULL }; | |
56 @@ -99,14 +102,16 @@ static Button buttons[] = { | |
57 { ClkLtSymbol, 0, Button3, setlayo… | |
58 { ClkMonNum, 0, Button1, focusmo… | |
59 { ClkMonNum, 0, Button3, focusmo… | |
60 { ClkWinTitle, 0, Button2, zoom, … | |
61 { ClkStatusText, 0, Button2, spawn, … | |
62 { ClkClientWin, MODKEY, Button1, movemou… | |
63 { ClkClientWin, MODKEY, Button2, togglef… | |
64 { ClkClientWin, MODKEY, Button3, resizem… | |
65 { ClkTagBar, 0, Button1, view, … | |
66 { ClkTagBar, 0, Button3, togglev… | |
67 + { ClkTagBar, MODKEY|WINKEY, Button1, nview, … | |
68 + { ClkTagBar, MODKEY|WINKEY, Button3, ntoggle… | |
69 { ClkTagBar, MODKEY, Button1, tag, … | |
70 { ClkTagBar, MODKEY, Button3, togglet… | |
71 }; | |
72 | |
73 diff --git a/dwm.c b/dwm.c | |
74 index 209dedc1417a29fb44c3ba5b6fa62f1b75b6a09f..f6e9588d78a01e3263de54e9… | |
75 --- a/dwm.c | |
76 +++ b/dwm.c | |
77 @@ -204,34 +204,36 @@ static void setmfact(const Arg *arg); | |
78 static void setup(void); | |
79 static void showhide(Client *c); | |
80 static void sigchld(int unused); | |
81 static void spawn(const Arg *arg); | |
82 static void tag(const Arg *arg); | |
83 static void tagmon(const Arg *arg); | |
84 static void tile(Monitor *); | |
85 static void togglebar(const Arg *arg); | |
86 static void togglefloating(const Arg *arg); | |
87 static void toggletag(const Arg *arg); | |
88 +static void ntoggleview(const Arg *arg); | |
89 static void toggleview(const Arg *arg); | |
90 static void unfocus(Client *c, Bool setfocus); | |
91 static void unmanage(Client *c, Bool destroyed); | |
92 static void unmapnotify(XEvent *e); | |
93 static Bool updategeom(void); | |
94 static void updatebarpos(Monitor *m); | |
95 static void updatebars(void); | |
96 static void updateclientlist(void); | |
97 static void updatenumlockmask(void); | |
98 static void updatesizehints(Client *c); | |
99 static void updatestatus(void); | |
100 static void updatewindowtype(Client *c); | |
101 static void updatetitle(Client *c); | |
102 static void updatewmhints(Client *c); | |
103 +static void nview(const Arg *arg); | |
104 static void view(const Arg *arg); | |
105 static Client *wintoclient(Window w); | |
106 static Monitor *wintomon(Window w); | |
107 static int xerror(Display *dpy, XErrorEvent *ee); | |
108 static int xerrordummy(Display *dpy, XErrorEvent *ee); | |
109 static int xerrorstart(Display *dpy, XErrorEvent *ee); | |
110 static void zoom(const Arg *arg); | |
111 | |
112 /* variables */ | |
113 static const char broken[] = "broken"; | |
114 @@ -1663,20 +1665,31 @@ toggletag(const Arg *arg) { | |
115 return; | |
116 newtags = selmon->sel->tags ^ (arg->ui & TAGMASK); | |
117 if(newtags) { | |
118 selmon->sel->tags = newtags; | |
119 focus(NULL); | |
120 arrange(selmon); | |
121 } | |
122 } | |
123 | |
124 void | |
125 +ntoggleview(const Arg *arg) { | |
126 + const Arg n = {.i = +1}; | |
127 + const int mon = selmon->num; | |
128 + do { | |
129 + focusmon(&n); | |
130 + toggleview(arg); | |
131 + } | |
132 + while (selmon->num != mon); | |
133 +} | |
134 + | |
135 +void | |
136 toggleview(const Arg *arg) { | |
137 unsigned int newtagset = selmon->tagset[selmon->seltags] ^ (arg… | |
138 | |
139 if(newtagset) { | |
140 selmon->tagset[selmon->seltags] = newtagset; | |
141 focus(NULL); | |
142 arrange(selmon); | |
143 } | |
144 } | |
145 | |
146 @@ -1961,20 +1974,31 @@ updatewmhints(Client *c) { | |
147 c->isurgent = (wmh->flags & XUrgencyHint) ? Tru… | |
148 if(wmh->flags & InputHint) | |
149 c->neverfocus = !wmh->input; | |
150 else | |
151 c->neverfocus = False; | |
152 XFree(wmh); | |
153 } | |
154 } | |
155 | |
156 void | |
157 +nview(const Arg *arg) { | |
158 + const Arg n = {.i = +1}; | |
159 + const int mon = selmon->num; | |
160 + do { | |
161 + focusmon(&n); | |
162 + view(arg); | |
163 + } | |
164 + while (selmon->num != mon); | |
165 +} | |
166 + | |
167 +void | |
168 view(const Arg *arg) { | |
169 if((arg->ui & TAGMASK) == selmon->tagset[selmon->seltags]) | |
170 return; | |
171 selmon->seltags ^= 1; /* toggle sel tagset */ | |
172 if(arg->ui & TAGMASK) | |
173 selmon->tagset[selmon->seltags] = arg->ui & TAGMASK; | |
174 focus(NULL); | |
175 arrange(selmon); | |
176 } | |
177 | |
178 | |
179 --------------1.8.3.2-- | |
180 | |
181 |