diff --git a/PKGBUILD b/PKGBUILD index 2b22abf..7d2459d 100644 --- a/PKGBUILD +++ b/PKGBUILD @@ -19,8 +19,6 @@ sha256sums=('b53849dbc60109a987d7a49b8da197305c29307fd74c12dc18af0d3044392e6a' _patches=("slock-dpms-20170923-fa11589.diff" "local-quickcancel-20160619-65b8d52.diff" "local-mediakeys-20170111-2d2a21a.diff" - #"slock-message-20180626-35633d4.diff" - #"slock-1.2-background-image.diff" ) source=("http://dl.suckless.org/st/$pkgname-$pkgver.tar.gz" diff --git a/slock-1.2-background-image.diff b/slock-1.2-background-image.diff deleted file mode 100644 index df7549a..0000000 --- a/slock-1.2-background-image.diff +++ /dev/null @@ -1,108 +0,0 @@ -diff --git config.mk config.mk -index 8cc3f68..0b2b096 100644 ---- a/config.mk -+++ b/config.mk -@@ -11,7 +11,7 @@ X11LIB = /usr/X11R6/lib - - # includes and libs - INCS = -I. -I/usr/include -I${X11INC} --LIBS = -L/usr/lib -lc -lcrypt -L${X11LIB} -lX11 -lXext -+LIBS = -L/usr/lib -lc -lcrypt -L${X11LIB} -lX11 -lXext -lImlib2 - - # flags - CPPFLAGS = -DVERSION=\"${VERSION}\" -DHAVE_SHADOW_H -DCOLOR1=\"black\" -DCOLOR2=\"\#005577\" -diff --git slock.c slock.c -index d281965..e1f40a2 100644 ---- a/slock.c -+++ b/slock.c -@@ -17,6 +17,7 @@ - #include - #include - #include -+#include - - #if HAVE_BSD_AUTH - #include -@@ -27,6 +28,7 @@ typedef struct { - int screen; - Window root, win; - Pixmap pmap; -+ Pixmap bgmap; - unsigned long colors[2]; - } Lock; - -@@ -34,6 +36,8 @@ static Lock **locks; - static int nscreens; - static Bool running = True; - -+Imlib_Image image; -+ - static void - die(const char *errstr, ...) { - va_list ap; -@@ -160,7 +164,10 @@ readpw(Display *dpy, const char *pws) - } - } else if(llen != 0 && len == 0) { - for(screen = 0; screen < nscreens; screen++) { -- XSetWindowBackground(dpy, locks[screen]->win, locks[screen]->colors[0]); -+ if(locks[screen]->bgmap) -+ XSetWindowBackgroundPixmap(dpy, locks[screen]->win, locks[screen]->bgmap); -+ else -+ XSetWindowBackground(dpy, locks[screen]->win, locks[screen]->colors[0]); - XClearWindow(dpy, locks[screen]->win); - } - } -@@ -204,12 +211,27 @@ lockscreen(Display *dpy, int 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(); -+ } -+ - /* init */ - wa.override_redirect = 1; - wa.background_pixel = BlackPixel(dpy, lock->screen); - lock->win = XCreateWindow(dpy, lock->root, 0, 0, DisplayWidth(dpy, lock->screen), DisplayHeight(dpy, lock->screen), - 0, DefaultDepth(dpy, lock->screen), CopyFromParent, - DefaultVisual(dpy, lock->screen), CWOverrideRedirect | CWBackPixel, &wa); -+ -+ if(lock->bgmap) -+ XSetWindowBackgroundPixmap(dpy, lock->win, lock->bgmap); -+ - XAllocNamedColor(dpy, DefaultColormap(dpy, lock->screen), COLOR2, &color, &dummy); - lock->colors[1] = color.pixel; - XAllocNamedColor(dpy, DefaultColormap(dpy, lock->screen), COLOR1, &color, &dummy); -@@ -246,7 +268,7 @@ lockscreen(Display *dpy, int screen) { - - static void - usage(void) { -- fprintf(stderr, "usage: slock [-v]\n"); -+ fprintf(stderr, "\nusage: slock [options]\noptions:\n\t-v\tPrint version and exit.\n\t-i\t\n"); - exit(EXIT_FAILURE); - } - -@@ -258,8 +280,15 @@ main(int argc, char **argv) { - Display *dpy; - int screen; - -- if((argc == 2) && !strcmp("-v", argv[1])) -+ if((argc == 2) && !strcmp("-v", argv[1])) { - die("slock-%s, © 2006-2012 Anselm R Garbe\n", VERSION); -+ } -+ if((argc == 3) && !strcmp("-i", argv[1])) { -+ image = imlib_load_image(argv[2]); -+ if(!image) { -+ die("slock: unable to load image.\n"); -+ } -+ } - else if(argc != 1) - usage(); - diff --git a/slock-message-20180626-35633d4.diff b/slock-message-20180626-35633d4.diff deleted file mode 100644 index 21f006a..0000000 --- a/slock-message-20180626-35633d4.diff +++ /dev/null @@ -1,171 +0,0 @@ -From 8384a863057f024868bd8455a82013f716197ab0 Mon Sep 17 00:00:00 2001 -From: Blair Drummond -Date: Tue, 26 Jun 2018 15:09:13 -0400 -Subject: [PATCH] Adds [-m message] option to leave a message on the lockscreen - ---- - config.def.h | 9 ++++++ - slock.1 | 4 +++ - slock.c | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++-- - 3 files changed, 87 insertions(+), 3 deletions(-) - -diff --git a/config.def.h b/config.def.h -index 9855e21..7eb7a0d 100644 ---- a/config.def.h -+++ b/config.def.h -@@ -10,3 +10,12 @@ static const char *colorname[NUMCOLS] = { - - /* treat a cleared input like a wrong password (color) */ - static const int failonclear = 1; -+ -+/* default message */ -+static const char * message = "Suckless: Software that sucks less."; -+ -+/* text color */ -+static const char * text_color = "#ffffff"; -+ -+/* text size (must be a valid size) */ -+static const char * text_size = "6x10"; -diff --git a/slock.1 b/slock.1 -index 82cdcd6..541a264 100644 ---- a/slock.1 -+++ b/slock.1 -@@ -6,6 +6,7 @@ - .Sh SYNOPSIS - .Nm - .Op Fl v -+.Op Fl m Ar message - .Op Ar cmd Op Ar arg ... - .Sh DESCRIPTION - .Nm -@@ -16,6 +17,9 @@ is executed after the screen has been locked. - .Bl -tag -width Ds - .It Fl v - Print version information to stdout and exit. -+.It Fl m Ar message -+Overrides default slock lock message. -+.TP - .El - .Sh SECURITY CONSIDERATIONS - To make sure a locked screen can not be bypassed by switching VTs -diff --git a/slock.c b/slock.c -index 5ae738c..6a9a03f 100644 ---- a/slock.c -+++ b/slock.c -@@ -61,6 +61,71 @@ die(const char *errstr, ...) - #include - #include - -+static void -+writemessage(Display *dpy, Window win, int screen) -+{ -+ int len, line_len, width, height, i, j, k, tab_replace, tab_size; -+ XGCValues gr_values; -+ XFontStruct *fontinfo; -+ XColor color, dummy; -+ GC gc; -+ fontinfo = XLoadQueryFont(dpy, text_size); -+ tab_size = 8 * XTextWidth(fontinfo, " ", 1); -+ -+ XAllocNamedColor(dpy, DefaultColormap(dpy, screen), -+ text_color, &color, &dummy); -+ -+ gr_values.font = fontinfo->fid; -+ gr_values.foreground = color.pixel; -+ gc=XCreateGC(dpy,win,GCFont+GCForeground, &gr_values); -+ -+ -+ /* -+ * Start formatting and drawing text -+ */ -+ -+ len = strlen(message); -+ -+ /* Max max line length (cut at '\n') */ -+ line_len = 0; -+ k = 0; -+ for (i = j = 0; i < len; i++) { -+ if (message[i] == '\n') { -+ if (i - j > line_len) -+ line_len = i - j; -+ k++; -+ i++; -+ j = i; -+ } -+ } -+ /* If there is only one line */ -+ if (line_len == 0) -+ line_len = len; -+ -+ height = DisplayHeight(dpy, screen)*3/7 - (k*20)/3; -+ width = (DisplayWidth(dpy, screen) - XTextWidth(fontinfo, message, line_len))/2; -+ -+ /* Look for '\n' and print the text between them. */ -+ for (i = j = k = 0; i <= len; i++) { -+ /* i == len is the special case for the last line */ -+ if (i == len || message[i] == '\n') { -+ tab_replace = 0; -+ while (message[j] == '\t' && j < i) { -+ tab_replace++; -+ j++; -+ } -+ -+ XDrawString(dpy, win, gc, width + tab_size*tab_replace, height + 20*k, message + j, i - j); -+ while (i < len && message[i] == '\n') { -+ i++; -+ j = i; -+ k++; -+ } -+ } -+ } -+} -+ -+ - static void - dontkillme(void) - { -@@ -194,6 +259,7 @@ readpw(Display *dpy, struct xrandr *rr, struct lock **locks, int nscreens, - locks[screen]->win, - locks[screen]->colors[color]); - XClearWindow(dpy, locks[screen]->win); -+ writemessage(dpy, locks[screen]->win, screen); - } - oldc = color; - } -@@ -300,7 +366,7 @@ lockscreen(Display *dpy, struct xrandr *rr, int screen) - static void - usage(void) - { -- die("usage: slock [-v] [cmd [arg ...]]\n"); -+ die("usage: slock [-v] [-m message] [cmd [arg ...]]\n"); - } - - int -@@ -319,6 +385,9 @@ main(int argc, char **argv) { - case 'v': - fprintf(stderr, "slock-"VERSION"\n"); - return 0; -+ case 'm': -+ message = EARGF(usage()); -+ break; - default: - usage(); - } ARGEND -@@ -363,10 +432,12 @@ main(int argc, char **argv) { - if (!(locks = calloc(nscreens, sizeof(struct lock *)))) - die("slock: out of memory\n"); - for (nlocks = 0, s = 0; s < nscreens; s++) { -- if ((locks[s] = lockscreen(dpy, &rr, s)) != NULL) -+ if ((locks[s] = lockscreen(dpy, &rr, s)) != NULL) { -+ writemessage(dpy, locks[s]->win, s); - nlocks++; -- else -+ } else { - break; -+ } - } - XSync(dpy, 0); - --- -2.17.1 -