dwm

my fork of dwm
Index Commits Files Refs README LICENSE
commit 95eae7b9d25602cf5fb25ecbc9d92ead8005c1f8
parent 59107755c8ba155501662f3230b1e5725f282c37
Author: Anselm R Garbe <garbeam@gmail.com>
Date:   Thu, 13 Mar 2008 10:11:02 +0000

removed all defines of geoms, implemented setgeoms() instead, added config.anselm.h to show how I'd like to see that people edit their geoms
Diffstat:
MMakefile | 2+-
Mconfig.anselm.h | 97++++++++++++++++++++++++++++++++++++++++++++++++++-----------------------------
Mconfig.def.h | 34----------------------------------
Mdwm.c | 78+++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------
4 files changed, 115 insertions(+), 96 deletions(-)
diff --git a/Makefile b/Makefile
@@ -35,7 +35,7 @@ clean:
 dist: clean
     @echo creating dist tarball
     @mkdir -p dwm-${VERSION}
-    @cp -R LICENSE Makefile README config.def.h config.mk \
+    @cp -R LICENSE Makefile README config.*.h config.mk \
         dwm.1 ${SRC} dwm-${VERSION}
     @tar -cf dwm-${VERSION}.tar dwm-${VERSION}
     @gzip dwm-${VERSION}.tar
diff --git a/config.anselm.h b/config.anselm.h
@@ -10,35 +10,6 @@
 #define SELBGCOLOR        "#0066ff"
 #define SELFGCOLOR        "#ffffff"
 
-/* bar position */
-#define BX 0
-#define BY 0
-#define BW 1280
-
-/* window area, including floating windows */
-#define WX 0
-#define WY bh
-#define WW sw
-#define WH sh - bh
-
-/* master area */
-#define MX WX
-#define MY bh
-#define MW 1280
-#define MH 800 - bh
-
-/* tile area, might be on a different screen */
-#define TX 1280
-#define TY 0
-#define TW 1680
-#define TH 1050
-
-/* monocle area, might be restricted to a specific screen */
-#define MOX MX
-#define MOY MY
-#define MOW MW
-#define MOH MH
-
 /* tagging */
 const char tags[][MAXTAGLEN] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
 
