~ob/slock

50bc1a788e8900cb40e8a64a22ddf99393dbe788 — Anselm R. Garbe 14 years ago 763e528
added black window
1 files changed, 17 insertions(+), 3 deletions(-)

M slock.c
M slock.c => slock.c +17 -3
@@ 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;
}