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 | 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 Sander van Dijk <a dot h dot vandijk at gmail dot com> | ||||||
| © 2006-2007 Michał Janeczek <janeczek 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. */ | /* See LICENSE file for copyright and license details. */ | ||||||
| 
 | 
 | ||||||
| /* appearance */ | /* appearance */ | ||||||
| #define FONT			"-*-terminus-medium-*-*-*-*-*-*-*-*-*-*-*" | #define FONT			"-*-terminus-medium-r-normal-*-14-*-*-*-*-*-*-*" | ||||||
| #define NORMBGCOLOR             "#cccccc" | #define NORMBGCOLOR             "#cccccc" | ||||||
| #define NORMFGCOLOR             "#000000" | #define NORMFGCOLOR             "#000000" | ||||||
| #define SELBGCOLOR              "#0066ff" | #define SELBGCOLOR              "#0066ff" | ||||||
|  | |||||||
							
								
								
									
										16
									
								
								dmenu.1
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								dmenu.1
									
									
									
									
									
								
							| @ -3,8 +3,10 @@ | |||||||
| dmenu \- dynamic menu | dmenu \- dynamic menu | ||||||
| .SH SYNOPSIS | .SH SYNOPSIS | ||||||
| .B dmenu | .B dmenu | ||||||
| .RB [ \-b ] |  | ||||||
| .RB [ \-i ] | .RB [ \-i ] | ||||||
|  | .RB [ \-x " <x>"] | ||||||
|  | .RB [ \-y " <y>"] | ||||||
|  | .RB [ \-w " <width>"] | ||||||
| .RB [ \-fn " <font>"] | .RB [ \-fn " <font>"] | ||||||
| .RB [ \-nb " <color>"] | .RB [ \-nb " <color>"] | ||||||
| .RB [ \-nf " <color>"] | .RB [ \-nf " <color>"] | ||||||
| @ -20,11 +22,17 @@ It manages huge amounts (up to 10.000 and more) of user defined menu items | |||||||
| efficiently. | efficiently. | ||||||
| .SS Options | .SS Options | ||||||
| .TP | .TP | ||||||
| .B \-b | .B \-x | ||||||
| makes dmenu appear at the screen bottom (by default it appears at the screen top). | 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 | .TP | ||||||
| .B \-i | .B \-i | ||||||
| makes dmenu match menu entries with ignoring intermediate characters. | makes dmenu match menu entries case insensitively. | ||||||
| .TP | .TP | ||||||
| .B \-fn <font> | .B \-fn <font> | ||||||
| defines the font. | defines the font. | ||||||
|  | |||||||
							
								
								
									
										53
									
								
								dmenu.c
									
									
									
									
									
								
							
							
						
						
									
										53
									
								
								dmenu.c
									
									
									
									
									
								
							| @ -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); | void setup(int x, int y, int w); | ||||||
| int strcaseido(const char *text, const char *pattern); |  | ||||||
| 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,11 +511,7 @@ 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); |  | ||||||
| 	if(idomatch) |  | ||||||
| 		for(i = allitems; i; i = i->next) |  | ||||||
| 			if(!i->matched && strcaseido(i->text, pattern)) |  | ||||||
| 			j = appenditem(i, j); | 			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, | 	win = XCreateWindow(dpy, root, x, y, mw, mh, 0, | ||||||
| 			bottom ? DisplayHeight(dpy, screen) - mh : 0, 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")) { | 		if(!strcmp(argv[i], "-i")) | ||||||
| 			bottom = True; | 			fstrstr = cistrstr; | ||||||
| 		} |  | ||||||
| 		else if(!strcmp(argv[i], "-i")) |  | ||||||
| 			idomatch = True; |  | ||||||
| 		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" | 			eprint("usage: dmenu [-i] [-fn <font>] [-nb <color>] [-nf <color>]\n" | ||||||
| 			"             [-p <prompt>] [-sb <color>] [-sf <color>] [-v]\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(); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user