diff options
| -rw-r--r-- | config.def.h | 1 | ||||
| -rw-r--r-- | slock.c | 9 | 
2 files changed, 7 insertions, 3 deletions
| diff --git a/config.def.h b/config.def.h index 4bccb5d..fca0ae0 100644 --- a/config.def.h +++ b/config.def.h | |||
| @@ -3,3 +3,4 @@ static const char *colorname[NUMCOLS] = { | |||
| 3 | "#005577", /* during input */ | 3 | "#005577", /* during input */ | 
| 4 | "#CC3333", /* failed/cleared the input */ | 4 | "#CC3333", /* failed/cleared the input */ | 
| 5 | }; | 5 | }; | 
| 6 | static const Bool failonclear = True; | ||
| @@ -26,7 +26,7 @@ | |||
| 26 | enum { | 26 | enum { | 
| 27 | INIT, | 27 | INIT, | 
| 28 | INPUT, | 28 | INPUT, | 
| 29 | EMPTY, | 29 | FAILED, | 
| 30 | NUMCOLS | 30 | NUMCOLS | 
| 31 | }; | 31 | }; | 
| 32 | 32 | ||
| @@ -42,6 +42,7 @@ typedef struct { | |||
| 42 | static Lock **locks; | 42 | static Lock **locks; | 
| 43 | static int nscreens; | 43 | static int nscreens; | 
| 44 | static Bool running = True; | 44 | static Bool running = True; | 
| 45 | static Bool failure = False; | ||
| 45 | static Bool rr; | 46 | static Bool rr; | 
| 46 | static int rrevbase; | 47 | static int rrevbase; | 
| 47 | static int rrerrbase; | 48 | static int rrerrbase; | 
| @@ -153,8 +154,10 @@ readpw(Display *dpy, const char *pws) | |||
| 153 | #else | 154 | #else | 
| 154 | running = !!strcmp(crypt(passwd, pws), pws); | 155 | running = !!strcmp(crypt(passwd, pws), pws); | 
| 155 | #endif | 156 | #endif | 
| 156 | if (running) | 157 | if (running) { | 
| 157 | XBell(dpy, 100); | 158 | XBell(dpy, 100); | 
| 159 | failure = True; | ||
| 160 | } | ||
| 158 | len = 0; | 161 | len = 0; | 
| 159 | break; | 162 | break; | 
| 160 | case XK_Escape: | 163 | case XK_Escape: | 
| @@ -178,7 +181,7 @@ readpw(Display *dpy, const char *pws) | |||
| 178 | } | 181 | } | 
| 179 | } else if (llen != 0 && len == 0) { | 182 | } else if (llen != 0 && len == 0) { | 
| 180 | for (screen = 0; screen < nscreens; screen++) { | 183 | for (screen = 0; screen < nscreens; screen++) { | 
| 181 | XSetWindowBackground(dpy, locks[screen]->win, locks[screen]->colors[EMPTY]); | 184 | XSetWindowBackground(dpy, locks[screen]->win, locks[screen]->colors[failure || failonclear ? FAILED : INIT]); | 
| 182 | XClearWindow(dpy, locks[screen]->win); | 185 | XClearWindow(dpy, locks[screen]->win); | 
| 183 | } | 186 | } | 
| 184 | } | 187 | } | 