@@ -56,24 +27,78 @@ Rule rules[] = {
 
 Layout layouts[] = {
     /* symbol        function    isfloating */
-    { "[]|",        tileh,        False }, /* first entry is default */
-    { "[]=",        tilev,        False },
+    { "[]=",        tilev,        False }, /* first entry is default */
+    { "[]|",        tileh,        False },
     { "><>",        floating,    True },
     { "[M]",        monocle,    True },
 };
 
+void
+setanselmgeoms(void) {
+
+    /* screen dimensions */
+    sx = 0;
+    sy = 0;
+    sw = DisplayWidth(dpy, screen);
+    sh = DisplayHeight(dpy, screen);
+
+    /* bar position */
+    bx = sx;
+    by = sy;
+    bw = 1280;
+    bh = dc.font.height + 2;
+
+    /* window area */
+    wx = sx;
+    wy = sy + bh;
+    ww = sw;
+    wh = sh - bh;
+
+    /* master area */
+    mx = wx;
+    my = wy;
+    mw = 1280;
+    mh = 800;
+
+    /* tile area */
+    tx = 1280;
+    ty = 0;
+    tw = ww - 1280;
+    th = wh;
+
+    /* monocle area */
+    mox = mx;
+    moy = my;
+    mow = mw;
+    moh = mh;
+
+    if(dc.drawable != 0)
+        XFreePixmap(dpy, dc.drawable);
+    dc.drawable = XCreatePixmap(dpy, root, bw, bh, DefaultDepth(dpy, screen));
+    XMoveResizeWindow(dpy, barwin, bx, by, bw, bh);
+}
+
+void
+anselmgeoms(const char *arg) {
+    setgeoms = setanselmgeoms;
+    arrange();
+}
+
+void
+defgeoms(const char *arg) {
+    setgeoms = setdefaultgeoms;
+    arrange();
+}
+
 /* key definitions */
 #define MODKEY            Mod1Mask
 Key keys[] = {
     /* modifier            key        function    argument */
-#if ANSELM_OFFICE
     { MODKEY,            XK_p,        spawn,
         "exec dmenu_run -fn '"FONT"' -nb '"NORMBGCOLOR"' -nf '"NORMFGCOLOR"' -sb '"SELBGCOLOR"' -sf '"SELFGCOLOR"' -x 0 -y 0 -w 1280" },
-#else
-    { MODKEY,            XK_p,        spawn,
-        "exec dmenu_run -fn '"FONT"' -nb '"NORMBGCOLOR"' -nf '"NORMFGCOLOR"' -sb '"SELBGCOLOR"' -sf '"SELFGCOLOR"'" },
-#endif
     { MODKEY|ShiftMask,        XK_Return,    spawn, "exec uxterm" },
+    { MODKEY,            XK_a,        anselmgeoms,    NULL },
+    { MODKEY,            XK_d,        defgeoms,    NULL },
     { MODKEY,            XK_j,        focusnext,    NULL },
     { MODKEY,            XK_k,        focusprev,    NULL },
     { MODKEY,            XK_r,        reapply,    NULL },
diff --git a/config.def.h b/config.def.h
@@ -10,35 +10,6 @@
 #define SELBGCOLOR        "#0066ff"
 #define SELFGCOLOR        "#ffffff"
 
-/* bar position */
-#define BX sx
-#define BY sy
-#define BW sw
-
-/* window area */
-#define WX 0
-#define WY bh
-#define WW sw
-#define WH sh - bh
-
-/* master area */
-#define MX WX
-#define MY WY
-#define MW ((int)(((float)sw) * 0.6))
-#define MH WH
-
-/* tile area, might be on a different screen */
-#define TX MX + MW
-#define TY WY
-#define TW WW - MW
-#define TH WH
-
-/* monocle area, might be restricted to a specific screen */
-#define MOX WX
-#define MOY WY
-#define MOW WW
-#define MOH WH
-
 /* tagging */
 const char tags[][MAXTAGLEN] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
 
@@ -66,13 +37,8 @@ Layout layouts[] = {
 #define MODKEY            Mod1Mask
 Key keys[] = {
     /* modifier            key        function    argument */
-#if ANSELM_OFFICE
-    { MODKEY,            XK_p,        spawn,
-        "exec dmenu_run -fn '"FONT"' -nb '"NORMBGCOLOR"' -nf '"NORMFGCOLOR"' -sb '"SELBGCOLOR"' -sf '"SELFGCOLOR"' -x 0 -y 0 -w 1280" },
-#else
     { MODKEY,            XK_p,        spawn,
         "exec dmenu_run -fn '"FONT"' -nb '"NORMBGCOLOR"' -nf '"NORMFGCOLOR"' -sb '"SELBGCOLOR"' -sf '"SELFGCOLOR"'" },
-#endif
     { MODKEY|ShiftMask,        XK_Return,    spawn, "exec uxterm" },
     { MODKEY,            XK_j,        focusnext,    NULL },
     { MODKEY,            XK_k,        focusprev,    NULL },
diff --git a/dwm.c b/dwm.c
@@ -160,6 +160,7 @@ void restack(void);
 void run(void);
 void scan(void);
 void setclientstate(Client *c, long state);
+void setdefaultgeoms(void);
 void setlayout(const char *arg);
 void setup(void);
 void spawn(const char *arg);
@@ -220,6 +221,7 @@ Display *dpy;
 DC dc = {0};
 Layout *lt = NULL;
 Window root, barwin;
+void (*setgeoms)(void) = setdefaultgeoms;
 
 /* configuration, allows nested code to access above variables */
 #include "config.h"
@@ -404,11 +406,7 @@ configurenotify(XEvent *e) {
     XConfigureEvent *ev = &e->xconfigure;
 
     if(ev->window == root && (ev->width != sw || ev->height != sh)) {
-        sw = ev->width;
-        sh = ev->height;
-        XFreePixmap(dpy, dc.drawable);
-        dc.drawable = XCreatePixmap(dpy, root, bw, bh, DefaultDepth(dpy, screen));
-        XMoveResizeWindow(dpy, barwin, bx, by, bw, bh);
+        setgeoms();
         arrange();
     }
 }
@@ -1379,6 +1377,51 @@ setclientstate(Client *c, long state) {
 }
 
 void
+setdefaultgeoms(void) {
+
+    /* screen dimensions */
+    sx = 0;
+    sy = 0;
+    sw = DisplayWidth(dpy, screen);
+    sh = DisplayHeight(dpy, screen);
+
+    /* bar position */
+    bx = sx;
+    by = sy;
+    bw = sw;
+    bh = dc.font.height + 2;
+
+    /* window area */
+    wx = sx;
+    wy = sy + bh;
+    ww = sw;
+    wh = sh - bh;
+
+    /* master area */
+    mx = wx;
+    my = wy;
+    mw = ((float)sw) * 0.55;
+    mh = wh;
+
+    /* tile area */
+    tx = wx;
+    ty = wy;
+    tw = ww - mw;
+    th = wh;
+
+    /* monocle area */
+    mox = wx;
+    moy = wy;
+    mow = ww;
+    moh = wh;
+
+    if(dc.drawable != 0)
+        XFreePixmap(dpy, dc.drawable);
+    dc.drawable = XCreatePixmap(dpy, root, bw, bh, DefaultDepth(dpy, screen));
+    XMoveResizeWindow(dpy, barwin, bx, by, bw, bh);
+}
+
+void
 setlayout(const char *arg) {
     static Layout *revert = 0;
     unsigned int i;
@@ -1410,10 +1453,10 @@ setup(void) {
     /* init screen */
     screen = DefaultScreen(dpy);
     root = RootWindow(dpy, screen);
-    sx = 0;
-    sy = 0;
-    sw = DisplayWidth(dpy, screen);
-    sh = DisplayHeight(dpy, screen);
+    initfont(FONT);
+
+    /* apply default geometries */
+    setgeoms();
 
     /* init atoms */
     wmatom[WMProtocols] = XInternAtom(dpy, "WM_PROTOCOLS", False);
@@ -1436,7 +1479,7 @@ setup(void) {
     dc.sel[ColBG] = getcolor(SELBGCOLOR);
     dc.sel[ColFG] = getcolor(SELFGCOLOR);
     initfont(FONT);
-    dc.h = bh = dc.font.height + 2;
+    dc.h = bh;
     dc.drawable = XCreatePixmap(dpy, root, DisplayWidth(dpy, screen), bh, DefaultDepth(dpy, screen));
     dc.gc = XCreateGC(dpy, root, 0, 0);
     XSetLineAttributes(dpy, dc.gc, 1, LineSolid, CapButt, JoinMiter);
@@ -1451,21 +1494,6 @@ setup(void) {
     /* init layouts */
     lt = &layouts[0];
 
-    /* bar position */
-    bx = BX; by = BY; bw = BW;
-
-    /* window area */
-    wx = WX; wy = WY; ww = WW; wh = WH;
-
-    /* master area */
-    mx = MX; my = MY; mw = MW; mh = MH;
-
-    /* tile area */
-    tx = TX; ty = TY; tw = TW; th = TH;
-
-    /* monocle area */
-    mox = MOX; moy = MOY; mow = MOW; moh = MOH;
-
     /* init bar */
     for(blw = i = 0; i < LENGTH(layouts); i++) {
         i = textw(layouts[i].symbol);