diff --git a/config.def.h b/config.def.h index 9855e21..c8b97d6 100644 --- a/config.def.h +++ b/config.def.h @@ -10,3 +10,6 @@ static const char *colorname[NUMCOLS] = { /* treat a cleared input like a wrong password (color) */ static const int failonclear = 1; + +/* border width in pixels */ +static const int BORDER_WIDTH = 4; diff --git a/slock.c b/slock.c index f16781f..e2a0a4e 100644 --- a/slock.c +++ b/slock.c @@ -194,11 +194,12 @@ readpw(Display *dpy, struct xrandr *rr, struct lock **locks, int nscreens, color = len ? INPUT : ((failure || failonclear) ? FAILED : INIT); if (running && oldc != color) { for (screen = 0; screen < nscreens; screen++) { - XSetWindowBackground(dpy, + XSetWindowBorder(dpy, locks[screen]->win, locks[screen]->colors[color]); - XClearWindow(dpy, locks[screen]->win); + // XClearWindow(dpy, locks[screen]->win); } + XSync(dpy, False); oldc = color; } } else if (rr->active && ev.type == rr->evbase + RRScreenChangeNotify) { @@ -248,13 +249,14 @@ lockscreen(Display *dpy, struct xrandr *rr, int screen) /* init */ wa.override_redirect = 1; wa.background_pixel = lock->colors[INIT]; + wa.border_pixel = lock->colors[INIT]; lock->win = XCreateWindow(dpy, lock->root, 0, 0, - DisplayWidth(dpy, lock->screen), - DisplayHeight(dpy, lock->screen), - 0, DefaultDepth(dpy, lock->screen), + DisplayWidth(dpy, lock->screen) - 2 * BORDER_WIDTH, + DisplayHeight(dpy, lock->screen) - 2 * BORDER_WIDTH, + BORDER_WIDTH, DefaultDepth(dpy, lock->screen), CopyFromParent, DefaultVisual(dpy, lock->screen), - CWOverrideRedirect | CWBackPixel, &wa); + CWOverrideRedirect | CWBackPixel | CWBorderPixel, &wa); lock->pmap = XCreateBitmapFromData(dpy, lock->win, curs, 8, 8); invisible = XCreatePixmapCursor(dpy, lock->pmap, lock->pmap, &color, &color, 0, 0);