commit 0504c0e0c4bea306de6e1c74e276c95cf7cd1f1d
Author: Chris Down <[email protected]>
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
@@ -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) <[email protected]>
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
@@ -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
+@@ -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
+@@ -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;
+@@ -136,6 +136,7 @@ typedef struct {
+       const char *instance;
+       const char *title;
+       unsigned int tags;
++      Bool iscentered;
+       Bool isfloating;
+       int monitor;
+ } Rule;
+@@ -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);
+@@ -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);


Reply via email to