dwm
dynamic window manager
git clone https://9o.is/git/dwm.git
commit 733f1a5b0a75ed18b90ccce94ebb5ad1d2bf8c6c parent dc1a72dc6f0c9d2e235963f2d6b9ce4828274832 Author: Jul <jul@9o.is> Date: Tue, 3 Feb 2026 12:56:12 -0500 navigate focusstack from foreground Diffstat:
| M | dwm.c | | | 21 | +++++++++++++++++---- |
1 file changed, 17 insertions(+), 4 deletions(-)
diff --git a/dwm.c b/dwm.c @@ -923,10 +923,13 @@ expose(XEvent *e) void fgtoggle(const Arg *arg) { - if (selmon->fg) + Client *c = selmon->fg; + if (c) { selmon->fg = NULL; - else + focus(c); + } else { selmon->fg = selmon->sel; + } arrange(selmon); } @@ -1004,7 +1007,13 @@ focusstack(const Arg *arg) if (ISVISIBLE(i)) c = i; } - if (c) { + + if (c && selmon->fg) { + selmon->fg = c; + arrange(selmon); + focus(c); + } + else if (c) { focus(c); restack(selmon); XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w/2, c->h/2); @@ -1549,7 +1558,11 @@ restack(Monitor *m) return; if (m->sel->isfloating || !m->lt[m->sellt]->arrange) XRaiseWindow(dpy, m->sel->win); - if (m->lt[m->sellt]->arrange) { + if (m->fg) { + wc.stack_mode = Above; + XConfigureWindow(dpy, m->fg->win, CWStackMode, &wc); + } + else if (m->lt[m->sellt]->arrange) { wc.stack_mode = Below; wc.sibling = m->barwin; for (c = m->stack; c; c = c->snext)