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

This commit is contained in:
Anselm R Garbe 2008-03-13 10:11:02 +00:00
parent 59107755c8
commit 95eae7b9d2
4 changed files with 115 additions and 96 deletions

View file

@ -35,7 +35,7 @@ clean:
dist: clean dist: clean
@echo creating dist tarball @echo creating dist tarball
@mkdir -p dwm-${VERSION} @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} dwm.1 ${SRC} dwm-${VERSION}
@tar -cf dwm-${VERSION}.tar dwm-${VERSION} @tar -cf dwm-${VERSION}.tar dwm-${VERSION}
@gzip dwm-${VERSION}.tar @gzip dwm-${VERSION}.tar

View file

@ -10,35 +10,6 @@
#define SELBGCOLOR "#0066ff" #define SELBGCOLOR "#0066ff"
#define SELFGCOLOR "#ffffff" #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 */ /* tagging */
const char tags[][MAXTAGLEN] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" }; const char tags[][MAXTAGLEN] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
@ -56,24 +27,78 @@ Rule rules[] = {
Layout layouts[] = { Layout layouts[] = {
/* symbol function isfloating */ /* symbol function isfloating */
{ "[]|", tileh, False }, /* first entry is default */ { "[]=", tilev, False }, /* first entry is default */
{ "[]=", tilev, False }, { "[]|", tileh, False },
{ "><>", floating, True }, { "><>", floating, True },
{ "[M]", monocle, 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 */ /* key definitions */
#define MODKEY Mod1Mask #define MODKEY Mod1Mask
Key keys[] = { Key keys[] = {
/* modifier key function argument */ /* modifier key function argument */
#if ANSELM_OFFICE
{ MODKEY, XK_p, spawn, { MODKEY, XK_p, spawn,
"exec dmenu_run -fn '"FONT"' -nb '"NORMBGCOLOR"' -nf '"NORMFGCOLOR"' -sb '"SELBGCOLOR"' -sf '"SELFGCOLOR"' -x 0 -y 0 -w 1280" }, "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|ShiftMask, XK_Return, spawn, "exec uxterm" },
{ MODKEY, XK_a, anselmgeoms, NULL },
{ MODKEY, XK_d, defgeoms, NULL },
{ MODKEY, XK_j, focusnext, NULL }, { MODKEY, XK_j, focusnext, NULL },
{ MODKEY, XK_k, focusprev, NULL }, { MODKEY, XK_k, focusprev, NULL },
{ MODKEY, XK_r, reapply, NULL }, { MODKEY, XK_r, reapply, NULL },

View file

@ -10,35 +10,6 @@
#define SELBGCOLOR "#0066ff" #define SELBGCOLOR "#0066ff"
#define SELFGCOLOR "#ffffff" #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 */ /* tagging */
const char tags[][MAXTAGLEN] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" }; const char tags[][MAXTAGLEN] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
@ -66,13 +37,8 @@ Layout layouts[] = {
#define MODKEY Mod1Mask #define MODKEY Mod1Mask
Key keys[] = { Key keys[] = {
/* modifier key function argument */ /* 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, { MODKEY, XK_p, spawn,
"exec dmenu_run -fn '"FONT"' -nb '"NORMBGCOLOR"' -nf '"NORMFGCOLOR"' -sb '"SELBGCOLOR"' -sf '"SELFGCOLOR"'" }, "exec dmenu_run -fn '"FONT"' -nb '"NORMBGCOLOR"' -nf '"NORMFGCOLOR"' -sb '"SELBGCOLOR"' -sf '"SELFGCOLOR"'" },
#endif
{ MODKEY|ShiftMask, XK_Return, spawn, "exec uxterm" }, { MODKEY|ShiftMask, XK_Return, spawn, "exec uxterm" },
{ MODKEY, XK_j, focusnext, NULL }, { MODKEY, XK_j, focusnext, NULL },
{ MODKEY, XK_k, focusprev, NULL }, { MODKEY, XK_k, focusprev, NULL },

78
dwm.c
View file

@ -160,6 +160,7 @@ void restack(void);
void run(void); void run(void);
void scan(void); void scan(void);
void setclientstate(Client *c, long state); void setclientstate(Client *c, long state);
void setdefaultgeoms(void);
void setlayout(const char *arg); void setlayout(const char *arg);
void setup(void); void setup(void);
void spawn(const char *arg); void spawn(const char *arg);
@ -220,6 +221,7 @@ Display *dpy;
DC dc = {0}; DC dc = {0};
Layout *lt = NULL; Layout *lt = NULL;
Window root, barwin; Window root, barwin;
void (*setgeoms)(void) = setdefaultgeoms;
/* configuration, allows nested code to access above variables */ /* configuration, allows nested code to access above variables */
#include "config.h" #include "config.h"
@ -404,11 +406,7 @@ configurenotify(XEvent *e) {
XConfigureEvent *ev = &e->xconfigure; XConfigureEvent *ev = &e->xconfigure;
if(ev->window == root && (ev->width != sw || ev->height != sh)) { if(ev->window == root && (ev->width != sw || ev->height != sh)) {
sw = ev->width; setgeoms();
sh = ev->height;
XFreePixmap(dpy, dc.drawable);
dc.drawable = XCreatePixmap(dpy, root, bw, bh, DefaultDepth(dpy, screen));
XMoveResizeWindow(dpy, barwin, bx, by, bw, bh);
arrange(); arrange();
} }
} }
@ -1378,6 +1376,51 @@ setclientstate(Client *c, long state) {
PropModeReplace, (unsigned char *)data, 2); PropModeReplace, (unsigned char *)data, 2);
} }
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 void
setlayout(const char *arg) { setlayout(const char *arg) {
static Layout *revert = 0; static Layout *revert = 0;
@ -1410,10 +1453,10 @@ setup(void) {
/* init screen */ /* init screen */
screen = DefaultScreen(dpy); screen = DefaultScreen(dpy);
root = RootWindow(dpy, screen); root = RootWindow(dpy, screen);
sx = 0; initfont(FONT);
sy = 0;
sw = DisplayWidth(dpy, screen); /* apply default geometries */
sh = DisplayHeight(dpy, screen); setgeoms();
/* init atoms */ /* init atoms */
wmatom[WMProtocols] = XInternAtom(dpy, "WM_PROTOCOLS", False); wmatom[WMProtocols] = XInternAtom(dpy, "WM_PROTOCOLS", False);
@ -1436,7 +1479,7 @@ setup(void) {
dc.sel[ColBG] = getcolor(SELBGCOLOR); dc.sel[ColBG] = getcolor(SELBGCOLOR);
dc.sel[ColFG] = getcolor(SELFGCOLOR); dc.sel[ColFG] = getcolor(SELFGCOLOR);
initfont(FONT); 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.drawable = XCreatePixmap(dpy, root, DisplayWidth(dpy, screen), bh, DefaultDepth(dpy, screen));
dc.gc = XCreateGC(dpy, root, 0, 0); dc.gc = XCreateGC(dpy, root, 0, 0);
XSetLineAttributes(dpy, dc.gc, 1, LineSolid, CapButt, JoinMiter); XSetLineAttributes(dpy, dc.gc, 1, LineSolid, CapButt, JoinMiter);
@ -1451,21 +1494,6 @@ setup(void) {
/* init layouts */ /* init layouts */
lt = &layouts[0]; 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 */ /* init bar */
for(blw = i = 0; i < LENGTH(layouts); i++) { for(blw = i = 0; i < LENGTH(layouts); i++) {
i = textw(layouts[i].symbol); i = textw(layouts[i].symbol);