Introduction
Introduction Statistics Contact Development Disclaimer Help
dwm-swapfocus-6.0.diff - sites - public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log
Files
Refs
---
dwm-swapfocus-6.0.diff (1482B)
---
1 URL: http://dwm.suckless.org/patches/swapfocus
2 This patch makes it possible to switch focus with one single shortcut (a…
3 instead of having to think if you should use alt-j or alt-k for reaching…
4 last used window.
5
6 diff -r ec4baab78314 dwm.c
7 --- a/dwm.c Mon Dec 19 15:38:30 2011 +0100
8 +++ b/dwm.c Fri Apr 06 08:23:42 2012 +0200
9 @@ -224,6 +224,7 @@
10 static void showhide(Client *c);
11 static void sigchld(int unused);
12 static void spawn(const Arg *arg);
13 +static void swapfocus();
14 static void tag(const Arg *arg);
15 static void tagmon(const Arg *arg);
16 static int textnw(const char *text, unsigned int len);
17 @@ -253,6 +254,7 @@
18 static void zoom(const Arg *arg);
19
20 /* variables */
21 +static Client *prevclient = NULL;
22 static const char broken[] = "broken";
23 static char stext[256];
24 static int screen;
25 @@ -1675,6 +1677,14 @@
26 }
27
28 void
29 +swapfocus(){
30 + Client *c;
31 + for(c = selmon->clients; c && c != prevclient; c = c->next) ;
32 + if(c == prevclient)
33 + focus(prevclient);
34 +}
35 +
36 +void
37 tag(const Arg *arg) {
38 if(selmon->sel && arg->ui & TAGMASK) {
39 selmon->sel->tags = arg->ui & TAGMASK;
40 @@ -1775,6 +1785,7 @@
41 unfocus(Client *c, Bool setfocus) {
42 if(!c)
43 return;
44 + prevclient = c;
45 grabbuttons(c, False);
46 XSetWindowBorder(dpy, c->win, dc.norm[ColBorder]);
47 if(setfocus)
48 @@ -2116,6 +2127,7 @@
49 void
50 zoom(const Arg *arg) {
51 Client *c = selmon->sel;
52 + prevclient = selmon->clients;
53
54 if(!selmon->lt[selmon->sellt]->arrange
55 || (selmon->sel && selmon->sel->isfloating))
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.