diff --git a/config.def.h b/config.def.h
|
|
index 77ff358..3ba0efe 100644
|
|
--- a/config.def.h
|
|
+++ b/config.def.h
|
|
@@ -84,6 +84,7 @@ static Key keys[] = {
|
|
TAGKEYS( XK_8, 7)
|
|
TAGKEYS( XK_9, 8)
|
|
{ MODKEY|ShiftMask, XK_q, quit, {0} },
|
|
+ { MODKEY, XK_o, winview, {0} },
|
|
};
|
|
|
|
/* button definitions */
|
|
diff --git a/dwm.1 b/dwm.1
|
|
index 5268a06..1188c82 100644
|
|
--- a/dwm.1
|
|
+++ b/dwm.1
|
|
@@ -104,6 +104,9 @@ Increase master area size.
|
|
.B Mod1\-h
|
|
Decrease master area size.
|
|
.TP
|
|
+.B Mod1\-o
|
|
+Select view of the window in focus. The list of tags to be displayed is matched to the window tag list.
|
|
+.TP
|
|
.B Mod1\-Return
|
|
Zooms/cycles focused window to/from master area (tiled layouts only).
|
|
.TP
|
|
diff --git a/dwm.c b/dwm.c
|
|
index 1d78655..abf944c 100644
|
|
--- a/dwm.c
|
|
+++ b/dwm.c
|
|
@@ -247,6 +247,7 @@ static void updatewmhints(Client *c);
|
|
static void view(const Arg *arg);
|
|
static Client *wintoclient(Window w);
|
|
static Monitor *wintomon(Window w);
|
|
+static void winview(const Arg* arg);
|
|
static int xerror(Display *dpy, XErrorEvent *ee);
|
|
static int xerrordummy(Display *dpy, XErrorEvent *ee);
|
|
static int xerrorstart(Display *dpy, XErrorEvent *ee);
|
|
@@ -2080,6 +2081,26 @@ wintomon(Window w) {
|
|
return selmon;
|
|
}
|
|
|
|
+/* Selects for the view of the focused window. The list of tags */
|
|
+/* to be displayed is matched to the focused window tag list. */
|
|
+void
|
|
+winview(const Arg* arg){
|
|
+ Window win, win_r, win_p, *win_c;
|
|
+ unsigned nc;
|
|
+ int unused;
|
|
+ Client* c;
|
|
+ Arg a;
|
|
+
|
|
+ if (!XGetInputFocus(dpy, &win, &unused)) return;
|
|
+ while(XQueryTree(dpy, win, &win_r, &win_p, &win_c, &nc)
|
|
+ && win_p != win_r) win = win_p;
|
|
+
|
|
+ if (!(c = wintoclient(win))) return;
|
|
+
|
|
+ a.ui = c->tags;
|
|
+ view(&a);
|
|
+}
|
|
+
|
|
/* There's no way to check accesses to destroyed windows, thus those cases are
|
|
* ignored (especially on UnmapNotify's). Other types of errors call Xlibs
|
|
* default error handler, which may call exit. */
|