commit 0504c0e0c4bea306de6e1c74e276c95cf7cd1f1d
Author: Chris Down <chris_AT_chrisdown.name>
Date: Thu Jan 23 19:13:20 2014 +0800
dwm patches: Add "center" patch
diff --git a/dwm.suckless.org/patches/center.md b/dwm.suckless.org/patches/center.md
new file mode 100644
index 0000000..94dafac
--- /dev/null
+++ b/dwm.suckless.org/patches/center.md
_AT_@ -0,0 +1,18 @@
+center
+======
+
+Description
+-----------
+
+Adds an "iscentered" rule to automatically center clients on the current
+monitor.
+
+Download
+--------
+
+* [dwm-cdec978-center.diff](dwm-cdec978-center.diff) (2k) (20140123)
+
+Author
+------
+
+* [Chris Down](
https://chrisdown.name) (cdown) <chris_AT_chrisdown.name>
diff --git a/dwm.suckless.org/patches/dwm-cdec978-center.diff b/dwm.suckless.org/patches/dwm-cdec978-center.diff
new file mode 100644
index 0000000..e95ffc4
--- /dev/null
+++ b/dwm.suckless.org/patches/dwm-cdec978-center.diff
_AT_@ -0,0 +1,58 @@
+diff --git a/config.def.h b/config.def.h
+index 875885b..2e3a9fb 100644
+--- a/config.def.h
++++ b/config.def.h
+_AT_@ -21,9 +21,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, True, -1 },
+- { "Firefox", NULL, NULL, 1 << 8, False, -1 },
++ /* class instance title tags mask iscentered isfloating monitor */
++ { "Gimp", NULL, NULL, 0, False, True, -1 },
++ { "Firefox", NULL, NULL, 1 << 8, False, False, -1 },
+ };
+
+ /* layout(s) */
+diff --git a/dwm.c b/dwm.c
+index 1bbb4b3..a8a3356 100644
+--- a/dwm.c
++++ b/dwm.c
+_AT_@ -91,7 +91,7 @@ struct Client {
+ int basew, baseh, incw, inch, maxw, maxh, minw, minh;
+ int bw, oldbw;
+ unsigned int tags;
+- Bool isfixed, isfloating, isurgent, neverfocus, oldstate, isfullscreen;
++ Bool isfixed, iscentered, isfloating, isurgent, neverfocus, oldstate, isfullscreen;
+ Client *next;
+ Client *snext;
+ Monitor *mon;
+_AT_@ -136,6 +136,7 @@ typedef struct {
+ const char *instance;
+ const char *title;
+ unsigned int tags;
++ Bool iscentered;
+ Bool isfloating;
+ int monitor;
+ } Rule;
+_AT_@ -294,6 +295,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_@ -1038,6 +1040,11 @@ manage(Window w, XWindowAttributes *wa) {
+ && (c->x + (c->w / 2) < c->mon->wx + c->mon->ww)) ? bh : c->mon->my);
+ c->bw = borderpx;
+
++ if(c->iscentered) {
++ c->x = (c->mon->mw - WIDTH(c)) / 2;
++ c->y = (c->mon->mh - HEIGHT(c)) / 2;
++ }
++
+ wc.border_width = c->bw;
+ XConfigureWindow(dpy, w, CWBorderWidth, &wc);
+ XSetWindowBorder(dpy, w, scheme[SchemeNorm].border->rgb);
Received on Thu Jan 23 2014 - 12:18:40 CET