diff options
| author | Anselm R. Garbe <arg@10kloc.org> | 2006-10-11 13:33:04 +0200 | 
|---|---|---|
| committer | Anselm R. Garbe <arg@10kloc.org> | 2006-10-11 13:33:04 +0200 | 
| commit | 50bc1a788e8900cb40e8a64a22ddf99393dbe788 (patch) | |
| tree | b5ae8846098f7847b75839b96e777775aa1a2cf7 | |
| parent | 763e52878dba100e79c6f4a837a92e1df0d41ae0 (diff) | |
| download | slock-50bc1a788e8900cb40e8a64a22ddf99393dbe788.tar.gz slock-50bc1a788e8900cb40e8a64a22ddf99393dbe788.tar.xz | |
added black window
| -rw-r--r-- | slock.c | 20 | 
1 files changed, 17 insertions, 3 deletions
| @@ -15,13 +15,15 @@  int  main(int argc, char **argv) {  	char buf[32], passwd[256]; -	int num, prev_nitem; +	int num, prev_nitem, screen;  	struct spwd *sp;  	unsigned int i, len;  	Bool running = True;  	KeySym ksym;  	Display *dpy; +	Window w;  	XEvent ev; +	XSetWindowAttributes wa;  	if((argc > 1) && !strncmp(argv[1], "-v", 3)) {  		fputs("slock-"VERSION", (C)opyright MMVI Anselm R. Garbe\n", stdout); @@ -36,13 +38,23 @@ main(int argc, char **argv) {  		fputs("slock: cannot open display\n", stderr);  		exit(EXIT_FAILURE);  	} +	screen = DefaultScreen(dpy);  	/* init */  	passwd[0] = 0; -	while(XGrabKeyboard(dpy, DefaultRootWindow(dpy), True, GrabModeAsync, +	while(XGrabKeyboard(dpy, RootWindow(dpy, screen), True, GrabModeAsync,  			 GrabModeAsync, CurrentTime) != GrabSuccess)  		usleep(1000); +	wa.override_redirect = 1; +	wa.background_pixel = BlackPixel(dpy, screen); +	w = XCreateWindow(dpy, RootWindow(dpy, screen), 0, 0, +			DisplayWidth(dpy, screen), DisplayHeight(dpy, screen), +			0, DefaultDepth(dpy, screen), CopyFromParent, +			DefaultVisual(dpy, screen), CWOverrideRedirect | CWBackPixel, &wa); +	XMapRaised(dpy, w); +	XSync(dpy, False); +  	/* main event loop */  	while(running && !XNextEvent(dpy, &ev))  		if(ev.type == KeyPress) { @@ -66,7 +78,8 @@ main(int argc, char **argv) {  			}  			switch(ksym) {  			case XK_Return: -				running = strncmp(crypt(passwd, sp->sp_pwdp), sp->sp_pwdp, sizeof(passwd)); +				if((running = strncmp(crypt(passwd, sp->sp_pwdp), sp->sp_pwdp, sizeof(passwd)))) +					XBell(dpy, 100);  				passwd[0] = 0;  				break;  			case XK_Escape: @@ -87,6 +100,7 @@ main(int argc, char **argv) {  				break;  			}  		} +	XDestroyWindow(dpy, w);  	XCloseDisplay(dpy);  	return 0;  } | 
