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 | } |
