| dwm-6.0-winview.diff - sites - public wiki contents of suckless.org | |
| git clone git://git.suckless.org/sites | |
| Log | |
| Files | |
| Refs | |
| --- | |
| dwm-6.0-winview.diff (2041B) | |
| --- | |
| 1 diff --git a/config.def.h b/config.def.h | |
| 2 index 77ff358..3ba0efe 100644 | |
| 3 --- a/config.def.h | |
| 4 +++ b/config.def.h | |
| 5 @@ -84,6 +84,7 @@ static Key keys[] = { | |
| 6 TAGKEYS( XK_8, 7) | |
| 7 TAGKEYS( XK_9, 8) | |
| 8 { MODKEY|ShiftMask, XK_q, quit, {0} … | |
| 9 + { MODKEY, XK_o, winview, {0} … | |
| 10 }; | |
| 11 | |
| 12 /* button definitions */ | |
| 13 diff --git a/dwm.1 b/dwm.1 | |
| 14 index 5268a06..1188c82 100644 | |
| 15 --- a/dwm.1 | |
| 16 +++ b/dwm.1 | |
| 17 @@ -104,6 +104,9 @@ Increase master area size. | |
| 18 .B Mod1\-h | |
| 19 Decrease master area size. | |
| 20 .TP | |
| 21 +.B Mod1\-o | |
| 22 +Select view of the window in focus. The list of tags to be displayed is… | |
| 23 +.TP | |
| 24 .B Mod1\-Return | |
| 25 Zooms/cycles focused window to/from master area (tiled layouts only). | |
| 26 .TP | |
| 27 diff --git a/dwm.c b/dwm.c | |
| 28 index 1d78655..abf944c 100644 | |
| 29 --- a/dwm.c | |
| 30 +++ b/dwm.c | |
| 31 @@ -247,6 +247,7 @@ static void updatewmhints(Client *c); | |
| 32 static void view(const Arg *arg); | |
| 33 static Client *wintoclient(Window w); | |
| 34 static Monitor *wintomon(Window w); | |
| 35 +static void winview(const Arg* arg); | |
| 36 static int xerror(Display *dpy, XErrorEvent *ee); | |
| 37 static int xerrordummy(Display *dpy, XErrorEvent *ee); | |
| 38 static int xerrorstart(Display *dpy, XErrorEvent *ee); | |
| 39 @@ -2080,6 +2081,26 @@ wintomon(Window w) { | |
| 40 return selmon; | |
| 41 } | |
| 42 | |
| 43 +/* Selects for the view of the focused window. The list of tags */ | |
| 44 +/* to be displayed is matched to the focused window tag list. */ | |
| 45 +void | |
| 46 +winview(const Arg* arg){ | |
| 47 + Window win, win_r, win_p, *win_c; | |
| 48 + unsigned nc; | |
| 49 + int unused; | |
| 50 + Client* c; | |
| 51 + Arg a; | |
| 52 + | |
| 53 + if (!XGetInputFocus(dpy, &win, &unused)) return; | |
| 54 + while(XQueryTree(dpy, win, &win_r, &win_p, &win_c, &nc) | |
| 55 + && win_p != win_r) win = win_p; | |
| 56 + | |
| 57 + if (!(c = wintoclient(win))) return; | |
| 58 + | |
| 59 + a.ui = c->tags; | |
| 60 + view(&a); | |
| 61 +} | |
| 62 + | |
| 63 /* There's no way to check accesses to destroyed windows, thus those ca… | |
| 64 * ignored (especially on UnmapNotify's). Other types of errors call X… | |
| 65 * default error handler, which may call exit. */ |