[wiki] [sites] fix: Panel was involved in the focusstack loop of clients || Gunther Klessinger

From: <git_AT_suckless.org>
Date: Thu, 01 Jul 2021 10:17:30 +0200

commit 4fe712170b4169371f0e6f63caa51edf2a05f594
Author: Gunther Klessinger <gunther.klessinger_AT_axiros.com>
Date: Thu Jul 1 10:09:41 2021 +0200

    fix: Panel was involved in the focusstack loop of clients
    
    With the new version of the patch we ignore it on mod+j / mod+k.

diff --git a/dwm.suckless.org/patches/xfce4-panel/dwm-xfce4-panel-20210611-67d76bd.diff b/dwm.suckless.org/patches/xfce4-panel/dwm-xfce4-panel-20210701-67d76bd.diff
similarity index 86%
rename from dwm.suckless.org/patches/xfce4-panel/dwm-xfce4-panel-20210611-67d76bd.diff
rename to dwm.suckless.org/patches/xfce4-panel/dwm-xfce4-panel-20210701-67d76bd.diff
index 48726bf9..dbcdc1fa 100644
--- a/dwm.suckless.org/patches/xfce4-panel/dwm-xfce4-panel-20210611-67d76bd.diff
+++ b/dwm.suckless.org/patches/xfce4-panel/dwm-xfce4-panel-20210701-67d76bd.diff
_AT_@ -1,6 +1,6 @@
-From 7a9b83d0d74f9aca800c1ec0d2e698449c166e86 Mon Sep 17 00:00:00 2001
+From 4e33fe0d465fb24f6b42d4a1fb63d4d7902f1986 Mon Sep 17 00:00:00 2001
 From: Gunther Klessinger <gunther.klessinger_AT_axiros.com>
-Date: Fri, 11 Jun 2021 21:54:29 +0200
+Date: Thu, 1 Jul 2021 09:19:07 +0200
 Subject: [PATCH] Supporting xfce4-panel in dwm
 
 We treat the panel as special window which
_AT_@ -9,14 +9,13 @@ We treat the panel as special window which
 - always has y=0
 - is never shown as active window in the indicators
 - is shown on all tags (via config rule)
+- is ignored on focusstack (MOD+j, MOD+k)
 
 Which window? "xfce4-panel" - configurable in config.h
-
-=> Might work for other panels as well, if you adapt.
 ---
  config.def.h | 2 ++
- dwm.c | 27 ++++++++++++++++++++-------
- 2 files changed, 22 insertions(+), 7 deletions(-)
+ dwm.c | 28 +++++++++++++++++++++-------
+ 2 files changed, 23 insertions(+), 7 deletions(-)
 
 diff --git a/config.def.h b/config.def.h
 index 1c0b587..3b9e7d6 100644
_AT_@ -39,7 +38,7 @@ index 1c0b587..3b9e7d6 100644
 
  /* layout(s) */
 diff --git a/dwm.c b/dwm.c
-index b0b3466..a3b618b 100644
+index b0b3466..956d402 100644
 --- a/dwm.c
 +++ b/dwm.c
 _AT_@ -175,6 +175,7 @@ static long getstate(Window w);
_AT_@ -79,7 +78,15 @@ index b0b3466..a3b618b 100644
         } else {
                 XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime);
                 XDeleteProperty(dpy, root, netatom[NetActiveWindow]);
-_AT_@ -964,6 +970,11 @@ grabkeys(void)
+_AT_@ -853,6 +859,7 @@ focusstack(const Arg *arg)
+ if (c) {
+ focus(c);
+ restack(selmon);
++ if (ispanel(c)) focusstack(arg);
+ }
+ }
+
+_AT_@ -964,6 +971,11 @@ grabkeys(void)
         }
  }
 
