diff options
| -rw-r--r-- | config.mk | 2 | ||||
| -rw-r--r-- | main.c | 16 | 
2 files changed, 12 insertions, 6 deletions
| @@ -1,5 +1,5 @@  # dmenu version -VERSION = 2.7 +VERSION = 2.8  # Customize below to fit your system @@ -108,11 +108,17 @@ drawmenu(void) {  	XFlush(dpy);  } -static void +static Bool  grabkeyboard(void) { -	while(XGrabKeyboard(dpy, root, True, GrabModeAsync, -			 GrabModeAsync, CurrentTime) != GrabSuccess) +	unsigned int len; + +	for(len = 1000; len; len--) { +		if(XGrabKeyboard(dpy, root, True, GrabModeAsync, GrabModeAsync, CurrentTime) +			== GrabSuccess) +			break;  		usleep(1000); +	} +	return len > 0;  }  static unsigned long @@ -456,10 +462,10 @@ main(int argc, char *argv[]) {  	root = RootWindow(dpy, screen);  	if(isatty(STDIN_FILENO)) {  		maxname = readstdin(); -		grabkeyboard(); +		running = grabkeyboard();  	}  	else { /* prevent keypress loss */ -		grabkeyboard(); +		running = grabkeyboard();  		maxname = readstdin();  	}  	/* init modifier map */ | 
