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:
		
							
								
								
									
										2
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								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 | ||||
|   | ||||
| @@ -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 }, | ||||
|   | ||||
							
								
								
									
										34
									
								
								config.def.h
									
									
									
									
									
								
							
							
						
						
									
										34
									
								
								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 }, | ||||
|   | ||||
							
								
								
									
										78
									
								
								dwm.c
									
									
									
									
									
								
							
							
						
						
									
										78
									
								
								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(); | ||||
| 	} | ||||
| } | ||||
| @@ -1378,6 +1376,51 @@ setclientstate(Client *c, long state) { | ||||
| 			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 | ||||
| setlayout(const char *arg) { | ||||
| 	static Layout *revert = 0; | ||||
| @@ -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); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user