sites

public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log | Files | Refs

commit 35f284382cef576ef4f7460717d4a1ea5d166c7d
parent e93bcd909faead037d063cb7570b87270b467bd5
Author: Chad Humphries <chad.humphries@grunclepug.com>
Date:   Sun,  2 Nov 2025 23:44:02 -0800

Add slock bordercolors patch

A patch for slock to replace the colored background with a colored border.

Diffstat:
Atools.suckless.org/slock/patches/bordercolors/index.md | 15+++++++++++++++
Atools.suckless.org/slock/patches/bordercolors/slock-bordercolors-1.6.diff | 49+++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 64 insertions(+), 0 deletions(-)

diff --git a/tools.suckless.org/slock/patches/bordercolors/index.md b/tools.suckless.org/slock/patches/bordercolors/index.md @@ -0,0 +1,15 @@ +Bordercolors +================ + +Description +----------- +Changes default coloring behavior to use the window's colored border for +input status feedback instead of changing the entire background. + +Download +-------- +* [slock-bordercolors-1.6.diff](slock-bordercolors-1.6.diff) + +Authors +------- +* Chad Humphries <chad.humphries@grunclepug.com> diff --git a/tools.suckless.org/slock/patches/bordercolors/slock-bordercolors-1.6.diff b/tools.suckless.org/slock/patches/bordercolors/slock-bordercolors-1.6.diff @@ -0,0 +1,49 @@ +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);