diff options
| -rw-r--r-- | Makefile | 2 | ||||
| -rw-r--r-- | config.anselm.h | 97 | ||||
| -rw-r--r-- | config.def.h | 34 | ||||
| -rw-r--r-- | dwm.c | 78 | 
4 files changed, 115 insertions, 96 deletions
| @@ -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 index e60a2c8..0e0d3be 100644 --- 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 index 4118d68..c1eedd4 100644 --- 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 }, @@ -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); | 
