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:
Mdwm.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)