summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNPScript <nathan@reinerweb.ch>2022-06-19 09:25:25 +0200
committerNPScript <nathan@reinerweb.ch>2022-06-19 09:25:25 +0200
commitaf93a7a473de8bc46a00a40c52e3e56439ff7dc2 (patch)
tree26111e84a401d96ece2fcf43239514098717b0fa
parentac23be740a8b39f73c8dfebd2c391a0ef637c7ee (diff)
design update
-rw-r--r--config.h6
-rw-r--r--drw.c2
-rw-r--r--drw.obin10616 -> 0 bytes
-rw-r--r--explicit_bzero.obin1408 -> 0 bytes
-rwxr-xr-xslockbin27432 -> 27448 bytes
-rw-r--r--slock.c90
-rw-r--r--slock.obin13912 -> 0 bytes
-rw-r--r--util.obin2256 -> 0 bytes
8 files changed, 33 insertions, 65 deletions
diff --git a/config.h b/config.h
index 0fe7055..87f64a8 100644
--- a/config.h
+++ b/config.h
@@ -9,8 +9,6 @@ static const char *colorname[NUMCOLS] = {
/* treat a cleared input like a wrong password (color) */
static const int failonclear = 1;
const char * fonts[] = {"Source Code Pro:size=24"};
-const char * schemes[] = {"#547f62", "#181818", "#181818"};
-const int diasize[] = {320, 320};
-const char * lock_message = "> Nathan Reiner";
+const char * textcolor[] = {"#547f62", "#181818", "#181818"};
+const char * decoration[] = {"#7f5471", "#181818", "#181818"};
const char * pass_char = "•";
-const char * cursor_char = "_";
diff --git a/drw.c b/drw.c
index 4cdbcbe..795c055 100644
--- a/drw.c
+++ b/drw.c
@@ -385,7 +385,7 @@ drw_map(Drw *drw, Window win, int x, int y, unsigned int w, unsigned int h)
if (!drw)
return;
- XCopyArea(drw->dpy, drw->drawable, win, drw->gc, x, y, w, h, x, y);
+ XCopyArea(drw->dpy, drw->drawable, win, drw->gc, 0, 0, w, h, x, y);
XSync(drw->dpy, False);
}
diff --git a/drw.o b/drw.o
deleted file mode 100644
index b410ae3..0000000
--- a/drw.o
+++ /dev/null
Binary files differ
diff --git a/explicit_bzero.o b/explicit_bzero.o
deleted file mode 100644
index 5c022a6..0000000
--- a/explicit_bzero.o
+++ /dev/null
Binary files differ
diff --git a/slock b/slock
index f112d78..466143d 100755
--- a/slock
+++ b/slock
Binary files differ
diff --git a/slock.c b/slock.c
index d5ea2cf..1f20068 100644
--- a/slock.c
+++ b/slock.c
@@ -119,13 +119,15 @@ readpw(Display *dpy, struct xrandr *rr, struct lock **locks, int nscreens,
const char *hash)
{
XRRScreenChangeNotifyEvent *rre;
- char buf[32], passwd[256], *inputhash;
+ char buf[32] = {0}, passwd[256] = {0}, *inputhash;
int num, screen, running, failure, oldc;
- unsigned int len, color;
+ unsigned int len, lastlen, color;
+ int line = 20;
KeySym ksym;
XEvent ev;
len = 0;
+ lastlen = 0;
running = 1;
failure = 0;
@@ -134,40 +136,24 @@ readpw(Display *dpy, struct xrandr *rr, struct lock **locks, int nscreens,
scr = XRRGetScreenResources(dpy, locks[0]->win);
crtc_info = XRRGetCrtcInfo(dpy, scr, scr->crtcs[0]);
- int w_pos[] = { (crtc_info->width - diasize[0]) / 2, (crtc_info->height - diasize[1]) / 2 };
-
- int w_len[] = {diasize[0] + w_pos[0], diasize[1] + w_pos[1]};
- Drw * drw = drw_create(dpy, locks[0]->screen, locks[0]->win, crtc_info->width, crtc_info->height);
- Clr * scm = drw_scm_create(drw, schemes, 3);
+ Drw * drw = drw_create(dpy, locks[0]->screen, locks[0]->win, crtc_info->x + crtc_info->width, crtc_info->y + 300);
+ Clr * tscm = drw_scm_create(drw, textcolor, 3);
+ Clr * dscm = drw_scm_create(drw, decoration, 3);
Fnt * font = drw_fontset_create(drw, fonts, 1);
drw_setfontset(drw, font);
- drw_setscheme(drw, scm);
-
- int l_size = drw_fontset_getwidth(drw, lock_message);
- int t_pos[] = {(diasize[0] / 2) - (l_size / 2) + w_pos[0], w_pos[1]};
- int t_len[] = {diasize[0] + w_pos[0], w_pos[1] / 3};
+ const char * text = getenv("USER");
+ unsigned int twidth = drw_fontset_getwidth(drw, text);
+ drw_setscheme(drw, tscm);
drw_rect(drw, 0, 0, crtc_info->width, crtc_info->height, 1, 1);
- drw_text(drw, t_pos[0], t_pos[1], t_len[0], t_len[1], 0, lock_message, 0);
-
- drw_text(drw,
- ((strlen(passwd)) * 15) + (crtc_info->width / 2 - (strlen(passwd) + 1) * 15 / 2),
- w_pos[1] + diasize[1],
- w_len[0],
- diasize[1],
- 0,
- cursor_char,
- 0
- );
- drw_rect(drw, crtc_info->width / 2 - (strlen(passwd) + 1) * 15 / 2 - 15, w_pos[1] + diasize[1] + 140, (strlen(passwd) + 1) * 15 + 33, 47, 0, 0);
-
- drw_rect(drw, crtc_info->width / 2 - (strlen(passwd) + 1) * 15 / 2, w_pos[1] + diasize[1] + 140, (strlen(passwd) + 1) * 15 + 3, 47, 0, 1);
+ drw_text(drw, (crtc_info->width - twidth) / 2, 0, twidth, 20, 0, text, 0);
- drw_map(drw, locks[0]->win, 0, 0, crtc_info->width, crtc_info->height);
-
+ drw_setscheme(drw, dscm);
+ drw_rect(drw, (crtc_info->width - len * line) / 2, 200, len * line, 5, 1, 0);
+ drw_map(drw, locks[0]->win, crtc_info->x, crtc_info->y + (crtc_info->height - 300) / 2, crtc_info->width, 300);
while (running && !XNextEvent(dpy, &ev)) {
if (ev.type == KeyPress) {
@@ -227,42 +213,26 @@ readpw(Display *dpy, struct xrandr *rr, struct lock **locks, int nscreens,
oldc = color;
}
+ drw_setscheme(drw, tscm);
drw_rect(drw, 0, 0, crtc_info->width, crtc_info->height, 1, 1);
- drw_text(drw, t_pos[0], t_pos[1], t_len[0], t_len[1], 0, lock_message, 0);
-
- if (!failure) {
-
- for (int i = 0; i < strlen(passwd); i++) {
- drw_text(drw,
- (i * 15) + (crtc_info->width / 2 - (strlen(passwd) + 1) * 15 / 2),
- w_pos[1] + diasize[1],
- w_len[0],
- diasize[1],
- 0,
- pass_char,
- 0
- );
- }
+ drw_text(drw, (crtc_info->width - twidth) / 2, 0, twidth, 20, 0, text, 0);
- drw_text(drw,
- ((strlen(passwd)) * 15) + (crtc_info->width / 2 - (strlen(passwd) + 1) * 15 / 2),
- w_pos[1] + diasize[1],
- w_len[0],
- diasize[1],
- 0,
- cursor_char,
- 0
- );
-
- } else {
- drw_text(drw, t_pos[0], w_pos[1] + diasize[1], w_len[0], diasize[1], 0, "\u274c", 0);
- failure = 0;
- }
+ drw_setscheme(drw, running ? dscm : tscm);
+ if (lastlen < len)
+ for (int i = lastlen * line; i <= len * line; ++i) {
+ drw_rect(drw, (crtc_info->width - i) / 2, 200, i, 5, 1, 0);
+
+ drw_map(drw, locks[0]->win, crtc_info->x, crtc_info->y + (crtc_info->height - 300) / 2, crtc_info->width, 300);
+ }
+ else
+ for (int i = lastlen * line; i > len * line; --i) {
+ drw_rect(drw, (crtc_info->width - i) / 2, 200, i, 5, 1, 0);
- drw_rect(drw, crtc_info->width / 2 - (strlen(passwd) + 1) * 15 / 2 - 15, w_pos[1] + diasize[1] + 140, (strlen(passwd) + 1) * 15 + 33, 47, 0, 0);
- drw_rect(drw, crtc_info->width / 2 - (strlen(passwd) + 1) * 15 / 2, w_pos[1] + diasize[1] + 140, (strlen(passwd) + 1) * 15 + 3, 47, 0, 1);
+ drw_map(drw, locks[0]->win, crtc_info->x, crtc_info->y + (crtc_info->height - 300) / 2, crtc_info->width, 300);
+ drw_rect(drw, (crtc_info->width - i) / 2, 200, i, 5, 1, 1);
+ }
- drw_map(drw, locks[0]->win, 0, 0, crtc_info->width, crtc_info->height);
+ lastlen = len;
} else if (rr->active && ev.type == rr->evbase + RRScreenChangeNotify) {
rre = (XRRScreenChangeNotifyEvent*)&ev;
diff --git a/slock.o b/slock.o
deleted file mode 100644
index c166ced..0000000
--- a/slock.o
+++ /dev/null
Binary files differ
diff --git a/util.o b/util.o
deleted file mode 100644
index 5dee2d7..0000000
--- a/util.o
+++ /dev/null
Binary files differ