diff options
Diffstat (limited to '.config/paru/pkg_config')
6 files changed, 589 insertions, 0 deletions
diff --git a/.config/paru/pkg_config/slock/config.h b/.config/paru/pkg_config/slock/config.h new file mode 100644 index 0000000..9924375 --- /dev/null +++ b/.config/paru/pkg_config/slock/config.h @@ -0,0 +1,42 @@ +/* user and group to drop privileges to */ +static const char *user = "nobody"; +static const char *group = "nobody"; + +static const char *colorname[NUMCOLS] = { + [INIT] = "black", /* after initialization */ + [INPUT] = "#005577", /* during input */ + [INPUT_ALT] = "#227799", /* during input, second color */ + [FAILED] = "#CC3333", /* wrong password */ + [CAPS] = "#33CCCC", /* CapsLock on */ +}; + +/* treat a cleared input like a wrong password (color) */ +static const int failonclear = 0; + +/* insert grid pattern with scale 1:1, the size can be changed with logosize */ +static const int logosize = 75; +/* grid width and height for right center alignment */ +static const int logow = 12; +static const int logoh = 6; + +static XRectangle rectangles[9] = { + /* x y w h */ + { 0, 3, 1, 3 }, + { 1, 3, 2, 1 }, + { 0, 5, 8, 1 }, + { 3, 0, 1, 5 }, + { 5, 3, 1, 2 }, + { 7, 3, 1, 2 }, + { 8, 3, 4, 1 }, + { 9, 4, 1, 2 }, + { 11, 4, 1, 2 }, +}; + +/*Enable blur*/ +#define BLUR +/*Set blur radius*/ +static const int blurRadius=5; +/*Enable Pixelation*/ +//#define PIXELATION +/*Set pixelation radius*/ +static const int pixelSize=0; diff --git a/.config/paru/pkg_config/slock/patches/0001-Apply-foreground-and-background-patch-modified.diff b/.config/paru/pkg_config/slock/patches/0001-Apply-foreground-and-background-patch-modified.diff new file mode 100644 index 0000000..baaaac4 --- /dev/null +++ b/.config/paru/pkg_config/slock/patches/0001-Apply-foreground-and-background-patch-modified.diff @@ -0,0 +1,338 @@ +From db3a9869109f6b666c367d3b84daa8fdc31bee83 Mon Sep 17 00:00:00 2001 +From: A Farzat <a@farzat.xyz> +Date: Tue, 9 Jan 2024 17:45:57 +0900 +Subject: [PATCH 1/5] Apply foreground and background patch modified + +From slock-foreground-and-background-20210611-35633d4 +--- + config.def.h | 28 ++++++++++ + config.mk | 16 ++++-- + slock.c | 152 ++++++++++++++++++++++++++++++++++++++++++++++++--- + 3 files changed, 184 insertions(+), 12 deletions(-) + +diff --git a/config.def.h b/config.def.h +index 9855e21..ceceeb0 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -10,3 +10,31 @@ static const char *colorname[NUMCOLS] = { + + /* treat a cleared input like a wrong password (color) */ + static const int failonclear = 1; ++ ++/* insert grid pattern with scale 1:1, the size can be changed with logosize */ ++static const int logosize = 75; ++/* grid width and height for right center alignment */ ++static const int logow = 12; ++static const int logoh = 6; ++ ++static XRectangle rectangles[9] = { ++ /* x y w h */ ++ { 0, 3, 1, 3 }, ++ { 1, 3, 2, 1 }, ++ { 0, 5, 8, 1 }, ++ { 3, 0, 1, 5 }, ++ { 5, 3, 1, 2 }, ++ { 7, 3, 1, 2 }, ++ { 8, 3, 4, 1 }, ++ { 9, 4, 1, 2 }, ++ { 11, 4, 1, 2 }, ++}; ++ ++/*Enable blur*/ ++#define BLUR ++/*Set blur radius*/ ++static const int blurRadius=5; ++/*Enable Pixelation*/ ++//#define PIXELATION ++/*Set pixelation radius*/ ++static const int pixelSize=0; +diff --git a/config.mk b/config.mk +index 514c236..587adb4 100644 +--- a/config.mk ++++ b/config.mk +@@ -10,13 +10,21 @@ MANPREFIX = ${PREFIX}/share/man + X11INC = /usr/X11R6/include + X11LIB = /usr/X11R6/lib + ++# Xinerama ++XINERAMALIBS = -lXinerama ++XINERAMAFLAGS = -DXINERAMA ++ ++# freetype ++FREETYPELIBS = -lXft ++FREETYPEINC = /usr/include/freetype2 ++ + # includes and libs +-INCS = -I. -I/usr/include -I${X11INC} +-LIBS = -L/usr/lib -lc -lcrypt -L${X11LIB} -lX11 -lXext -lXrandr ++INCS = -I. -I/usr/include -I${X11INC} -I${FREETYPEINC} ++LIBS = -L/usr/lib -lc -lcrypt -L${X11LIB} -lX11 ${XINERAMALIBS} ${FREETYPELIBS} -lXext -lXrandr -lImlib2 + + # flags +-CPPFLAGS = -DVERSION=\"${VERSION}\" -D_DEFAULT_SOURCE -DHAVE_SHADOW_H +-CFLAGS = -std=c99 -pedantic -Wall -Os ${INCS} ${CPPFLAGS} ++CPPFLAGS = -DVERSION=\"${VERSION}\" -D_DEFAULT_SOURCE -DHAVE_SHADOW_H ${XINERAMAFLAGS} ++CFLAGS = -std=c99 -pedantic -Wall -Ofast ${INCS} ${CPPFLAGS} + LDFLAGS = -s ${LIBS} + COMPATSRC = explicit_bzero.c + +diff --git a/slock.c b/slock.c +index b2f14e3..dd59880 100644 +--- a/slock.c ++++ b/slock.c +@@ -1,5 +1,6 @@ + /* See LICENSE file for license details. */ + #define _XOPEN_SOURCE 500 ++#define LENGTH(X) (sizeof X / sizeof X[0]) + #if HAVE_SHADOW_H + #include <shadow.h> + #endif +@@ -15,9 +16,14 @@ + #include <unistd.h> + #include <sys/types.h> + #include <X11/extensions/Xrandr.h> ++#ifdef XINERAMA ++#include <X11/extensions/Xinerama.h> ++#endif + #include <X11/keysym.h> + #include <X11/Xlib.h> + #include <X11/Xutil.h> ++#include <X11/Xft/Xft.h> ++#include <Imlib2.h> + + #include "arg.h" + #include "util.h" +@@ -31,11 +37,19 @@ enum { + NUMCOLS + }; + ++#include "config.h" ++ + struct lock { + int screen; + Window root, win; + Pixmap pmap; ++ Pixmap bgmap; + unsigned long colors[NUMCOLS]; ++ unsigned int x, y; ++ unsigned int xoff, yoff, mw, mh; ++ Drawable drawable; ++ GC gc; ++ XRectangle rectangles[LENGTH(rectangles)]; + }; + + struct xrandr { +@@ -44,7 +58,7 @@ struct xrandr { + int errbase; + }; + +-#include "config.h" ++Imlib_Image image; + + static void + die(const char *errstr, ...) +@@ -124,6 +138,32 @@ gethash(void) + return hash; + } + ++static void ++resizerectangles(struct lock *lock) ++{ ++ int i; ++ ++ for (i = 0; i < LENGTH(rectangles); i++){ ++ lock->rectangles[i].x = (rectangles[i].x * logosize) + lock->xoff + ((lock->mw) / 2) - (logow / 2 * logosize); ++ lock->rectangles[i].y = (rectangles[i].y * logosize) + lock->yoff + ((lock->mh) / 2) - (logoh / 2 * logosize); ++ lock->rectangles[i].width = rectangles[i].width * logosize; ++ lock->rectangles[i].height = rectangles[i].height * logosize; ++ } ++} ++ ++static void ++drawlogo(Display *dpy, struct lock *lock, int color) ++{ ++ /* ++ XSetForeground(dpy, lock->gc, lock->colors[BACKGROUND]); ++ XFillRectangle(dpy, lock->drawable, lock->gc, 0, 0, lock->x, lock->y); */ ++ lock->drawable = lock->bgmap; ++ XSetForeground(dpy, lock->gc, lock->colors[color]); ++ XFillRectangles(dpy, lock->drawable, lock->gc, lock->rectangles, LENGTH(rectangles)); ++ XCopyArea(dpy, lock->drawable, lock->win, lock->gc, 0, 0, lock->x, lock->y, 0, 0); ++ XSync(dpy, False); ++} ++ + static void + readpw(Display *dpy, struct xrandr *rr, struct lock **locks, int nscreens, + const char *hash) +@@ -190,10 +230,7 @@ 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, +- locks[screen]->win, +- locks[screen]->colors[color]); +- XClearWindow(dpy, locks[screen]->win); ++ drawlogo(dpy, locks[screen], color); + } + oldc = color; + } +@@ -228,6 +265,10 @@ lockscreen(Display *dpy, struct xrandr *rr, int screen) + XColor color, dummy; + XSetWindowAttributes wa; + Cursor invisible; ++#ifdef XINERAMA ++ XineramaScreenInfo *info; ++ int n; ++#endif + + if (dpy == NULL || screen < 0 || !(lock = malloc(sizeof(struct lock)))) + return NULL; +@@ -235,27 +276,60 @@ lockscreen(Display *dpy, struct xrandr *rr, int screen) + lock->screen = screen; + lock->root = RootWindow(dpy, lock->screen); + ++ if(image) ++ { ++ lock->bgmap = XCreatePixmap(dpy, lock->root, DisplayWidth(dpy, lock->screen), ++ DisplayHeight(dpy, lock->screen), DefaultDepth(dpy, lock->screen)); ++ imlib_context_set_image(image); ++ imlib_context_set_display(dpy); ++ imlib_context_set_visual(DefaultVisual(dpy, lock->screen)); ++ imlib_context_set_colormap(DefaultColormap(dpy, lock->screen)); ++ imlib_context_set_drawable(lock->bgmap); ++ imlib_render_image_on_drawable(0, 0); ++ imlib_free_image(); ++ } + for (i = 0; i < NUMCOLS; i++) { + XAllocNamedColor(dpy, DefaultColormap(dpy, lock->screen), + colorname[i], &color, &dummy); + lock->colors[i] = color.pixel; + } + ++ lock->x = DisplayWidth(dpy, lock->screen); ++ lock->y = DisplayHeight(dpy, lock->screen); ++#ifdef XINERAMA ++ if ((info = XineramaQueryScreens(dpy, &n))) { ++ lock->xoff = info[0].x_org; ++ lock->yoff = info[0].y_org; ++ lock->mw = info[0].width; ++ lock->mh = info[0].height; ++ } else ++#endif ++ { ++ lock->xoff = lock->yoff = 0; ++ lock->mw = lock->x; ++ lock->mh = lock->y; ++ } ++ lock->drawable = XCreatePixmap(dpy, lock->root, lock->x, lock->y, DefaultDepth(dpy, screen)); ++ lock->gc = XCreateGC(dpy, lock->root, 0, NULL); ++ XSetLineAttributes(dpy, lock->gc, 1, LineSolid, CapButt, JoinMiter); ++ + /* init */ + wa.override_redirect = 1; +- wa.background_pixel = lock->colors[INIT]; + lock->win = XCreateWindow(dpy, lock->root, 0, 0, +- DisplayWidth(dpy, lock->screen), +- DisplayHeight(dpy, lock->screen), ++ lock->x, lock->y, + 0, DefaultDepth(dpy, lock->screen), + CopyFromParent, + DefaultVisual(dpy, lock->screen), + CWOverrideRedirect | CWBackPixel, &wa); ++ if(lock->bgmap) ++ XSetWindowBackgroundPixmap(dpy, lock->win, lock->bgmap); + lock->pmap = XCreateBitmapFromData(dpy, lock->win, curs, 8, 8); + invisible = XCreatePixmapCursor(dpy, lock->pmap, lock->pmap, + &color, &color, 0, 0); + XDefineCursor(dpy, lock->win, invisible); + ++ resizerectangles(lock); ++ + /* Try to grab mouse pointer *and* keyboard for 600ms, else fail the lock */ + for (i = 0, ptgrab = kbgrab = -1; i < 6; i++) { + if (ptgrab != GrabSuccess) { +@@ -276,6 +350,7 @@ lockscreen(Display *dpy, struct xrandr *rr, int screen) + XRRSelectInput(dpy, lock->win, RRScreenChangeNotifyMask); + + XSelectInput(dpy, lock->root, SubstructureNotifyMask); ++ drawlogo(dpy, lock, INIT); + return lock; + } + +@@ -355,6 +430,60 @@ main(int argc, char **argv) { + if (setuid(duid) < 0) + die("slock: setuid: %s\n", strerror(errno)); + ++ /*Create screenshot Image*/ ++ Screen *scr = ScreenOfDisplay(dpy, DefaultScreen(dpy)); ++ image = imlib_create_image(scr->width,scr->height); ++ imlib_context_set_image(image); ++ imlib_context_set_display(dpy); ++ imlib_context_set_visual(DefaultVisual(dpy,0)); ++ imlib_context_set_drawable(RootWindow(dpy,XScreenNumberOfScreen(scr))); ++ imlib_copy_drawable_to_image(0,0,0,scr->width,scr->height,0,0,1); ++ ++#ifdef BLUR ++ ++ /*Blur function*/ ++ imlib_image_blur(blurRadius); ++#endif // BLUR ++ ++#ifdef PIXELATION ++ /*Pixelation*/ ++ int width = scr->width; ++ int height = scr->height; ++ ++ for(int y = 0; y < height; y += pixelSize) ++ { ++ for(int x = 0; x < width; x += pixelSize) ++ { ++ int red = 0; ++ int green = 0; ++ int blue = 0; ++ ++ Imlib_Color pixel; ++ Imlib_Color* pp; ++ pp = &pixel; ++ for(int j = 0; j < pixelSize && j < height; j++) ++ { ++ for(int i = 0; i < pixelSize && i < width; i++) ++ { ++ imlib_image_query_pixel(x+i,y+j,pp); ++ red += pixel.red; ++ green += pixel.green; ++ blue += pixel.blue; ++ } ++ } ++ red /= (pixelSize*pixelSize); ++ green /= (pixelSize*pixelSize); ++ blue /= (pixelSize*pixelSize); ++ imlib_context_set_color(red,green,blue,pixel.alpha); ++ imlib_image_fill_rectangle(x,y,pixelSize,pixelSize); ++ red = 0; ++ green = 0; ++ blue = 0; ++ } ++ } ++ ++ ++#endif + /* check for Xrandr support */ + rr.active = XRRQueryExtension(dpy, &rr.evbase, &rr.errbase); + +@@ -391,5 +520,12 @@ main(int argc, char **argv) { + /* everything is now blank. Wait for the correct password */ + readpw(dpy, &rr, locks, nscreens, hash); + ++ for (nlocks = 0, s = 0; s < nscreens; s++) { ++ XFreePixmap(dpy, locks[s]->drawable); ++ XFreeGC(dpy, locks[s]->gc); ++ } ++ ++ XSync(dpy, 0); ++ XCloseDisplay(dpy); + return 0; + } +-- +2.43.0 + diff --git a/.config/paru/pkg_config/slock/patches/0002-Apply-capscolor-patch-modified.diff b/.config/paru/pkg_config/slock/patches/0002-Apply-capscolor-patch-modified.diff new file mode 100644 index 0000000..934ef98 --- /dev/null +++ b/.config/paru/pkg_config/slock/patches/0002-Apply-capscolor-patch-modified.diff @@ -0,0 +1,88 @@ +From 3d99cfacafa64ca0ad47115db04a1e54a1be6232 Mon Sep 17 00:00:00 2001 +From: A Farzat <a@farzat.xyz> +Date: Sun, 24 Apr 2022 12:26:36 +0900 +Subject: [PATCH 2/5] Apply capscolor patch modified + +From slock-capscolor-20220921-35633d4 +--- + config.def.h | 1 + + slock.c | 15 ++++++++++++--- + 2 files changed, 13 insertions(+), 3 deletions(-) + +diff --git a/config.def.h b/config.def.h +index ceceeb0..98668ac 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -6,6 +6,7 @@ static const char *colorname[NUMCOLS] = { + [INIT] = "black", /* after initialization */ + [INPUT] = "#005577", /* during input */ + [FAILED] = "#CC3333", /* wrong password */ ++ [CAPS] = "#33CCCC", /* CapsLock on */ + }; + + /* treat a cleared input like a wrong password (color) */ +diff --git a/slock.c b/slock.c +index dd59880..a385a82 100644 +--- a/slock.c ++++ b/slock.c +@@ -22,6 +22,7 @@ + #include <X11/keysym.h> + #include <X11/Xlib.h> + #include <X11/Xutil.h> ++#include <X11/XKBlib.h> + #include <X11/Xft/Xft.h> + #include <Imlib2.h> + +@@ -34,6 +35,7 @@ enum { + INIT, + INPUT, + FAILED, ++ CAPS, + NUMCOLS + }; + +@@ -170,16 +172,20 @@ readpw(Display *dpy, struct xrandr *rr, struct lock **locks, int nscreens, + { + XRRScreenChangeNotifyEvent *rre; + char buf[32], passwd[256], *inputhash; +- int num, screen, running, failure, oldc; +- unsigned int len, color; ++ int num, screen, running, failure, oldc, caps; ++ unsigned int len, color, indicators; + KeySym ksym; + XEvent ev; + + len = 0; + running = 1; ++ caps = 0; + failure = 0; + oldc = INIT; + ++ if(!XkbGetIndicatorState(dpy, XkbUseCoreKbd, &indicators)) ++ caps = indicators & 1; ++ + while (running && !XNextEvent(dpy, &ev)) { + if (ev.type == KeyPress) { + explicit_bzero(&buf, sizeof(buf)); +@@ -219,6 +225,9 @@ readpw(Display *dpy, struct xrandr *rr, struct lock **locks, int nscreens, + if (len) + passwd[--len] = '\0'; + break; ++ case XK_Caps_Lock: ++ caps = !caps; ++ break; + default: + if (num && !iscntrl((int)buf[0]) && + (len + num < sizeof(passwd))) { +@@ -227,7 +236,7 @@ readpw(Display *dpy, struct xrandr *rr, struct lock **locks, int nscreens, + } + break; + } +- color = len ? INPUT : ((failure || failonclear) ? FAILED : INIT); ++ color = len ? (caps ? CAPS : INPUT) : ((failure || failonclear) ? FAILED : INIT); + if (running && oldc != color) { + for (screen = 0; screen < nscreens; screen++) { + drawlogo(dpy, locks[screen], color); +-- +2.43.0 + diff --git a/.config/paru/pkg_config/slock/patches/0003-Apply-mediakeys-patch.diff b/.config/paru/pkg_config/slock/patches/0003-Apply-mediakeys-patch.diff new file mode 100644 index 0000000..53c4459 --- /dev/null +++ b/.config/paru/pkg_config/slock/patches/0003-Apply-mediakeys-patch.diff @@ -0,0 +1,47 @@ +From 5ab647163705bb947a895fed5ae2a2658b18a180 Mon Sep 17 00:00:00 2001 +From: A Farzat <a@farzat.xyz> +Date: Sun, 24 Apr 2022 13:21:23 +0900 +Subject: [PATCH 3/5] Apply mediakeys patch + +A combination of two diff files: +https://patch-diff.githubusercontent.com/raw/phenax/bslock/pull/1.diff +slock-mediakeys-20170111-2d2a21a.diff +--- + slock.c | 14 ++++++++++++++ + 1 file changed, 14 insertions(+) + +diff --git a/slock.c b/slock.c +index a385a82..cbbbd29 100644 +--- a/slock.c ++++ b/slock.c +@@ -22,6 +22,7 @@ + #include <X11/keysym.h> + #include <X11/Xlib.h> + #include <X11/Xutil.h> ++#include <X11/XF86keysym.h> + #include <X11/XKBlib.h> + #include <X11/Xft/Xft.h> + #include <Imlib2.h> +@@ -203,6 +204,19 @@ readpw(Display *dpy, struct xrandr *rr, struct lock **locks, int nscreens, + IsPrivateKeypadKey(ksym)) + continue; + switch (ksym) { ++ case XF86XK_AudioPlay: ++ case XF86XK_AudioPause: ++ case XF86XK_AudioStop: ++ case XF86XK_AudioPrev: ++ case XF86XK_AudioNext: ++ case XF86XK_AudioRaiseVolume: ++ case XF86XK_AudioLowerVolume: ++ case XF86XK_AudioMute: ++ case XF86XK_AudioMicMute: ++ case XF86XK_MonBrightnessDown: ++ case XF86XK_MonBrightnessUp: ++ XSendEvent(dpy, DefaultRootWindow(dpy), True, KeyPressMask, &ev); ++ break; + case XK_Return: + passwd[len] = '\0'; + errno = 0; +-- +2.43.0 + diff --git a/.config/paru/pkg_config/slock/patches/0004-Make-sure-the-keyboard-layout-is-US-english.diff b/.config/paru/pkg_config/slock/patches/0004-Make-sure-the-keyboard-layout-is-US-english.diff new file mode 100644 index 0000000..79aa853 --- /dev/null +++ b/.config/paru/pkg_config/slock/patches/0004-Make-sure-the-keyboard-layout-is-US-english.diff @@ -0,0 +1,26 @@ +From 1137ec75223d7456a31b101a911b7f6eddb8e083 Mon Sep 17 00:00:00 2001 +From: A Farzat <a@farzat.xyz> +Date: Fri, 6 Jan 2023 08:37:13 +0900 +Subject: [PATCH 4/5] Make sure the keyboard layout is US english + +--- + slock.c | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/slock.c b/slock.c +index cbbbd29..63c946c 100644 +--- a/slock.c ++++ b/slock.c +@@ -445,6 +445,9 @@ main(int argc, char **argv) { + if (!(dpy = XOpenDisplay(NULL))) + die("slock: cannot open display\n"); + ++ /* switch the keyboard layout to US */ ++ system("xkb-switch -s us"); ++ + /* drop privileges */ + if (setgroups(0, NULL) < 0) + die("slock: setgroups: %s\n", strerror(errno)); +-- +2.43.0 + diff --git a/.config/paru/pkg_config/slock/patches/0005-Apply-alternate-colors-patch-modified.diff b/.config/paru/pkg_config/slock/patches/0005-Apply-alternate-colors-patch-modified.diff new file mode 100644 index 0000000..3b98758 --- /dev/null +++ b/.config/paru/pkg_config/slock/patches/0005-Apply-alternate-colors-patch-modified.diff @@ -0,0 +1,48 @@ +From 0d60f58ae941c8627ee612e8ac5bbfe2e8adda74 Mon Sep 17 00:00:00 2001 +From: A Farzat <a@farzat.xyz> +Date: Wed, 10 Jan 2024 12:41:27 +0900 +Subject: [PATCH 5/5] Apply alternate-colors patch modified + +From slock-alternate-colors-20220921-35633d4 +--- + config.def.h | 1 + + slock.c | 4 +++- + 2 files changed, 4 insertions(+), 1 deletion(-) + +diff --git a/config.def.h b/config.def.h +index 98668ac..797fd6b 100644 +--- a/config.def.h ++++ b/config.def.h +@@ -5,6 +5,7 @@ static const char *group = "nogroup"; + static const char *colorname[NUMCOLS] = { + [INIT] = "black", /* after initialization */ + [INPUT] = "#005577", /* during input */ ++ [INPUT_ALT] = "#227799", /* during input, second color */ + [FAILED] = "#CC3333", /* wrong password */ + [CAPS] = "#33CCCC", /* CapsLock on */ + }; +diff --git a/slock.c b/slock.c +index 63c946c..944ee55 100644 +--- a/slock.c ++++ b/slock.c +@@ -35,6 +35,7 @@ char *argv0; + enum { + INIT, + INPUT, ++ INPUT_ALT, + FAILED, + CAPS, + NUMCOLS +@@ -250,7 +251,8 @@ readpw(Display *dpy, struct xrandr *rr, struct lock **locks, int nscreens, + } + break; + } +- color = len ? (caps ? CAPS : INPUT) : ((failure || failonclear) ? FAILED : INIT); ++ color = len ? (caps ? CAPS : (len%2 ? INPUT : INPUT_ALT)) ++ : ((failure || failonclear) ? FAILED : INIT); + if (running && oldc != color) { + for (screen = 0; screen < nscreens; screen++) { + drawlogo(dpy, locks[screen], color); +-- +2.43.0 + |