SMOLNET PORTAL home about changes
iAdd numpad shortcuts. - thingmenu - A simple graphical menu launcher for X11.	Err	bitreich.org	70
hgit clone git://bitreich.org/thingmenu	URL:git://bitreich.org/thingmenu	bitreich.org	70
1Log	/scm/thingmenu/log.gph	bitreich.org	70
1Files	/scm/thingmenu/files.gph	bitreich.org	70
1Refs	/scm/thingmenu/refs.gph	bitreich.org	70
1Tags	/scm/thingmenu/tag	bitreich.org	70
1LICENSE	/scm/thingmenu/file/LICENSE.gph	bitreich.org	70
i---	Err	bitreich.org	70
1commit 17f3dbe69cd92eef39836ced8ba24e3035aee89f	/scm/thingmenu/commit/17f3dbe69cd92eef39836ced8ba24e3035aee89f.gph	bitreich.org	70
1parent f3edf619a8441c5ebc5ea4b209770bf30788c137	/scm/thingmenu/commit/f3edf619a8441c5ebc5ea4b209770bf30788c137.gph	bitreich.org	70
hAuthor: Christoph Lohmann <20h@r-36.net>	URL:mailto:20h@r-36.net	bitreich.org	70
iDate:   Wed, 28 Dec 2022 22:23:39 +0100	Err	bitreich.org	70
i	Err	bitreich.org	70
iAdd numpad shortcuts.	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  M config.mk                           |       2 +-	Err	bitreich.org	70
i  M thingmenu.1                         |       8 ++++++--	Err	bitreich.org	70
i  M thingmenu.c                         |      85 ++++++++++++++++++++++++++++---	Err	bitreich.org	70
i	Err	bitreich.org	70
i3 files changed, 86 insertions(+), 9 deletions(-)	Err	bitreich.org	70
i---	Err	bitreich.org	70
1diff --git a/config.mk b/config.mk	/scm/thingmenu/file/config.mk.gph	bitreich.org	70
i@@ -16,7 +16,7 @@ INCS = -I. -I/usr/include -I${X11INC}	Err	bitreich.org	70
i LIBS = -L/usr/lib -L${X11LIB} -lc -lX11	Err	bitreich.org	70
i 	Err	bitreich.org	70
i # flags	Err	bitreich.org	70
i-CPPFLAGS = -DVERSION=\"${VERSION}\" -D_POSIX_C_SOURCE=200809L	Err	bitreich.org	70
i+CPPFLAGS = -DVERSION=\"${VERSION}\" -D_POSIX_C_SOURCE=200809L -D_GNU_SOURCE	Err	bitreich.org	70
i CFLAGS = -g -std=c99 -pedantic -Wall ${INCS} ${CPPFLAGS}	Err	bitreich.org	70
i LDFLAGS = -g ${LIBS}	Err	bitreich.org	70
i #LDFLAGS = -s ${LIBS}	Err	bitreich.org	70
1diff --git a/thingmenu.1 b/thingmenu.1	/scm/thingmenu/file/thingmenu.1.gph	bitreich.org	70
i@@ -9,9 +9,10 @@	Err	bitreich.org	70
i .Sh SYNOPSIS	Err	bitreich.org	70
i .Nm	Err	bitreich.org	70
i .Bk -words	Err	bitreich.org	70
i-.Op Fl x	Err	bitreich.org	70
i-.Op Fl s	Err	bitreich.org	70
i+.Op Fl n	Err	bitreich.org	70
i .Op Fl o	Err	bitreich.org	70
i+.Op Fl s	Err	bitreich.org	70
i+.Op Fl x	Err	bitreich.org	70
i .Op Fl g Ar geometry	Err	bitreich.org	70
i .Op Fl w Ar widthscaling	Err	bitreich.org	70
i .Op Fl e Ar heightscaling	Err	bitreich.org	70
i@@ -62,6 +63,9 @@ button is clicked.	Err	bitreich.org	70
i .It Fl o	Err	bitreich.org	70
i Use the horizontal layout.	Err	bitreich.org	70
i .	Err	bitreich.org	70
i+.It Fl n	Err	bitreich.org	70
i+Prepend the numpad keys for shortcuts to the entries.	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i .It Fl g	Err	bitreich.org	70
i Define the X11 geometry string, which is to be used.	Err	bitreich.org	70
i .	Err	bitreich.org	70
1diff --git a/thingmenu.c b/thingmenu.c	/scm/thingmenu/file/thingmenu.c.gph	bitreich.org	70
i@@ -106,6 +106,7 @@ static char *name = "thingmenu";	Err	bitreich.org	70
i 	Err	bitreich.org	70
i Entry **entries = NULL;	Err	bitreich.org	70
i int nentries = 0;	Err	bitreich.org	70
i+int exitentry = -1;	Err	bitreich.org	70
i int oneshot = 1;	Err	bitreich.org	70
i Bool ispressing = 0;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i@@ -157,6 +158,57 @@ keyrelease(XEvent *e)	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         for (i = 0; i < nentries && !entries[i]->highlighted; i++);	Err	bitreich.org	70
i 	Err	bitreich.org	70
i+        if (key >= XK_0 && key <= XK_9) {	Err	bitreich.org	70
i+                i = key - XK_0;	Err	bitreich.org	70
i+                key = XK_Return;	Err	bitreich.org	70
i+        } else if (key >= XK_KP_0 && key <= XK_KP_9) {	Err	bitreich.org	70
i+                i = key - XK_KP_0;	Err	bitreich.org	70
i+                key = XK_Return;	Err	bitreich.org	70
i+        }	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        switch (key) {	Err	bitreich.org	70
i+        case XK_KP_Insert:	Err	bitreich.org	70
i+                i = 0;	Err	bitreich.org	70
i+                key = XK_Return;	Err	bitreich.org	70
i+                break;	Err	bitreich.org	70
i+        case XK_KP_End:	Err	bitreich.org	70
i+                i = 1;	Err	bitreich.org	70
i+                key = XK_Return;	Err	bitreich.org	70
i+                break;	Err	bitreich.org	70
i+        case XK_KP_Down:	Err	bitreich.org	70
i+                i = 2;	Err	bitreich.org	70
i+                key = XK_Return;	Err	bitreich.org	70
i+                break;	Err	bitreich.org	70
i+        case XK_KP_Page_Down:	Err	bitreich.org	70
i+                i = 3;	Err	bitreich.org	70
i+                key = XK_Return;	Err	bitreich.org	70
i+                break;	Err	bitreich.org	70
i+        case XK_KP_Left:	Err	bitreich.org	70
i+                i = 4;	Err	bitreich.org	70
i+                key = XK_Return;	Err	bitreich.org	70
i+                break;	Err	bitreich.org	70
i+        case XK_KP_Begin:	Err	bitreich.org	70
i+                i = 5;	Err	bitreich.org	70
i+                key = XK_Return;	Err	bitreich.org	70
i+                break;	Err	bitreich.org	70
i+        case XK_KP_Right:	Err	bitreich.org	70
i+                i = 6;	Err	bitreich.org	70
i+                key = XK_Return;	Err	bitreich.org	70
i+                break;	Err	bitreich.org	70
i+        case XK_KP_Home:	Err	bitreich.org	70
i+                i = 7;	Err	bitreich.org	70
i+                key = XK_Return;	Err	bitreich.org	70
i+                break;	Err	bitreich.org	70
i+        case XK_KP_Up:	Err	bitreich.org	70
i+                i = 8;	Err	bitreich.org	70
i+                key = XK_Return;	Err	bitreich.org	70
i+                break;	Err	bitreich.org	70
i+        case XK_KP_Page_Up:	Err	bitreich.org	70
i+                i = 9;	Err	bitreich.org	70
i+                key = XK_Return;	Err	bitreich.org	70
i+                break;	Err	bitreich.org	70
i+        }	Err	bitreich.org	70
i+	Err	bitreich.org	70
i         switch (key) {	Err	bitreich.org	70
i         case XK_k:	Err	bitreich.org	70
i                 key = XK_Up;	Err	bitreich.org	70
i@@ -183,6 +235,10 @@ keyrelease(XEvent *e)	Err	bitreich.org	70
i                 entries[i]->highlighted = True;	Err	bitreich.org	70
i                 drawentry(entries[i]);	Err	bitreich.org	70
i                 break;	Err	bitreich.org	70
i+        case XK_period:	Err	bitreich.org	70
i+        case XK_KP_Decimal:	Err	bitreich.org	70
i+        case XK_KP_Delete:	Err	bitreich.org	70
i+                i = exitentry;	Err	bitreich.org	70
i         case XK_Return:	Err	bitreich.org	70
i         case XK_space:	Err	bitreich.org	70
i                 if (i < nentries) {	Err	bitreich.org	70
i@@ -614,7 +670,7 @@ updateentries(void)	Err	bitreich.org	70
i void	Err	bitreich.org	70
i usage(void)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i-        fprintf(stderr, "usage: %s [-hxso] [-g geometry] [-w widthscaling] "	Err	bitreich.org	70
i+        fprintf(stderr, "usage: %s [-hnosx] [-g geometry] [-w widthscaling] "	Err	bitreich.org	70
i                         "[-e heightscaling] [--] "	Err	bitreich.org	70
i                         "label0 cmd0 [label1 cmd1 ...]\n", argv0);	Err	bitreich.org	70
i         exit(1);	Err	bitreich.org	70
i@@ -623,7 +679,7 @@ usage(void)	Err	bitreich.org	70
i int	Err	bitreich.org	70
i main(int argc, char *argv[])	Err	bitreich.org	70
i {	Err	bitreich.org	70
i-        Bool addexit;	Err	bitreich.org	70
i+        Bool addexit, usenumpad;	Err	bitreich.org	70
i         char *label, *cmd;	Err	bitreich.org	70
i         int i, xr, yr, bitm;	Err	bitreich.org	70
i         unsigned int wr, hr;	Err	bitreich.org	70
i@@ -631,6 +687,7 @@ main(int argc, char *argv[])	Err	bitreich.org	70
i         argv0 = argv[0];	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         addexit = True;	Err	bitreich.org	70
i+        usenumpad = False;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         if (argc < 2)	Err	bitreich.org	70
i                 usage();	Err	bitreich.org	70
i@@ -654,6 +711,9 @@ main(int argc, char *argv[])	Err	bitreich.org	70
i         case 'e':	Err	bitreich.org	70
i                 heightscaling = atof(EARGF(usage()));	Err	bitreich.org	70
i                 break;	Err	bitreich.org	70
i+        case 'n':	Err	bitreich.org	70
i+                usenumpad = True;	Err	bitreich.org	70
i+                break;	Err	bitreich.org	70
i         case 'o':	Err	bitreich.org	70
i                 horizontal = True;	Err	bitreich.org	70
i                 break;	Err	bitreich.org	70
i@@ -681,8 +741,15 @@ main(int argc, char *argv[])	Err	bitreich.org	70
i                         die("realloc returned NULL");	Err	bitreich.org	70
i                 if (!(entries[nentries-1] = calloc(1, sizeof(*entries[0]))))	Err	bitreich.org	70
i                         die("calloc returned NULL");	Err	bitreich.org	70
i-                if (!(entries[nentries-1]->label = strdup(label)))	Err	bitreich.org	70
i-                        die("strdup returned NULL\n");	Err	bitreich.org	70
i+                if (usenumpad == True && nentries < 11) {	Err	bitreich.org	70
i+                        if (!(asprintf(&entries[nentries-1]->label,	Err	bitreich.org	70
i+                                        "%d:%s", nentries-1, strdup(label)))) {	Err	bitreich.org	70
i+                                die("asprintf returned NULL\n");	Err	bitreich.org	70
i+                        }	Err	bitreich.org	70
i+                } else {	Err	bitreich.org	70
i+                        if (!(entries[nentries-1]->label = strdup(label)))	Err	bitreich.org	70
i+                                die("strdup returned NULL\n");	Err	bitreich.org	70
i+                }	Err	bitreich.org	70
i                 if (!(entries[nentries-1]->cmd = strdup(cmd)))	Err	bitreich.org	70
i                         die("strdup returned NULL\n");	Err	bitreich.org	70
i                 entries[nentries-1]->forceexit = False;	Err	bitreich.org	70
i@@ -695,11 +762,17 @@ main(int argc, char *argv[])	Err	bitreich.org	70
i                         die("realloc returned NULL");	Err	bitreich.org	70
i                 if (!(entries[nentries-1] = calloc(1, sizeof(*entries[0]))))	Err	bitreich.org	70
i                         die("calloc returned NULL");	Err	bitreich.org	70
i-                if (!(entries[nentries-1]->label = strdup("cancel")))	Err	bitreich.org	70
i-                        die("strdup returned NULL\n");	Err	bitreich.org	70
i+                if (usenumpad == True) {	Err	bitreich.org	70
i+                        if (!(entries[nentries-1]->label = strdup(".:cancel")))	Err	bitreich.org	70
i+                                die("strdup returned NULL\n");	Err	bitreich.org	70
i+                } else {	Err	bitreich.org	70
i+                        if (!(entries[nentries-1]->label = strdup("cancel")))	Err	bitreich.org	70
i+                                die("strdup returned NULL\n");	Err	bitreich.org	70
i+                }	Err	bitreich.org	70
i                 if (!(entries[nentries-1]->cmd = strdup("exit")))	Err	bitreich.org	70
i                         die("strdup returned NULL\n");	Err	bitreich.org	70
i                 entries[nentries-1]->forceexit = True;	Err	bitreich.org	70
i+                exitentry = nentries - 1;	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         if(!setlocale(LC_CTYPE, "") || !XSupportsLocale())	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/thingmenu/commit/17f3dbe69cd9...
Content-Typetext/plain; charset=utf-8