about summary refs log tree commit diff
path: root/platforms/linux/xorg/dwm-center.diff
diff options
context:
space:
mode:
Diffstat (limited to 'platforms/linux/xorg/dwm-center.diff')
-rw-r--r--platforms/linux/xorg/dwm-center.diff83
1 files changed, 83 insertions, 0 deletions
diff --git a/platforms/linux/xorg/dwm-center.diff b/platforms/linux/xorg/dwm-center.diff
new file mode 100644
index 0000000..1bacb63
--- /dev/null
+++ b/platforms/linux/xorg/dwm-center.diff
@@ -0,0 +1,83 @@
+diff --git a/config.h b/config.h
+index 747d9a0..780550a 100644
+--- a/config.h
++++ b/config.h
+@@ -49,12 +49,12 @@ static const Rule rules[] = {
+ 	 *	WM_CLASS(STRING) = instance, class
+ 	 *	WM_NAME(STRING) = title
+ 	*/
+-	/* class    instance      title       	 tags mask    isfloating   isterminal  noswallow  monitor */
+-	{ "Gimp",     NULL,       NULL,       	    1 << 8,       0,           0,         0,        -1 },
+-	{ TERMCLASS,   NULL,       NULL,       	    0,            0,           1,         0,        -1 },
+-	{ NULL,       NULL,       "Event Tester",   0,            0,           0,         1,        -1 },
+-	{ NULL,      "spterm",    NULL,       	    SPTAG(0),     1,           1,         0,        -1 },
+-	{ NULL,      "spcalc",    NULL,       	    SPTAG(1),     1,           1,         0,        -1 },
++	/* class    instance      title       	 tags mask    iscentered	isfloating   isterminal  noswallow  monitor */
++	{ "Gimp",     NULL,       NULL,       	    1 << 8,       0,  		  0,           0,         0,        -1 },
++	{ TERMCLASS,   NULL,       NULL,       	    0,            0,  		  0,           1,         0,        -1 },
++	{ NULL,       NULL,       "Event Tester",   0,            0,  		  0,           0,         1,        -1 },
++	{ NULL,      "spterm",    NULL,       	    SPTAG(0),     0,  		  1,           1,         0,        -1 },
++	{ NULL,      "spcalc",    NULL,       	    SPTAG(1),     0,  		  1,           1,         0,        -1 },
+ };
+ 
+ /* layout(s) */
+diff --git a/dwm.c b/dwm.c
+index 2e43282..4220f87 100644
+--- a/dwm.c
++++ b/dwm.c
+@@ -119,7 +119,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, isterminal, noswallow, issticky;
++	int isfixed, iscentered, isfloating, isurgent, neverfocus, oldstate, isfullscreen, isterminal, noswallow, issticky;
+ 	pid_t pid;
+ 	Client *next;
+ 	Client *snext;
+@@ -170,6 +170,7 @@ typedef struct {
+ 	const char *instance;
+ 	const char *title;
+ 	unsigned int tags;
++	int iscentered;
+ 	int isfloating;
+ 	int isterminal;
+ 	int noswallow;
+@@ -348,6 +349,7 @@ applyrules(Client *c)
+ 	XClassHint ch = { NULL, NULL };
+ 
+ 	/* rule matching */
++	c->iscentered = 0;
+ 	c->isfloating = 0;
+ 	c->tags = 0;
+ 	XGetClassHint(dpy, c->win, &ch);
+@@ -361,6 +363,7 @@ applyrules(Client *c)
+ 		&& (!r->instance || strstr(instance, r->instance)))
+ 		{
+ 			c->isterminal = r->isterminal;
++			c->iscentered = r->iscentered;
+ 			c->isfloating = r->isfloating;
+ 			c->noswallow  = r->noswallow;
+ 			c->tags |= r->tags;
+@@ -1250,6 +1253,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)
+@@ -2339,8 +2346,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