commit 069886ac23ea93227f6535d3b03ceef110e7335c
Author: bakkeby <[email protected]>
Date:   Thu Apr 23 10:40:31 2020 +0200

    [dwm][center] Multi-monitor support for center patch
    
    This is a minor update to take the monitor's x and y coordinates into 
account when centering windows.

diff --git a/dwm.suckless.org/patches/center/dwm-center-6.2.diff 
b/dwm.suckless.org/patches/center/dwm-center-6.2.diff
new file mode 100644
index 00000000..0dfe156a
--- /dev/null
+++ b/dwm.suckless.org/patches/center/dwm-center-6.2.diff
@@ -0,0 +1,90 @@
+From 69f91089d9248fa9695eb925956e255a215171b8 Mon Sep 17 00:00:00 2001
+From: bakkeby <[email protected]>
+Date: Tue, 7 Apr 2020 12:29:08 +0200
+Subject: [PATCH] Adding 6.2 center patch with multi-monitor fix and
+ auto-centering of floating popup windows
+---
+ config.def.h |  6 +++---
+ dwm.c        | 13 +++++++++++--
+ 2 files changed, 14 insertions(+), 5 deletions(-)
+
+diff --git a/config.def.h b/config.def.h
+index 1c0b587..44b46e5 100644
+--- a/config.def.h
++++ b/config.def.h
+@@ -26,9 +26,9 @@ static const Rule rules[] = {
+        *      WM_CLASS(STRING) = instance, class
+        *      WM_NAME(STRING) = title
+        */
+-      /* class      instance    title       tags mask     isfloating   
monitor */
+-      { "Gimp",     NULL,       NULL,       0,            1,           -1 },
+-      { "Firefox",  NULL,       NULL,       1 << 8,       0,           -1 },
++      /* class      instance    title       tags mask     iscentered   
isfloating   monitor */
++      { "Gimp",     NULL,       NULL,       0,            0,           1,     
      -1 },
++      { "Firefox",  NULL,       NULL,       1 << 8,       0,           0,     
      -1 },
+ };
+ 
+ /* layout(s) */
+diff --git a/dwm.c b/dwm.c
+index 4465af1..ab33757 100644
+--- a/dwm.c
++++ b/dwm.c
+@@ -92,7 +92,7 @@ struct Client {
+       int basew, baseh, incw, inch, maxw, maxh, minw, minh;
+       int bw, oldbw;
+       unsigned int tags;
+-      int isfixed, isfloating, isurgent, neverfocus, oldstate, isfullscreen;
++      int isfixed, iscentered, isfloating, isurgent, neverfocus, oldstate, 
isfullscreen;
+       Client *next;
+       Client *snext;
+       Monitor *mon;
+@@ -137,6 +137,7 @@ typedef struct {
+       const char *instance;
+       const char *title;
+       unsigned int tags;
++      int iscentered;
+       int isfloating;
+       int monitor;
+ } Rule;
+@@ -285,6 +286,7 @@ applyrules(Client *c)
+       XClassHint ch = { NULL, NULL };
+ 
+       /* rule matching */
++      c->iscentered = 0;
+       c->isfloating = 0;
+       c->tags = 0;
+       XGetClassHint(dpy, c->win, &ch);
+@@ -297,6 +299,7 @@ applyrules(Client *c)
+               && (!r->class || strstr(class, r->class))
+               && (!r->instance || strstr(instance, r->instance)))
+               {
++                      c->iscentered = r->iscentered;
+                       c->isfloating = r->isfloating;
+                       c->tags |= r->tags;
+                       for (m = mons; m && m->num != r->monitor; m = m->next);
+@@ -1056,6 +1059,10 @@ manage(Window w, XWindowAttributes *wa)
+       updatewindowtype(c);
+       updatesizehints(c);
+       updatewmhints(c);
++      if (c->iscentered) {
++              c->x = c->mon->mx + (c->mon->mw - WIDTH(c)) / 2;
++              c->y = c->mon->my + (c->mon->mh - HEIGHT(c)) / 2;
++      }
+       XSelectInput(dpy, w, 
EnterWindowMask|FocusChangeMask|PropertyChangeMask|StructureNotifyMask);
+       grabbuttons(c, 0);
+       if (!c->isfloating)
+@@ -2009,8 +2016,10 @@ updatewindowtype(Client *c)
+ 
+       if (state == netatom[NetWMFullscreen])
+               setfullscreen(c, 1);
+-      if (wtype == netatom[NetWMWindowTypeDialog])
++      if (wtype == netatom[NetWMWindowTypeDialog]) {
++              c->iscentered = 1;
+               c->isfloating = 1;
++      }
+ }
+ 
+ void
+-- 
+2.17.1
+
diff --git a/dwm.suckless.org/patches/center/index.md 
b/dwm.suckless.org/patches/center/index.md
index ab878af6..ef262961 100644
--- a/dwm.suckless.org/patches/center/index.md
+++ b/dwm.suckless.org/patches/center/index.md
@@ -8,6 +8,7 @@ monitor.
 
 Download
 --------
+* [dwm-center-6.2.diff](dwm-center-6.2.diff)
 * [dwm-center-6.1.diff](dwm-center-6.1.diff)
 * [dwm-center-20160719-56a31dc.diff](dwm-center-20160719-56a31dc.diff)
 


Reply via email to