Xinqi Bao's Git
projects
/
slock.git
/ diff
summary
|
log
|
commit
|
diff
|
tree
raw
|
patch
|
inline
| side by side (parent:
763e528
)
added black window
author
Anselm R. Garbe <
[email protected]
>
Wed, 11 Oct 2006 11:33:04 +0000
(13:33 +0200)
committer
Anselm R. Garbe <
[email protected]
>
Wed, 11 Oct 2006 11:33:04 +0000
(13:33 +0200)
slock.c
diff
|
blob
|
history
diff --git
a/slock.c
b/slock.c
index
824baa2
..
0c02d96
100644
(file)
--- a/
slock.c
+++ b/
slock.c
@@
-15,13
+15,15
@@
int
main(int argc, char **argv) {
char buf[32], passwd[256];
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;
struct spwd *sp;
unsigned int i, len;
Bool running = True;
KeySym ksym;
Display *dpy;
+ Window w;
XEvent ev;
XEvent ev;
+ XSetWindowAttributes wa;
if((argc > 1) && !strncmp(argv[1], "-v", 3)) {
fputs("slock-"VERSION", (C)opyright MMVI Anselm R. Garbe\n", stdout);
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);
}
fputs("slock: cannot open display\n", stderr);
exit(EXIT_FAILURE);
}
+ screen = DefaultScreen(dpy);
/* init */
passwd[0] = 0;
/* init */
passwd[0] = 0;
- while(XGrabKeyboard(dpy,
DefaultRootWindow(dpy
), True, GrabModeAsync,
+ while(XGrabKeyboard(dpy,
RootWindow(dpy, screen
), True, GrabModeAsync,
GrabModeAsync, CurrentTime) != GrabSuccess)
usleep(1000);
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) {
/* 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:
}
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:
passwd[0] = 0;
break;
case XK_Escape:
@@
-87,6
+100,7
@@
main(int argc, char **argv) {
break;
}
}
break;
}
}
+ XDestroyWindow(dpy, w);
XCloseDisplay(dpy);
return 0;
}
XCloseDisplay(dpy);
return 0;
}