[wiki] [sites] [dwm][center] Multi-monitor support for center patch || bakkeby

From: <git_AT_suckless.org>
Date: Thu, 23 Apr 2020 10:47:36 +0200

commit 069886ac23ea93227f6535d3b03ceef110e7335c
Author: bakkeby <bakkeby_AT_gmail.com>
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
_AT_@ -0,0 +1,90 @@
+From 69f91089d9248fa9695eb925956e255a215171b8 Mon Sep 17 00:00:00 2001
+From: bakkeby <bakkeby_AT_gmail.com>
+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
+_AT_@ -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
+_AT_@ -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;
+_AT_@ -137,6 +137,7 @@ typedef struct {
+ const char *instance;
+ const char *title;
+ unsigned int tags;
++ int iscentered;
+ int isfloating;
+ int monitor;
+ } Rule;
+_AT_@ -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);
+_AT_@ -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);
+_AT_@ -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)
+_AT_@ -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
_AT_@ -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)
 
Received on Thu Apr 23 2020 - 10:47:36 CEST

This archive was generated by hypermail 2.3.0 : Thu Apr 23 2020 - 10:48:50 CEST