removed ido-matching, changed behavior of -i meaning case insensitive matching now, commented -x, -y, -w arguments in dmenu.1
This commit is contained in:
		
							parent
							
								
									7804354106
								
							
						
					
					
						commit
						540a78761b
					
				
							
								
								
									
										2
									
								
								LICENSE
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								LICENSE
									
									
									
									
									
								
							| @ -1,6 +1,6 @@ | ||||
| MIT/X Consortium License | ||||
| 
 | ||||
| © 2006-2007 Anselm R. Garbe <garbeam at gmail dot com> | ||||
| © 2006-2008 Anselm R. Garbe <garbeam at gmail dot com> | ||||
| © 2006-2007 Sander van Dijk <a dot h dot vandijk at gmail dot com> | ||||
| © 2006-2007 Michał Janeczek <janeczek at gmail dot com> | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										2
									
								
								config.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								config.h
									
									
									
									
									
								
							| @ -1,7 +1,7 @@ | ||||
| /* See LICENSE file for copyright and license details. */ | ||||
| 
 | ||||
| /* appearance */ | ||||
| #define FONT			"-*-terminus-medium-*-*-*-*-*-*-*-*-*-*-*" | ||||
| #define FONT			"-*-terminus-medium-r-normal-*-14-*-*-*-*-*-*-*" | ||||
| #define NORMBGCOLOR             "#cccccc" | ||||
| #define NORMFGCOLOR             "#000000" | ||||
| #define SELBGCOLOR              "#0066ff" | ||||
|  | ||||
							
								
								
									
										16
									
								
								dmenu.1
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								dmenu.1
									
									
									
									
									
								
							| @ -3,8 +3,10 @@ | ||||
| dmenu \- dynamic menu | ||||
| .SH SYNOPSIS | ||||
| .B dmenu | ||||
| .RB [ \-b ] | ||||
| .RB [ \-i ] | ||||
| .RB [ \-x " <x>"] | ||||
| .RB [ \-y " <y>"] | ||||
| .RB [ \-w " <width>"] | ||||
| .RB [ \-fn " <font>"] | ||||
| .RB [ \-nb " <color>"] | ||||
| .RB [ \-nf " <color>"] | ||||
| @ -20,11 +22,17 @@ It manages huge amounts (up to 10.000 and more) of user defined menu items | ||||
| efficiently. | ||||
| .SS Options | ||||
| .TP | ||||
| .B \-b | ||||
| makes dmenu appear at the screen bottom (by default it appears at the screen top). | ||||
| .B \-x | ||||
| defines the x coordinate dmenu appears at (0 by default). | ||||
| .TP | ||||
| .B \-y | ||||
| defines the y coordinate dmenu appears at (0 by default). | ||||
| .TP | ||||
| .B \-w | ||||
| defines the width of the dmenu window (screen width by default). | ||||
| .TP | ||||
| .B \-i | ||||
| makes dmenu match menu entries with ignoring intermediate characters. | ||||
| makes dmenu match menu entries case insensitively. | ||||
| .TP | ||||
| .B \-fn <font> | ||||
| defines the font. | ||||
|  | ||||
							
								
								
									
										53
									
								
								dmenu.c
									
									
									
									
									
								
							
							
						
						
									
										53
									
								
								dmenu.c
									
									
									
									
									
								
							| @ -56,8 +56,7 @@ void kpress(XKeyEvent * e); | ||||
| void match(char *pattern); | ||||
| void readstdin(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); | ||||
| unsigned int textnw(const char *text, unsigned int len); | ||||
| unsigned int textw(const char *text); | ||||
| @ -80,7 +79,6 @@ unsigned int mw, mh; | ||||
| unsigned int promptw = 0; | ||||
| unsigned int nitem = 0; | ||||
| unsigned int numlockmask = 0; | ||||
| Bool idomatch = False; | ||||
| Bool running = True; | ||||
| Display *dpy; | ||||
| DC dc = {0}; | ||||
| @ -91,6 +89,7 @@ Item *next = NULL; | ||||
| Item *prev = NULL; | ||||
| Item *curr = NULL; | ||||
| Window root, win; | ||||
| char *(*fstrstr)(const char *, const char *) = strstr; | ||||
| 
 | ||||
| Item * | ||||
| appenditem(Item *i, Item *last) { | ||||
| @ -512,12 +511,8 @@ match(char *pattern) { | ||||
| 		if(!i->matched && !strncasecmp(pattern, i->text, plen)) | ||||
| 			j = appenditem(i, j); | ||||
| 	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); | ||||
| 	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; | ||||
| 	calcoffsets(); | ||||
| } | ||||
| @ -569,7 +564,7 @@ run(void) { | ||||
| } | ||||
| 
 | ||||
| void | ||||
| setup(Bool bottom) { | ||||
| setup(int x, int y, int w) { | ||||
| 	unsigned int i, j; | ||||
| 	XModifierKeymap *modmap; | ||||
| 	XSetWindowAttributes wa; | ||||
| @ -595,10 +590,9 @@ setup(Bool bottom) { | ||||
| 	wa.override_redirect = 1; | ||||
| 	wa.background_pixmap = ParentRelative; | ||||
| 	wa.event_mask = ExposureMask | ButtonPressMask | KeyPressMask; | ||||
| 	mw = DisplayWidth(dpy, screen); | ||||
| 	mw = w ? w : DisplayWidth(dpy, screen); | ||||
| 	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, | ||||
| 			DefaultVisual(dpy, screen), | ||||
| 			CWOverrideRedirect | CWBackPixmap | CWEventMask, &wa); | ||||
| @ -622,14 +616,6 @@ setup(Bool bottom) { | ||||
| 	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 * | ||||
| cistrstr(const char *s, const char *sub) { | ||||
| 	int c, csub; | ||||
| @ -671,16 +657,13 @@ textw(const char *text) { | ||||
| 
 | ||||
| int | ||||
| main(int argc, char *argv[]) { | ||||
| 	Bool bottom = False; | ||||
| 	int x = 0, y = 0, w = 0; | ||||
| 	unsigned int i; | ||||
| 
 | ||||
| 	/* command line args */ | ||||
| 	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")) { | ||||
| 			if(++i < argc) font = argv[i]; | ||||
| 		} | ||||
| @ -699,11 +682,21 @@ main(int argc, char *argv[]) { | ||||
| 		else if(!strcmp(argv[i], "-sf")) { | ||||
| 			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")) | ||||
| 			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 | ||||
| 			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, ""); | ||||
| 	dpy = XOpenDisplay(0); | ||||
| 	if(!dpy) | ||||
| @ -720,7 +713,7 @@ main(int argc, char *argv[]) { | ||||
| 		readstdin(); | ||||
| 	} | ||||
| 
 | ||||
| 	setup(bottom); | ||||
| 	setup(x, y, w); | ||||
| 	drawmenu(); | ||||
| 	XSync(dpy, False); | ||||
| 	run(); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user