sites

public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log | Files | Refs

commit 0504c0e0c4bea306de6e1c74e276c95cf7cd1f1d
parent 01f3f2f54041b31031becdcd97182bc73cde9a2d
Author: Chris Down <chris@chrisdown.name>
Date:   Thu, 23 Jan 2014 19:13:20 +0800

dwm patches: Add "center" patch

Diffstat:
Adwm.suckless.org/patches/center.md | 18++++++++++++++++++
Adwm.suckless.org/patches/dwm-cdec978-center.diff | 58++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 76 insertions(+), 0 deletions(-)

diff --git a/dwm.suckless.org/patches/center.md 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) <chris@chrisdown.name> diff --git a/dwm.suckless.org/patches/dwm-cdec978-center.diff 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);