dwm-multimon-2-unified_view-6.4.patch - sites - public wiki contents of suckles… | |
git clone git://git.suckless.org/sites | |
Log | |
Files | |
Refs | |
--- | |
dwm-multimon-2-unified_view-6.4.patch (6582B) | |
--- | |
1 From 96ebf3ddfad143aec93a7d2aa212389121ccae41 Mon Sep 17 00:00:00 2001 | |
2 From: "Gary B. Genett" <[email protected]> | |
3 Date: Sun, 19 Feb 2023 08:57:30 -0800 | |
4 Subject: added n*view wrappers, for unified multi-monitor | |
5 MIME-Version: 1.0 | |
6 Content-Type: multipart/mixed; boundary="------------2.37.4" | |
7 | |
8 This is a multi-part message in MIME format. | |
9 --------------2.37.4 | |
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 | 26 ++++++++++++++++++++++++++ | |
16 2 files changed, 31 insertions(+) | |
17 | |
18 | |
19 --------------2.37.4 | |
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 9d549ce8628e1a7769ee2a3d5c0a4c6d56ce6931..c59d27597a62ddf884baacde… | |
26 --- a/config.def.h | |
27 +++ b/config.def.h | |
28 @@ -38,24 +38,27 @@ static const int resizehints = 1; /* 1 means resp… | |
29 static const int lockfullscreen = 1; /* 1 will force focus on the fulls… | |
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", d… | |
55 static const char *termcmd[] = { "st", NULL }; | |
56 @@ -105,14 +108,16 @@ static const 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 bc5160a7d46ab07da82f0595abb7700debb2b891..2cf8d78c22c64ff26eda6195… | |
75 --- a/dwm.c | |
76 +++ b/dwm.c | |
77 @@ -206,34 +206,36 @@ static void setmfact(const Arg *arg); | |
78 static void setup(void); | |
79 static void seturgent(Client *c, int urg); | |
80 static void showhide(Client *c); | |
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 *m); | |
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, int setfocus); | |
91 static void unmanage(Client *c, int destroyed); | |
92 static void unmapnotify(XEvent *e); | |
93 static void updatebarpos(Monitor *m); | |
94 static void updatebars(void); | |
95 static void updateclientlist(void); | |
96 static int updategeom(void); | |
97 static void updatenumlockmask(void); | |
98 static void updatesizehints(Client *c); | |
99 static void updatestatus(void); | |
100 static void updatetitle(Client *c); | |
101 static void updatewindowtype(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 @@ -1743,20 +1745,32 @@ toggletag(const Arg *arg) | |
115 if (!selmon->sel) | |
116 return; | |
117 newtags = selmon->sel->tags ^ (arg->ui & TAGMASK); | |
118 if (newtags) { | |
119 selmon->sel->tags = newtags; | |
120 focus(NULL); | |
121 arrange(selmon); | |
122 } | |
123 } | |
124 | |
125 +void | |
126 +ntoggleview(const Arg *arg) | |
127 +{ | |
128 + const Arg n = {.i = +1}; | |
129 + const int mon = selmon->num; | |
130 + do { | |
131 + focusmon(&n); | |
132 + toggleview(arg); | |
133 + } | |
134 + while (selmon->num != mon); | |
135 +} | |
136 + | |
137 void | |
138 toggleview(const Arg *arg) | |
139 { | |
140 unsigned int newtagset = selmon->tagset[selmon->seltags] ^ (arg… | |
141 | |
142 if (newtagset) { | |
143 selmon->tagset[selmon->seltags] = newtagset; | |
144 focus(NULL); | |
145 arrange(selmon); | |
146 } | |
147 @@ -2045,20 +2059,32 @@ updatewmhints(Client *c) | |
148 } else | |
149 c->isurgent = (wmh->flags & XUrgencyHint) ? 1 :… | |
150 if (wmh->flags & InputHint) | |
151 c->neverfocus = !wmh->input; | |
152 else | |
153 c->neverfocus = 0; | |
154 XFree(wmh); | |
155 } | |
156 } | |
157 | |
158 +void | |
159 +nview(const Arg *arg) | |
160 +{ | |
161 + const Arg n = {.i = +1}; | |
162 + const int mon = selmon->num; | |
163 + do { | |
164 + focusmon(&n); | |
165 + view(arg); | |
166 + } | |
167 + while (selmon->num != mon); | |
168 +} | |
169 + | |
170 void | |
171 view(const Arg *arg) | |
172 { | |
173 if ((arg->ui & TAGMASK) == selmon->tagset[selmon->seltags]) | |
174 return; | |
175 selmon->seltags ^= 1; /* toggle sel tagset */ | |
176 if (arg->ui & TAGMASK) | |
177 selmon->tagset[selmon->seltags] = arg->ui & TAGMASK; | |
178 focus(NULL); | |
179 arrange(selmon); | |
180 | |
181 --------------2.37.4-- | |
182 | |
183 |