summaryrefslogtreecommitdiff
path: root/patches/slock-key-feedback.diff
diff options
context:
space:
mode:
Diffstat (limited to 'patches/slock-key-feedback.diff')
-rw-r--r--patches/slock-key-feedback.diff113
1 files changed, 0 insertions, 113 deletions
diff --git a/patches/slock-key-feedback.diff b/patches/slock-key-feedback.diff
deleted file mode 100644
index b479518..0000000
--- a/patches/slock-key-feedback.diff
+++ /dev/null
@@ -1,113 +0,0 @@
-diff --git a/config.def.h b/config.def.h
-index 9855e21..29734e2 100644
---- a/config.def.h
-+++ b/config.def.h
-@@ -6,7 +6,23 @@ static const char *colorname[NUMCOLS] = {
- [INIT] = "black", /* after initialization */
- [INPUT] = "#005577", /* during input */
- [FAILED] = "#CC3333", /* wrong password */
-+ [BLOCKS] = "#ffffff", /* key feedback block */
- };
-
- /* treat a cleared input like a wrong password (color) */
- static const int failonclear = 1;
-+
-+
-+// ### Blocks bar ###
-+static short int blocks_enabled = 1; // 0 = don't show blocks
-+static const int blocks_width = 0; // 0 = full width
-+static const int blocks_height = 16;
-+
-+// position
-+static const int blocks_x = 0;
-+static const int blocks_y = 0;
-+
-+// Number of blocks
-+static const int blocks_count = 10;
-+// ### \Blocks bar ###
-+
-diff --git a/slock.c b/slock.c
-index 5ae738c..cf52710 100644
---- a/slock.c
-+++ b/slock.c
-@@ -13,6 +13,7 @@
- #include <stdio.h>
- #include <string.h>
- #include <unistd.h>
-+#include <time.h>
- #include <sys/types.h>
- #include <X11/extensions/Xrandr.h>
- #include <X11/keysym.h>
-@@ -28,7 +29,8 @@ enum {
- INIT,
- INPUT,
- FAILED,
-- NUMCOLS
-+ BLOCKS,
-+ NUMCOLS,
- };
-
- struct lock {
-@@ -83,7 +85,40 @@ dontkillme(void)
- }
- #endif
-
--static const char *
-+static void
-+draw_key_feedback(Display *dpy, struct lock **locks, int screen)
-+{
-+ XGCValues gr_values;
-+
-+ Window win = locks[screen]->win;
-+ Window root_win;
-+
-+ gr_values.foreground = locks[screen]->colors[BLOCKS];
-+ GC gc = XCreateGC(dpy, win, GCForeground, &gr_values);
-+
-+ int width = blocks_width,
-+ height = blocks_height,
-+ x = blocks_x,
-+ y = blocks_y;
-+
-+ if (height == 0 || width == 0) {
-+ int _x, _y;
-+ unsigned int screen_width, screen_height, _b, _d;
-+ XGetGeometry(dpy, win, &root_win, &_x, &_y, &screen_width, &screen_height, &_b, &_d);
-+ width = width ? width : screen_width;
-+ height = height ? height : screen_height;
-+ }
-+
-+ unsigned int block_width = width / blocks_count;
-+ unsigned int position = rand() % blocks_count;
-+
-+ XClearWindow(dpy, win);
-+ XFillRectangle(dpy, win, gc, x + position*block_width, y, block_width, height);
-+
-+ XFreeGC(dpy, gc);
-+}
-+
-+ static const char *
- gethash(void)
- {
- const char *hash;
-@@ -185,6 +220,9 @@ readpw(Display *dpy, struct xrandr *rr, struct lock **locks, int nscreens,
- memcpy(passwd + len, buf, num);
- len += num;
- }
-+ if (blocks_enabled)
-+ for (screen = 0; screen < nscreens; screen++)
-+ draw_key_feedback(dpy, locks, screen);
- break;
- }
- color = len ? INPUT : ((failure || failonclear) ? FAILED : INIT);
-@@ -355,6 +393,10 @@ main(int argc, char **argv) {
- if (setuid(duid) < 0)
- die("slock: setuid: %s\n", strerror(errno));
-
-+ time_t t;
-+ srand((unsigned) time(&t));
-+
-+
- /* check for Xrandr support */
- rr.active = XRRQueryExtension(dpy, &rr.evbase, &rr.errbase);
-