_AT_@ -91,7 +98,7 @@ index b0b3466..a3b618b 100644
  void
  incnmaster(const Arg *arg)
  {
-_AT_@ -1049,7 +1060,8 @@ manage(Window w, XWindowAttributes *wa)
+_AT_@ -1049,7 +1061,8 @@ manage(Window w, XWindowAttributes *wa)
         c->y = MAX(c->y, ((c->mon->by == c->mon->my) && (c->x + (c->w / 2) >= c->mon->wx)
                 && (c->x + (c->w / 2) < c->mon->wx + c->mon->ww)) ? bh : c->mon->my);
         c->bw = borderpx;
_AT_@ -101,7 +108,7 @@ index b0b3466..a3b618b 100644
         wc.border_width = c->bw;
         XConfigureWindow(dpy, w, CWBorderWidth, &wc);
         XSetWindowBorder(dpy, w, scheme[SchemeNorm][ColBorder].pixel);
-_AT_@ -1283,6 +1295,7 @@ resizeclient(Client *c, int x, int y, int w, int h)
+_AT_@ -1283,6 +1296,7 @@ resizeclient(Client *c, int x, int y, int w, int h)
         c->oldw = c->w; c->w = wc.width = w;
         c->oldh = c->h; c->h = wc.height = h;
         wc.border_width = c->bw;
_AT_@ -109,7 +116,7 @@ index b0b3466..a3b618b 100644
         XConfigureWindow(dpy, c->win, CWX|CWY|CWWidth|CWHeight|CWBorderWidth, &wc);
         configure(c);
         XSync(dpy, False);
-_AT_@ -1991,7 +2004,7 @@ void
+_AT_@ -1991,7 +2005,7 @@ void
  updatestatus(void)
  {
         if (!gettextprop(root, XA_WM_NAME, stext, sizeof(stext)))
diff --git a/dwm.suckless.org/patches/xfce4-panel/index.md b/dwm.suckless.org/patches/xfce4-panel/index.md
index b0962aa7..af0821d2 100644
--- a/dwm.suckless.org/patches/xfce4-panel/index.md
+++ b/dwm.suckless.org/patches/xfce4-panel/index.md
_AT_@ -13,26 +13,25 @@ as a status bar, i.e.:
 - always has y=0
 - it is never shown as active window in the tag indicators
 - it is shown on all tags (via a tag rule in the config)
+- it is ignored on `focusstack` (MOD+j / MOD+k)
 
 ![dwm_xfce4-panel.png](dwm_xfce4-panel.png)
 
 - The panel does act as systray for third party tools, i.e. the systray patch is no more required
-- Looks best when background is set to solid color, same as the dwm statusline (black in the example)
+- Looks best when background is set to same color as the dwm statusline (black in the example)
 - Using a compositor you can dimm or completely hide it, when not hovered
 
-The patch has been created against dwm6.2.
-
+The patch has been created against dwm6.2.
 
 Download
 --------
 
-* [dwm-xfce4-panel-20210611-67d76bd.diff](dwm-xfce4-panel-20210611-67d76bd.diff) (2021-06-11)
-
+* [dwm-xfce4-panel-20210701-67d76bd.diff](dwm-xfce4-panel-20210701-67d76bd.diff) (2021-07-01)
 
 Notes
 -----
 
-- The workspace switcher won't work interactively, but dwm's interactive tag indicators remain on the left anyway.
+- The workspace switcher won't work interactively, but dwm's interactive tag indicators remain on the left anyway.
 - Some actions in the "session menu" applet (the one with your name as title) won't work out of the box. You might supply your own sub menu or modify the actions of the existing one.
 - The rest of xfce4's 40 or so panel apps _should_ work (if installed) and also custom "applets" (see below) are working
 - Startup: A start via xinitrc should be fine. I use the [autostart](https://dwm.suckless.org/patches/autostart/) patch to start
Received on Thu Jul 01 2021 - 10:17:30 CEST

This archive was generated by hypermail 2.3.0 : Thu Jul 01 2021 - 10:24:44 CEST