| 
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -56,8 +56,7 @@ void kpress(XKeyEvent * e); | 
															
														
														
													
														
															
																 | 
																 | 
																void match(char *pattern); | 
																 | 
																 | 
																void match(char *pattern); | 
															
														
														
													
														
															
																 | 
																 | 
																void readstdin(void); | 
																 | 
																 | 
																void readstdin(void); | 
															
														
														
													
														
															
																 | 
																 | 
																void run(void); | 
																 | 
																 | 
																void run(void); | 
															
														
														
													
														
															
																 | 
																 | 
																void setup(Bool bottom); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																int strcaseido(const char *text, const char *pattern); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																void setup(int x, int y, int w); | 
															
														
														
													
														
															
																 | 
																 | 
																char *cistrstr(const char *s, const char *sub); | 
																 | 
																 | 
																char *cistrstr(const char *s, const char *sub); | 
															
														
														
													
														
															
																 | 
																 | 
																unsigned int textnw(const char *text, unsigned int len); | 
																 | 
																 | 
																unsigned int textnw(const char *text, unsigned int len); | 
															
														
														
													
														
															
																 | 
																 | 
																unsigned int textw(const char *text); | 
																 | 
																 | 
																unsigned int textw(const char *text); | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																			
																		
																	
																 | 
																@ -80,7 +79,6 @@ unsigned int mw, mh; | 
															
														
														
													
														
															
																 | 
																 | 
																unsigned int promptw = 0; | 
																 | 
																 | 
																unsigned int promptw = 0; | 
															
														
														
													
														
															
																 | 
																 | 
																unsigned int nitem = 0; | 
																 | 
																 | 
																unsigned int nitem = 0; | 
															
														
														
													
														
															
																 | 
																 | 
																unsigned int numlockmask = 0; | 
																 | 
																 | 
																unsigned int numlockmask = 0; | 
															
														
														
													
														
															
																 | 
																 | 
																Bool idomatch = False; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																Bool running = True; | 
																 | 
																 | 
																Bool running = True; | 
															
														
														
													
														
															
																 | 
																 | 
																Display *dpy; | 
																 | 
																 | 
																Display *dpy; | 
															
														
														
													
														
															
																 | 
																 | 
																DC dc = {0}; | 
																 | 
																 | 
																DC dc = {0}; | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																			
																		
																	
																 | 
																@ -91,6 +89,7 @@ Item *next = NULL; | 
															
														
														
													
														
															
																 | 
																 | 
																Item *prev = NULL; | 
																 | 
																 | 
																Item *prev = NULL; | 
															
														
														
													
														
															
																 | 
																 | 
																Item *curr = NULL; | 
																 | 
																 | 
																Item *curr = NULL; | 
															
														
														
													
														
															
																 | 
																 | 
																Window root, win; | 
																 | 
																 | 
																Window root, win; | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																char *(*fstrstr)(const char *, const char *) = strstr; | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																Item * | 
																 | 
																 | 
																Item * | 
															
														
														
													
														
															
																 | 
																 | 
																appenditem(Item *i, Item *last) { | 
																 | 
																 | 
																appenditem(Item *i, Item *last) { | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																			
																		
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -512,12 +511,8 @@ match(char *pattern) { | 
															
														
														
													
														
															
																 | 
																 | 
																		if(!i->matched && !strncasecmp(pattern, i->text, plen)) | 
																 | 
																 | 
																		if(!i->matched && !strncasecmp(pattern, i->text, plen)) | 
															
														
														
													
														
															
																 | 
																 | 
																			j = appenditem(i, j); | 
																 | 
																 | 
																			j = appenditem(i, j); | 
															
														
														
													
														
															
																 | 
																 | 
																	for(i = allitems; i; i = i->next) | 
																 | 
																 | 
																	for(i = allitems; i; i = i->next) | 
															
														
														
													
														
															
																 | 
																 | 
																		if(!i->matched && cistrstr(i->text, pattern)) | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		if(!i->matched && fstrstr(i->text, pattern)) | 
															
														
														
													
														
															
																 | 
																 | 
																			j = appenditem(i, j); | 
																 | 
																 | 
																			j = appenditem(i, j); | 
															
														
														
													
														
															
																 | 
																 | 
																	if(idomatch) | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																		for(i = allitems; i; i = i->next) | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																			if(!i->matched && strcaseido(i->text, pattern)) | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																				j = appenditem(i, j); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																	curr = prev = next = sel = item; | 
																 | 
																 | 
																	curr = prev = next = sel = item; | 
															
														
														
													
														
															
																 | 
																 | 
																	calcoffsets(); | 
																 | 
																 | 
																	calcoffsets(); | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																			
																		
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -569,7 +564,7 @@ run(void) { | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																void | 
																 | 
																 | 
																void | 
															
														
														
													
														
															
																 | 
																 | 
																setup(Bool bottom) { | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																setup(int x, int y, int w) { | 
															
														
														
													
														
															
																 | 
																 | 
																	unsigned int i, j; | 
																 | 
																 | 
																	unsigned int i, j; | 
															
														
														
													
														
															
																 | 
																 | 
																	XModifierKeymap *modmap; | 
																 | 
																 | 
																	XModifierKeymap *modmap; | 
															
														
														
													
														
															
																 | 
																 | 
																	XSetWindowAttributes wa; | 
																 | 
																 | 
																	XSetWindowAttributes wa; | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																			
																		
																	
																 | 
																@ -595,10 +590,9 @@ setup(Bool bottom) { | 
															
														
														
													
														
															
																 | 
																 | 
																	wa.override_redirect = 1; | 
																 | 
																 | 
																	wa.override_redirect = 1; | 
															
														
														
													
														
															
																 | 
																 | 
																	wa.background_pixmap = ParentRelative; | 
																 | 
																 | 
																	wa.background_pixmap = ParentRelative; | 
															
														
														
													
														
															
																 | 
																 | 
																	wa.event_mask = ExposureMask | ButtonPressMask | KeyPressMask; | 
																 | 
																 | 
																	wa.event_mask = ExposureMask | ButtonPressMask | KeyPressMask; | 
															
														
														
													
														
															
																 | 
																 | 
																	mw = DisplayWidth(dpy, screen); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	mw = w ? w : DisplayWidth(dpy, screen); | 
															
														
														
													
														
															
																 | 
																 | 
																	mh = dc.font.height + 2; | 
																 | 
																 | 
																	mh = dc.font.height + 2; | 
															
														
														
													
														
															
																 | 
																 | 
																	win = XCreateWindow(dpy, root, 0, | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																			bottom ? DisplayHeight(dpy, screen) - mh : 0, mw, mh, 0, | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	win = XCreateWindow(dpy, root, x, y, mw, mh, 0, | 
															
														
														
													
														
															
																 | 
																 | 
																			DefaultDepth(dpy, screen), CopyFromParent, | 
																 | 
																 | 
																			DefaultDepth(dpy, screen), CopyFromParent, | 
															
														
														
													
														
															
																 | 
																 | 
																			DefaultVisual(dpy, screen), | 
																 | 
																 | 
																			DefaultVisual(dpy, screen), | 
															
														
														
													
														
															
																 | 
																 | 
																			CWOverrideRedirect | CWBackPixmap | CWEventMask, &wa); | 
																 | 
																 | 
																			CWOverrideRedirect | CWBackPixmap | CWEventMask, &wa); | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																			
																		
																	
																 | 
																@ -622,14 +616,6 @@ setup(Bool bottom) { | 
															
														
														
													
														
															
																 | 
																 | 
																	XMapRaised(dpy, win); | 
																 | 
																 | 
																	XMapRaised(dpy, win); | 
															
														
														
													
														
															
																 | 
																 | 
																} | 
																 | 
																 | 
																} | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																int | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																strcaseido(const char *text, const char *pattern) { | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																	for(; *text && *pattern; text++) | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																		if(tolower((int)*text) == tolower((int)*pattern)) | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																			pattern++; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																	return !*pattern; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																}                                   | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																char * | 
																 | 
																 | 
																char * | 
															
														
														
													
														
															
																 | 
																 | 
																cistrstr(const char *s, const char *sub) { | 
																 | 
																 | 
																cistrstr(const char *s, const char *sub) { | 
															
														
														
													
														
															
																 | 
																 | 
																	int c, csub; | 
																 | 
																 | 
																	int c, csub; | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																			
																		
																	
																	
																		
																			
																		
																	
																	
																 | 
																@ -671,16 +657,13 @@ textw(const char *text) { | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																int | 
																 | 
																 | 
																int | 
															
														
														
													
														
															
																 | 
																 | 
																main(int argc, char *argv[]) { | 
																 | 
																 | 
																main(int argc, char *argv[]) { | 
															
														
														
													
														
															
																 | 
																 | 
																	Bool bottom = False; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	int x = 0, y = 0, w = 0; | 
															
														
														
													
														
															
																 | 
																 | 
																	unsigned int i; | 
																 | 
																 | 
																	unsigned int i; | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																	/* command line args */ | 
																 | 
																 | 
																	/* command line args */ | 
															
														
														
													
														
															
																 | 
																 | 
																	for(i = 1; i < argc; i++) | 
																 | 
																 | 
																	for(i = 1; i < argc; i++) | 
															
														
														
													
														
															
																 | 
																 | 
																		if(!strcmp(argv[i], "-b")) { | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																			bottom = True; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																		} | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																		else if(!strcmp(argv[i], "-i")) | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																			idomatch = True; | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		if(!strcmp(argv[i], "-i")) | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																			fstrstr = cistrstr; | 
															
														
														
													
														
															
																 | 
																 | 
																		else if(!strcmp(argv[i], "-fn")) { | 
																 | 
																 | 
																		else if(!strcmp(argv[i], "-fn")) { | 
															
														
														
													
														
															
																 | 
																 | 
																			if(++i < argc) font = argv[i]; | 
																 | 
																 | 
																			if(++i < argc) font = argv[i]; | 
															
														
														
													
														
															
																 | 
																 | 
																		} | 
																 | 
																 | 
																		} | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																			
																		
																	
																 | 
																@ -699,11 +682,21 @@ main(int argc, char *argv[]) { | 
															
														
														
													
														
															
																 | 
																 | 
																		else if(!strcmp(argv[i], "-sf")) { | 
																 | 
																 | 
																		else if(!strcmp(argv[i], "-sf")) { | 
															
														
														
													
														
															
																 | 
																 | 
																			if(++i < argc) selfg = argv[i]; | 
																 | 
																 | 
																			if(++i < argc) selfg = argv[i]; | 
															
														
														
													
														
															
																 | 
																 | 
																		} | 
																 | 
																 | 
																		} | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		else if(!strcmp(argv[i], "-x")) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																			if(++i < argc) x = atoi(argv[i]); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		} | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		else if(!strcmp(argv[i], "-y")) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																			if(++i < argc) y = atoi(argv[i]); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		} | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		else if(!strcmp(argv[i], "-w")) { | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																			if(++i < argc) w = atoi(argv[i]); | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																		} | 
															
														
														
													
														
															
																 | 
																 | 
																		else if(!strcmp(argv[i], "-v")) | 
																 | 
																 | 
																		else if(!strcmp(argv[i], "-v")) | 
															
														
														
													
														
															
																 | 
																 | 
																			eprint("dmenu-"VERSION", © 2006-2007 Anselm R. Garbe, Sander van Dijk, Michał Janeczek\n"); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																			eprint("dmenu-"VERSION", © 2006-2008 dmenu engineers, see LICENSE for details\n"); | 
															
														
														
													
														
															
																 | 
																 | 
																		else | 
																 | 
																 | 
																		else | 
															
														
														
													
														
															
																 | 
																 | 
																			eprint("usage: dmenu [-b] [-i] [-fn <font>] [-nb <color>] [-nf <color>]\n" | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																			"             [-p <prompt>] [-sb <color>] [-sf <color>] [-v]\n"); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																			eprint("usage: dmenu [-i] [-fn <font>] [-nb <color>] [-nf <color>]\n" | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																			       "             [-p <prompt>] [-sb <color>] [-sf <color>]\n" | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																			       "             [-x <x>] [-y <y>] [-w <w>] [-v]\n"); | 
															
														
														
													
														
															
																 | 
																 | 
																	setlocale(LC_CTYPE, ""); | 
																 | 
																 | 
																	setlocale(LC_CTYPE, ""); | 
															
														
														
													
														
															
																 | 
																 | 
																	dpy = XOpenDisplay(0); | 
																 | 
																 | 
																	dpy = XOpenDisplay(0); | 
															
														
														
													
														
															
																 | 
																 | 
																	if(!dpy) | 
																 | 
																 | 
																	if(!dpy) | 
															
														
														
													
												
													
														
															
																| 
																	
																	
																	
																		
																			
																		
																	
																 | 
																@ -720,7 +713,7 @@ main(int argc, char *argv[]) { | 
															
														
														
													
														
															
																 | 
																 | 
																		readstdin(); | 
																 | 
																 | 
																		readstdin(); | 
															
														
														
													
														
															
																 | 
																 | 
																	} | 
																 | 
																 | 
																	} | 
															
														
														
													
														
															
																 | 
																 | 
																
 | 
																 | 
																 | 
																
 | 
															
														
														
													
														
															
																 | 
																 | 
																	setup(bottom); | 
																 | 
																 | 
																 | 
															
														
														
													
														
															
																 | 
																 | 
																 | 
																 | 
																 | 
																	setup(x, y, w); | 
															
														
														
													
														
															
																 | 
																 | 
																	drawmenu(); | 
																 | 
																 | 
																	drawmenu(); | 
															
														
														
													
														
															
																 | 
																 | 
																	XSync(dpy, False); | 
																 | 
																 | 
																	XSync(dpy, False); | 
															
														
														
													
														
															
																 | 
																 | 
																	run(); | 
																 | 
																 | 
																	run(); | 
															
														
														
													
												
													
														
															
																| 
																	
																		
																			
																		
																	
																	
																	
																 | 
																
  |