| slock-blur_pixelated_screen-1.4.diff - sites - public wiki contents of suckless… | |
| git clone git://git.suckless.org/sites | |
| Log | |
| Files | |
| Refs | |
| --- | |
| slock-blur_pixelated_screen-1.4.diff (10550B) | |
| --- | |
| 1 From 36a4863f9a399740aaf8b1e01926485c0a055e1c Mon Sep 17 00:00:00 2001 | |
| 2 From: Lars Niesen <[email protected]> | |
| 3 Date: Wed, 29 Apr 2020 13:52:42 +0200 | |
| 4 Subject: [PATCH 1/8] Added Bg patch and screenshot capabilities | |
| 5 | |
| 6 --- | |
| 7 config.mk | 2 +- | |
| 8 slock.c | 35 +++++++++++++++++++++++++++++++---- | |
| 9 2 files changed, 32 insertions(+), 5 deletions(-) | |
| 10 | |
| 11 diff --git a/config.mk b/config.mk | |
| 12 index 74429ae..987819e 100644 | |
| 13 --- a/config.mk | |
| 14 +++ b/config.mk | |
| 15 @@ -12,7 +12,7 @@ X11LIB = /usr/X11R6/lib | |
| 16 | |
| 17 # includes and libs | |
| 18 INCS = -I. -I/usr/include -I${X11INC} | |
| 19 -LIBS = -L/usr/lib -lc -lcrypt -L${X11LIB} -lX11 -lXext -lXrandr | |
| 20 +LIBS = -L/usr/lib -lc -lcrypt -L${X11LIB} -lX11 -lXext -lXrandr -lImlib2 | |
| 21 | |
| 22 # flags | |
| 23 CPPFLAGS = -DVERSION=\"${VERSION}\" -D_DEFAULT_SOURCE -DHAVE_SHADOW_H | |
| 24 diff --git a/slock.c b/slock.c | |
| 25 index 5ae738c..7c63f34 100644 | |
| 26 --- a/slock.c | |
| 27 +++ b/slock.c | |
| 28 @@ -18,6 +18,7 @@ | |
| 29 #include <X11/keysym.h> | |
| 30 #include <X11/Xlib.h> | |
| 31 #include <X11/Xutil.h> | |
| 32 +#include <Imlib2.h> | |
| 33 | |
| 34 #include "arg.h" | |
| 35 #include "util.h" | |
| 36 @@ -35,6 +36,7 @@ struct lock { | |
| 37 int screen; | |
| 38 Window root, win; | |
| 39 Pixmap pmap; | |
| 40 + Pixmap bgmap; | |
| 41 unsigned long colors[NUMCOLS]; | |
| 42 }; | |
| 43 | |
| 44 @@ -46,6 +48,8 @@ struct xrandr { | |
| 45 | |
| 46 #include "config.h" | |
| 47 | |
| 48 +Imlib_Image image; | |
| 49 + | |
| 50 static void | |
| 51 die(const char *errstr, ...) | |
| 52 { | |
| 53 @@ -190,9 +194,10 @@ readpw(Display *dpy, struct xrandr *rr, struct lock… | |
| 54 color = len ? INPUT : ((failure || failonclear)… | |
| 55 if (running && oldc != color) { | |
| 56 for (screen = 0; screen < nscreens; scr… | |
| 57 - XSetWindowBackground(dpy, | |
| 58 - locks[scre… | |
| 59 - locks[scre… | |
| 60 + if(locks[screen]->bgmap) | |
| 61 + XSetWindowBackgroundPixmap(dpy, locks[screen]->… | |
| 62 + else | |
| 63 + XSetWindowBackground(dpy, locks[screen]->win, l… | |
| 64 XClearWindow(dpy, locks[screen]… | |
| 65 } | |
| 66 oldc = color; | |
| 67 @@ -235,6 +240,17 @@ lockscreen(Display *dpy, struct xrandr *rr, int scr… | |
| 68 lock->screen = screen; | |
| 69 lock->root = RootWindow(dpy, lock->screen); | |
| 70 | |
| 71 + if(image) | |
| 72 + { | |
| 73 + lock->bgmap = XCreatePixmap(dpy, lock->root, DisplayWidth(dpy, … | |
| 74 + imlib_context_set_image(image); | |
| 75 + imlib_context_set_display(dpy); | |
| 76 + imlib_context_set_visual(DefaultVisual(dpy, lock->screen)); | |
| 77 + imlib_context_set_colormap(DefaultColormap(dpy, lock->screen)); | |
| 78 + imlib_context_set_drawable(lock->bgmap); | |
| 79 + imlib_render_image_on_drawable(0, 0); | |
| 80 + imlib_free_image(); | |
| 81 + } | |
| 82 for (i = 0; i < NUMCOLS; i++) { | |
| 83 XAllocNamedColor(dpy, DefaultColormap(dpy, lock->screen… | |
| 84 colorname[i], &color, &dummy); | |
| 85 @@ -251,6 +267,8 @@ lockscreen(Display *dpy, struct xrandr *rr, int scre… | |
| 86 CopyFromParent, | |
| 87 DefaultVisual(dpy, lock->screen), | |
| 88 CWOverrideRedirect | CWBackPixel, &wa… | |
| 89 + if(lock->bgmap) | |
| 90 + XSetWindowBackgroundPixmap(dpy, lock->win, lock->bgmap); | |
| 91 lock->pmap = XCreateBitmapFromData(dpy, lock->win, curs, 8, 8); | |
| 92 invisible = XCreatePixmapCursor(dpy, lock->pmap, lock->pmap, | |
| 93 &color, &color, 0, 0); | |
| 94 @@ -354,7 +372,16 @@ main(int argc, char **argv) { | |
| 95 die("slock: setgid: %s\n", strerror(errno)); | |
| 96 if (setuid(duid) < 0) | |
| 97 die("slock: setuid: %s\n", strerror(errno)); | |
| 98 - | |
| 99 + | |
| 100 + /*Create screenshot Image*/ | |
| 101 + Screen *scr = ScreenOfDisplay(dpy, DefaultScreen(dpy)); | |
| 102 + image = imlib_create_image(scr->width,scr->height); | |
| 103 + imlib_context_set_image(image); | |
| 104 + imlib_context_set_display(dpy); | |
| 105 + imlib_context_set_visual(DefaultVisual(dpy,0)); | |
| 106 + imlib_context_set_drawable(RootWindow(dpy,XScreenNumberOfScreen… | |
| 107 + imlib_copy_drawable_to_image(0,0,0,scr->width,scr->height,0,0,1… | |
| 108 + | |
| 109 /* check for Xrandr support */ | |
| 110 rr.active = XRRQueryExtension(dpy, &rr.evbase, &rr.errbase); | |
| 111 | |
| 112 -- | |
| 113 2.27.0 | |
| 114 | |
| 115 | |
| 116 From 9d89604ac52b0949d047dae2f9b78cb5085ee1a2 Mon Sep 17 00:00:00 2001 | |
| 117 From: Lars Niesen <[email protected]> | |
| 118 Date: Wed, 29 Apr 2020 14:15:59 +0200 | |
| 119 Subject: [PATCH 2/8] Added blur function | |
| 120 | |
| 121 --- | |
| 122 config.def.h | 3 +++ | |
| 123 slock.c | 3 ++- | |
| 124 2 files changed, 5 insertions(+), 1 deletion(-) | |
| 125 | |
| 126 diff --git a/config.def.h b/config.def.h | |
| 127 index c8e52d6..fcc1b39 100644 | |
| 128 --- a/config.def.h | |
| 129 +++ b/config.def.h | |
| 130 @@ -10,3 +10,6 @@ static const char *colorname[NUMCOLS] = { | |
| 131 | |
| 132 /* treat a cleared input like a wrong password (color) */ | |
| 133 static const int failonclear = 1; | |
| 134 + | |
| 135 +/*Set Blur radius*/ | |
| 136 +static const int blurRadius=5; | |
| 137 \ No newline at end of file | |
| 138 diff --git a/slock.c b/slock.c | |
| 139 index 7c63f34..0f24cd7 100644 | |
| 140 --- a/slock.c | |
| 141 +++ b/slock.c | |
| 142 @@ -372,7 +372,7 @@ main(int argc, char **argv) { | |
| 143 die("slock: setgid: %s\n", strerror(errno)); | |
| 144 if (setuid(duid) < 0) | |
| 145 die("slock: setuid: %s\n", strerror(errno)); | |
| 146 - | |
| 147 + | |
| 148 /*Create screenshot Image*/ | |
| 149 Screen *scr = ScreenOfDisplay(dpy, DefaultScreen(dpy)); | |
| 150 image = imlib_create_image(scr->width,scr->height); | |
| 151 @@ -381,6 +381,7 @@ main(int argc, char **argv) { | |
| 152 imlib_context_set_visual(DefaultVisual(dpy,0)); | |
| 153 imlib_context_set_drawable(RootWindow(dpy,XScreenNumberOfScreen… | |
| 154 imlib_copy_drawable_to_image(0,0,0,scr->width,scr->height,0,0,1… | |
| 155 + imlib_image_blur(blurRadius); | |
| 156 | |
| 157 /* check for Xrandr support */ | |
| 158 rr.active = XRRQueryExtension(dpy, &rr.evbase, &rr.errbase); | |
| 159 -- | |
| 160 2.27.0 | |
| 161 | |
| 162 | |
| 163 From 069aabd7e30244befd4efe74c85d3468ed076c21 Mon Sep 17 00:00:00 2001 | |
| 164 From: Lars Niesen <[email protected]> | |
| 165 Date: Wed, 29 Apr 2020 17:33:09 +0200 | |
| 166 Subject: [PATCH 4/8] added Pixelation | |
| 167 | |
| 168 --- | |
| 169 config.def.h | 3 ++- | |
| 170 slock.c | 42 ++++++++++++++++++++++++++++++++++++++++++ | |
| 171 2 files changed, 44 insertions(+), 1 deletion(-) | |
| 172 | |
| 173 diff --git a/config.def.h b/config.def.h | |
| 174 index fcc1b39..1c1aef3 100644 | |
| 175 --- a/config.def.h | |
| 176 +++ b/config.def.h | |
| 177 @@ -12,4 +12,5 @@ static const char *colorname[NUMCOLS] = { | |
| 178 static const int failonclear = 1; | |
| 179 | |
| 180 /*Set Blur radius*/ | |
| 181 -static const int blurRadius=5; | |
| 182 \ No newline at end of file | |
| 183 +static const int blurRadius=0; | |
| 184 +static const int pixelSize=5; | |
| 185 diff --git a/slock.c b/slock.c | |
| 186 index 0f24cd7..33ca569 100644 | |
| 187 --- a/slock.c | |
| 188 +++ b/slock.c | |
| 189 @@ -381,7 +381,49 @@ main(int argc, char **argv) { | |
| 190 imlib_context_set_visual(DefaultVisual(dpy,0)); | |
| 191 imlib_context_set_drawable(RootWindow(dpy,XScreenNumberOfScreen… | |
| 192 imlib_copy_drawable_to_image(0,0,0,scr->width,scr->height,0,0,1… | |
| 193 + | |
| 194 + /*Blur function*/ | |
| 195 imlib_image_blur(blurRadius); | |
| 196 + | |
| 197 + | |
| 198 + /*Pixelation*/ | |
| 199 + int width = scr->width; | |
| 200 + int height = scr->height; | |
| 201 + | |
| 202 + for(int y = 0; y < height; y += pixelSize) | |
| 203 + { | |
| 204 + for(int x = 0; x < width; x += pixelSize) | |
| 205 + { | |
| 206 + int red = 0; | |
| 207 + int green = 0; | |
| 208 + int blue = 0; | |
| 209 + | |
| 210 + Imlib_Color pixel; | |
| 211 + Imlib_Color* pp; | |
| 212 + pp = &pixel; | |
| 213 + for(int j = 0; j < pixelSize && j < height; j++) | |
| 214 + { | |
| 215 + for(int i = 0; i < pixelSize && i < wid… | |
| 216 + { | |
| 217 + imlib_image_query_pixel(x+i,y+j… | |
| 218 + red += pixel.red; | |
| 219 + green += pixel.green; | |
| 220 + blue += pixel.blue; | |
| 221 + } | |
| 222 + } | |
| 223 + red /= (pixelSize*pixelSize); | |
| 224 + green /= (pixelSize*pixelSize); | |
| 225 + blue /= (pixelSize*pixelSize); | |
| 226 + printf("R/G/B: %i/%i/%i\n",red,green,blue); | |
| 227 + imlib_context_set_color(red,green,blue,pixel.al… | |
| 228 + imlib_image_fill_rectangle(x,y,pixelSize,pixelS… | |
| 229 + red = 0; | |
| 230 + green = 0; | |
| 231 + blue = 0; | |
| 232 + } | |
| 233 + } | |
| 234 + | |
| 235 + | |
| 236 | |
| 237 /* check for Xrandr support */ | |
| 238 rr.active = XRRQueryExtension(dpy, &rr.evbase, &rr.errbase); | |
| 239 -- | |
| 240 2.27.0 | |
| 241 | |
| 242 | |
| 243 From 109bac015c1c7fbf8440fb42588fe7e0e9cb5e62 Mon Sep 17 00:00:00 2001 | |
| 244 From: Lars Niesen <[email protected]> | |
| 245 Date: Wed, 29 Apr 2020 17:42:39 +0200 | |
| 246 Subject: [PATCH 6/8] removed debug printf | |
| 247 | |
| 248 --- | |
| 249 slock.c | 1 - | |
| 250 1 file changed, 1 deletion(-) | |
| 251 | |
| 252 diff --git a/slock.c b/slock.c | |
| 253 index 33ca569..f54c459 100644 | |
| 254 --- a/slock.c | |
| 255 +++ b/slock.c | |
| 256 @@ -414,7 +414,6 @@ main(int argc, char **argv) { | |
| 257 red /= (pixelSize*pixelSize); | |
| 258 green /= (pixelSize*pixelSize); | |
| 259 blue /= (pixelSize*pixelSize); | |
| 260 - printf("R/G/B: %i/%i/%i\n",red,green,blue); | |
| 261 imlib_context_set_color(red,green,blue,pixel.al… | |
| 262 imlib_image_fill_rectangle(x,y,pixelSize,pixelS… | |
| 263 red = 0; | |
| 264 -- | |
| 265 2.27.0 | |
| 266 | |
| 267 | |
| 268 From a13a0f4ac86f82e4dff145b7ebd93e52d07492c9 Mon Sep 17 00:00:00 2001 | |
| 269 From: Lars Niesen <[email protected]> | |
| 270 Date: Sun, 3 May 2020 18:03:38 +0200 | |
| 271 Subject: [PATCH 7/8] Changed compilerflag to fast | |
| 272 | |
| 273 --- | |
| 274 config.mk | 2 +- | |
| 275 1 file changed, 1 insertion(+), 1 deletion(-) | |
| 276 | |
| 277 diff --git a/config.mk b/config.mk | |
| 278 index 987819e..d0c2f01 100644 | |
| 279 --- a/config.mk | |
| 280 +++ b/config.mk | |
| 281 @@ -16,7 +16,7 @@ LIBS = -L/usr/lib -lc -lcrypt -L${X11LIB} -lX11 -lXext… | |
| 282 | |
| 283 # flags | |
| 284 CPPFLAGS = -DVERSION=\"${VERSION}\" -D_DEFAULT_SOURCE -DHAVE_SHADOW_H | |
| 285 -CFLAGS = -std=c99 -pedantic -Wall -Os ${INCS} ${CPPFLAGS} | |
| 286 +CFLAGS = -std=c99 -pedantic -Wall -Ofast ${INCS} ${CPPFLAGS} | |
| 287 LDFLAGS = -s ${LIBS} | |
| 288 COMPATSRC = explicit_bzero.c | |
| 289 | |
| 290 -- | |
| 291 2.27.0 | |
| 292 | |
| 293 | |
| 294 From 31a7001c4954606c066cc3df4318fafd6d216bcd Mon Sep 17 00:00:00 2001 | |
| 295 From: Lars Niesen <[email protected]> | |
| 296 Date: Mon, 4 May 2020 10:00:40 +0200 | |
| 297 Subject: [PATCH 8/8] Added defines for BLUR/PIXELATION to remove from co… | |
| 298 compilation | |
| 299 | |
| 300 --- | |
| 301 config.def.h | 11 ++++++++--- | |
| 302 slock.c | 9 ++++++--- | |
| 303 2 files changed, 14 insertions(+), 6 deletions(-) | |
| 304 | |
| 305 diff --git a/config.def.h b/config.def.h | |
| 306 index 1c1aef3..5407953 100644 | |
| 307 --- a/config.def.h | |
| 308 +++ b/config.def.h | |
| 309 @@ -11,6 +11,11 @@ static const char *colorname[NUMCOLS] = { | |
| 310 /* treat a cleared input like a wrong password (color) */ | |
| 311 static const int failonclear = 1; | |
| 312 | |
| 313 -/*Set Blur radius*/ | |
| 314 -static const int blurRadius=0; | |
| 315 -static const int pixelSize=5; | |
| 316 +/*Enable blur*/ | |
| 317 +#define BLUR | |
| 318 +/*Set blur radius*/ | |
| 319 +static const int blurRadius=5; | |
| 320 +/*Enable Pixelation*/ | |
| 321 +//#define PIXELATION | |
| 322 +/*Set pixelation radius*/ | |
| 323 +static const int pixelSize=0; | |
| 324 diff --git a/slock.c b/slock.c | |
| 325 index f54c459..1a4d6e3 100644 | |
| 326 --- a/slock.c | |
| 327 +++ b/slock.c | |
| 328 @@ -381,11 +381,14 @@ main(int argc, char **argv) { | |
| 329 imlib_context_set_visual(DefaultVisual(dpy,0)); | |
| 330 imlib_context_set_drawable(RootWindow(dpy,XScreenNumberOfScreen… | |
| 331 imlib_copy_drawable_to_image(0,0,0,scr->width,scr->height,0,0,1… | |
| 332 - | |
| 333 + | |
| 334 +#ifdef BLUR | |
| 335 + | |
| 336 /*Blur function*/ | |
| 337 imlib_image_blur(blurRadius); | |
| 338 +#endif // BLUR | |
| 339 | |
| 340 - | |
| 341 +#ifdef PIXELATION | |
| 342 /*Pixelation*/ | |
| 343 int width = scr->width; | |
| 344 int height = scr->height; | |
| 345 @@ -423,7 +426,7 @@ main(int argc, char **argv) { | |
| 346 } | |
| 347 | |
| 348 | |
| 349 - | |
| 350 +#endif | |
| 351 /* check for Xrandr support */ | |
| 352 rr.active = XRRQueryExtension(dpy, &rr.evbase, &rr.errbase); | |
| 353 | |
| 354 -- | |
| 355 2.27.0 | |
| 356 |