Introduction
Introduction Statistics Contact Development Disclaimer Help
dwm-multimon-6-swap_focus-6.4.patch - sites - public wiki contents of suckless.…
git clone git://git.suckless.org/sites
Log
Files
Refs
---
dwm-multimon-6-swap_focus-6.4.patch (6495B)
---
1 From de73c72af0250f56f9ac30a5c3f4520da250282a Mon Sep 17 00:00:00 2001
2 From: "Gary B. Genett" <[email protected]>
3 Date: Sun, 19 Feb 2023 09:40:00 -0800
4 Subject: patches/swapfocus: dwm-swapfocus-20160731-56a31dc.diff
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 modified from sites: 38b351cf3689ff3fa4845d35ce9894fd9253dbb8
15 ---
16 config.def.h | 1 +
17 dwm.c | 19 ++++++++++++++++++-
18 2 files changed, 19 insertions(+), 1 deletion(-)
19
20
21 --------------2.37.4
22 Content-Type: text/x-patch; name="0006-patches-swapfocus-dwm-swapfocus-2…
23 Content-Transfer-Encoding: 8bit
24 Content-Disposition: attachment; filename="0006-patches-swapfocus-dwm-sw…
25
26 diff --git a/config.def.h b/config.def.h
27 index fd00f7080db9271912d0e4352434739d3c08e1b3..9a1118791c3a2f875b58bf39…
28 --- a/config.def.h
29 +++ b/config.def.h
30 @@ -79,20 +79,21 @@ static const Key keys[] = {
31 { MODKEY, XK_j, focusstack, {.i …
32 { MODKEY, XK_k, focusstack, {.i …
33 { MODKEY|ShiftMask, XK_j, pushdown, {0} …
34 { MODKEY|ShiftMask, XK_k, pushup, {0} …
35 { MODKEY, XK_i, incnmaster, {.i …
36 { MODKEY, XK_d, incnmaster, {.i …
37 { MODKEY, XK_h, setmfact, {.f …
38 { MODKEY, XK_l, setmfact, {.f …
39 { MODKEY, XK_Return, zoom, {0} …
40 { MODKEY, XK_Tab, view, {0} …
41 + { MODKEY|ShiftMask, XK_Tab, swapfocus, {0} …
42 { MODKEY|ShiftMask, XK_c, killclient, {0} …
43 { MODKEY, XK_t, setlayout, {.v …
44 { MODKEY, XK_f, setlayout, {.v …
45 { MODKEY, XK_m, setlayout, {.v …
46 { MODKEY, XK_space, setlayout, {0} …
47 { MODKEY|ShiftMask, XK_space, togglefloating, {0} …
48 { MODKEY, XK_0, view, {.ui…
49 { MODKEY|ShiftMask, XK_0, tag, {.ui…
50 { MODKEY, XK_comma, focusmon, {.i …
51 { MODKEY, XK_period, focusmon, {.i …
52 diff --git a/dwm.c b/dwm.c
53 index 5aa229611a27b8aa943308314b494c10e2364137..ac52b8c25991a073db15b55f…
54 --- a/dwm.c
55 +++ b/dwm.c
56 @@ -203,20 +203,21 @@ static int sendevent(Client *c, Atom proto);
57 static void sendmon(Client *c, Monitor *m);
58 static void setclientstate(Client *c, long state);
59 static void setfocus(Client *c);
60 static void setfullscreen(Client *c, int fullscreen);
61 static void setlayout(const Arg *arg);
62 static void setmfact(const Arg *arg);
63 static void setup(void);
64 static void seturgent(Client *c, int urg);
65 static void showhide(Client *c);
66 static void spawn(const Arg *arg);
67 +static void swapfocus(const Arg *arg);
68 static void tag(const Arg *arg);
69 static void tagmon(const Arg *arg);
70 static void tile(Monitor *m);
71 static void togglebar(const Arg *arg);
72 static void togglefloating(const Arg *arg);
73 static void toggletag(const Arg *arg);
74 static void ntoggleview(const Arg *arg);
75 static void toggleview(const Arg *arg);
76 static void unfocus(Client *c, int setfocus);
77 static void unmanage(Client *c, int destroyed);
78 @@ -235,20 +236,21 @@ static void nview(const Arg *arg);
79 static void view(const Arg *arg);
80 static Client *wintoclient(Window w);
81 static Monitor *wintomon(Window w);
82 static int xerror(Display *dpy, XErrorEvent *ee);
83 static int xerrordummy(Display *dpy, XErrorEvent *ee);
84 static int xerrorstart(Display *dpy, XErrorEvent *ee);
85 static void zoom(const Arg *arg);
86 static void reset_view(const Arg *arg);
87
88 /* variables */
89 +static Client *prevclient = NULL;
90 static const char broken[] = "broken";
91 static char stext[256];
92 static int screen;
93 static int sw, sh; /* X display screen geometry width, height…
94 static int bh; /* bar height */
95 static int lrpad; /* sum of left and right padding for text …
96 static int (*xerrorxlib)(Display *, XErrorEvent *);
97 static unsigned int numlockmask = 0;
98 static void (*handler[LASTEvent]) (XEvent *) = {
99 [ButtonPress] = buttonpress,
100 @@ -1721,20 +1723,32 @@ spawn(const Arg *arg)
101 dmenumon[0] = '0' + selmon->num;
102 if (fork() == 0) {
103 if (dpy)
104 close(ConnectionNumber(dpy));
105 setsid();
106 execvp(((char **)arg->v)[0], (char **)arg->v);
107 die("dwm: execvp '%s' failed:", ((char **)arg->v)[0]);
108 }
109 }
110
111 +void
112 +swapfocus(const Arg *arg)
113 +{
114 + Client *c;
115 +
116 + for(c = selmon->clients; c && c != prevclient; c = c->next) ;
117 + if(c == prevclient) {
118 + focus(prevclient);
119 + restack(prevclient->mon);
120 + }
121 +}
122 +
123 void
124 tag(const Arg *arg)
125 {
126 if (selmon->sel && arg->ui & TAGMASK) {
127 selmon->sel->tags = arg->ui & TAGMASK;
128 focus(NULL);
129 arrange(selmon);
130 }
131 }
132
133 @@ -1834,20 +1848,21 @@ toggleview(const Arg *arg)
134 focus(NULL);
135 arrange(selmon);
136 }
137 }
138
139 void
140 unfocus(Client *c, int setfocus)
141 {
142 if (!c)
143 return;
144 + prevclient = c;
145 grabbuttons(c, 0);
146 XSetWindowBorder(dpy, c->win, scheme[SchemeNorm][ColBorder].pix…
147 if (setfocus) {
148 XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentT…
149 XDeleteProperty(dpy, root, netatom[NetActiveWindow]);
150 }
151 }
152
153 void
154 unmanage(Client *c, int destroyed)
155 @@ -2213,25 +2228,27 @@ int
156 xerrorstart(Display *dpy, XErrorEvent *ee)
157 {
158 die("dwm: another window manager is already running");
159 return -1;
160 }
161
162 void
163 zoom(const Arg *arg)
164 {
165 Client *c = selmon->sel;
166 + prevclient = nexttiled(selmon->clients);
167
168 if (!selmon->lt[selmon->sellt]->arrange || !c || c->isfloating)
169 return;
170 if (c == nexttiled(selmon->clients) && !(c = nexttiled(c->next)…
171 - return;
172 + if (!c || !(c = prevclient = nexttiled(c->next)))
173 + return;
174 pop(c);
175 }
176
177 void
178 reset_view(const Arg *arg) {
179 const int mon = selmon->num;
180 Arg n = {.i = +1}; // focusmon(next monitor)
181 Arg m = {.f = 0}; // mfact -> facts[]
182 Arg i = {.i = 0}; // nmaster -> masters[]
183 Arg v = {.ui = 0}; // nviews -> views[]
184
185 --------------2.37.4--
186
187
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.