SMOLNET PORTAL home about changes
iAdding horizontal and manpage. - 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 2e6e710ce313489069e9de6905e1e7f91499910f	/scm/thingmenu/commit/2e6e710ce313489069e9de6905e1e7f91499910f.gph	bitreich.org	70
1parent 9f2398547291d67362c3c6499f64deed736ef424	/scm/thingmenu/commit/9f2398547291d67362c3c6499f64deed736ef424.gph	bitreich.org	70
hAuthor: Christoph Lohmann <20h@r-36.net>	URL:mailto:20h@r-36.net	bitreich.org	70
iDate:   Sat,  2 Jul 2011 12:14:12 +0200	Err	bitreich.org	70
i	Err	bitreich.org	70
iAdding horizontal and manpage.	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  M Makefile                            |       8 +++++++-	Err	bitreich.org	70
i  D README.md                           |      26 --------------------------	Err	bitreich.org	70
i  A thingmenu.1                         |     123 +++++++++++++++++++++++++++++++	Err	bitreich.org	70
i  M thingmenu.c                         |      84 +++++++++++++++++++++++--------	Err	bitreich.org	70
i	Err	bitreich.org	70
i4 files changed, 192 insertions(+), 49 deletions(-)	Err	bitreich.org	70
i---	Err	bitreich.org	70
1diff --git a/Makefile b/Makefile	/scm/thingmenu/file/Makefile.gph	bitreich.org	70
i@@ -36,7 +36,7 @@ clean:	Err	bitreich.org	70
i dist: clean	Err	bitreich.org	70
i         @echo creating dist tarball	Err	bitreich.org	70
i         @mkdir -p ${NAME}-${VERSION}	Err	bitreich.org	70
i-        @cp -R LICENSE Makefile README.md config.mk \	Err	bitreich.org	70
i+        @cp -R LICENSE Makefile ${NAME}.1 README.md config.mk \	Err	bitreich.org	70
i                 ${SRC} *.h ${NAME}-${VERSION}	Err	bitreich.org	70
i         @tar -cf ${NAME}-${VERSION}.tar ${NAME}-${VERSION}	Err	bitreich.org	70
i         @gzip ${NAME}-${VERSION}.tar	Err	bitreich.org	70
i@@ -52,9 +52,15 @@ install: all	Err	bitreich.org	70
i         @mkdir -p ${DESTDIR}${PREFIX}/bin	Err	bitreich.org	70
i         @cp -f ${NAME} ${DESTDIR}${PREFIX}/bin	Err	bitreich.org	70
i         @chmod 755 ${DESTDIR}${PREFIX}/bin/${NAME}	Err	bitreich.org	70
i+        @echo installing manual page to ${DESTDIR}${MANPREFIX}/man1	Err	bitreich.org	70
i+        @mkdir -p ${DESTDIR}${MANPREFIX}/man1	Err	bitreich.org	70
i+        @cp -f ${NAME}.1 ${DESTDIR}${MANPREFIX}/man1	Err	bitreich.org	70
i+        @chmod 644 ${DESTDIR}${MANPREFIX}/man1/${NAME}.1	Err	bitreich.org	70
i 	Err	bitreich.org	70
i uninstall:	Err	bitreich.org	70
i         @echo removing executable file from ${DESTDIR}${PREFIX}/bin	Err	bitreich.org	70
i         @rm -f ${DESTDIR}${PREFIX}/bin/${NAME}	Err	bitreich.org	70
i+        @echo removing manual page from ${DESTDIR}${PREFIX}/man1	Err	bitreich.org	70
i+        @rm -f ${DESTDIR}${MANPREFIX}/man1/${NAME}.1	Err	bitreich.org	70
i 	Err	bitreich.org	70
i .PHONY: all options clean dist install uninstall	Err	bitreich.org	70
1diff --git a/README.md b/README.md	/scm/thingmenu/file/README.md.gph	bitreich.org	70
i@@ -1,26 +0,0 @@	Err	bitreich.org	70
i-# Thingmenu - a simple X11 menu	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-This application evolved out of the need to be able to run commands	Err	bitreich.org	70
i-in a touchscreen environment.	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-## Installation	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-        % tar -xzvf thingmenu-*.tar.gz	Err	bitreich.org	70
i-        % cd thingmenu	Err	bitreich.org	70
i-        % make	Err	bitreich.org	70
i-        % sudo PREFIX=/usr make install	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-## Usage	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-        # This will open a 300px wide menu, which is showing an	Err	bitreich.org	70
i-        # entry "Reboot now". When being clicked this entry will run	Err	bitreich.org	70
i-        # "reboot". After that the menu will not exit (-s).	Err	bitreich.org	70
i-        % thingmenu -s -ww 300 -- "Reboot now:reboot"	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-        # This will create a centered menu, which is aligned based	Err	bitreich.org	70
i-        # on the length of the label texts. After the first clicked	Err	bitreich.org	70
i-        # entry it will exit.	Err	bitreich.org	70
i-        % thingmenu "Force reboot:reboot -f" "Shutdown:shutdown"	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-Have fun!	Err	bitreich.org	70
i-	Err	bitreich.org	70
1diff --git a/thingmenu.1 b/thingmenu.1	/scm/thingmenu/file/thingmenu.1.gph	bitreich.org	70
i@@ -0,0 +1,123 @@	Err	bitreich.org	70
i+.Dd July 02, 2011	Err	bitreich.org	70
i+.Dt THINGMENU 1	Err	bitreich.org	70
i+.Os	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.Sh NAME	Err	bitreich.org	70
i+.Nm thingmenu 	Err	bitreich.org	70
i+.Nd a simple menu for X11	Err	bitreich.org	70
i+.	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 o	Err	bitreich.org	70
i+.Op Fl wh Ar height	Err	bitreich.org	70
i+.Op Fl ww Ar width	Err	bitreich.org	70
i+.Op Fl wx Ar x position	Err	bitreich.org	70
i+.Op Fl wy Ar y position	Err	bitreich.org	70
i+.Op Fl -	Err	bitreich.org	70
i+.Ar [label:]cmd ...	Err	bitreich.org	70
i+.Ek	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.Sh DESCRIPTION	Err	bitreich.org	70
i+.Bd -filled	Err	bitreich.org	70
i+.Nm	Err	bitreich.org	70
i+is a simple menu for X11. The menu can be displayed in a horizontal or	Err	bitreich.org	70
i+a vertical layout. The manual specification of the parameters of the	Err	bitreich.org	70
i+menu makes it flexible to be used in many circumstances.	Err	bitreich.org	70
i+.Ed	Err	bitreich.org	70
i+. 	Err	bitreich.org	70
i+.Sh IMPLEMENTATION	Err	bitreich.org	70
i+.Bd -filled	Err	bitreich.org	70
i+Installation is as straighforward as grabbing the tar.gz file, extracting	Err	bitreich.org	70
i+it and running	Err	bitreich.org	70
i+.Qq "make; make install;"	Err	bitreich.org	70
i+inside the	Err	bitreich.org	70
i+.Qq "thingmenu-*"	Err	bitreich.org	70
i+directory.	Err	bitreich.org	70
i+The prefix for the installation can easily set using	Err	bitreich.org	70
i+.Qq "PREFIX=/usr make install".	Err	bitreich.org	70
i+.Ed	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.Sh OPTIONS	Err	bitreich.org	70
i+.Nm	Err	bitreich.org	70
i+options and default settings.	Err	bitreich.org	70
i+.Pp	Err	bitreich.org	70
i+.Bl -tag -width ".Fl test Ao Ar string Ac"	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.It Fl x	Err	bitreich.org	70
i+Do not append a	Err	bitreich.org	70
i+.Qq "Cancel"	Err	bitreich.org	70
i+menu item.	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.Bd -filled	Err	bitreich.org	70
i+.It Fl s	Err	bitreich.org	70
i+Disable the oneshot behaviour. After one button click	Err	bitreich.org	70
i+.Nm	Err	bitreich.org	70
i+won't exit,	Err	bitreich.org	70
i+except when the	Err	bitreich.org	70
i+.Qq "Cancel"	Err	bitreich.org	70
i+button is clicked.	Err	bitreich.org	70
i+.Ed	Err	bitreich.org	70
i+.	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 wh	Err	bitreich.org	70
i+Define the overall window height.	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.It Fl ww	Err	bitreich.org	70
i+Define the overall window width.	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.It Fl wx	Err	bitreich.org	70
i+Define the absolute x position.	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.It Fl wy	Err	bitreich.org	70
i+Define the absolute y position.	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.El	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.Sh CUSTOMIZATION 	Err	bitreich.org	70
i+.Bd -filled	Err	bitreich.org	70
i+.Nm	Err	bitreich.org	70
i+is customized by creating a custom config.h and (re)compiling the	Err	bitreich.org	70
i+source code.	Err	bitreich.org	70
i+.Ed	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.Sh EXAMPLES	Err	bitreich.org	70
i+.Bd -filled	Err	bitreich.org	70
i+Open a 300px wide menu, which is showing an entry	Err	bitreich.org	70
i+.Qq "Reboot now".	Err	bitreich.org	70
i+When being clicked this entry will run	Err	bitreich.org	70
i+.Qq "reboot".	Err	bitreich.org	70
i+After that the menu will not exit (-s).	Err	bitreich.org	70
i+.Ed	Err	bitreich.org	70
i+.Bd -literal	Err	bitreich.org	70
i+        % thingmenu -s -ww 300 -- "Reboot now:reboot"	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+.Ed	Err	bitreich.org	70
i+.Bd -filled	Err	bitreich.org	70
i+This will create a centered menu, which is aligned based on the length of the	Err	bitreich.org	70
i+label texts. After the first clicked entry it will exit.	Err	bitreich.org	70
i+.Ed	Err	bitreich.org	70
i+.Bd -literal	Err	bitreich.org	70
i+        % thingmenu "Force reboot:reboot -f" "Shutdown:shutdown"	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+.Ed	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.Sh FILES	Err	bitreich.org	70
i+LICENSE, thingmenu-menu.sh, config.def.h, config.h	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.Sh AUTHORS	Err	bitreich.org	70
i+See LICENSE file for authors in the distribution.	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.Sh LICENSE	Err	bitreich.org	70
i+.Nm	Err	bitreich.org	70
i+is released under the MIT/X Consortium License.	Err	bitreich.org	70
i+.	Err	bitreich.org	70
i+.Sh BUGS	Err	bitreich.org	70
i+.Ss "Reporting Bugs"	Err	bitreich.org	70
i+Report bugs to: 	Err	bitreich.org	70
i+.An "Christoph Lohmann" Aq 20h@R-36.net	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@@ -91,8 +91,12 @@ static void (*handler[LASTEvent]) (XEvent *) = {	Err	bitreich.org	70
i static Display *dpy;	Err	bitreich.org	70
i static DC dc;	Err	bitreich.org	70
i static Window root, win;	Err	bitreich.org	70
i-static Bool running = True;	Err	bitreich.org	70
i-static int ww = 0, wh = 0, wx = 0, wy = 0;	Err	bitreich.org	70
i+static Bool running = True, horizontal = False;	Err	bitreich.org	70
i+/*	Err	bitreich.org	70
i+ * ww = window width; www = wanted width window; wh = window height;	Err	bitreich.org	70
i+ * wx = window x position; wy = window y position;	Err	bitreich.org	70
i+ */	Err	bitreich.org	70
i+static int ww = 0, www = 0, wh = 0, wx = 0, wy = 0;	Err	bitreich.org	70
i static char *name = "thingmenu";	Err	bitreich.org	70
i 	Err	bitreich.org	70
i Entry **entries = NULL;	Err	bitreich.org	70
i@@ -384,17 +388,28 @@ setup(void)	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         /* init appearance */	Err	bitreich.org	70
i 	Err	bitreich.org	70
i+        for (i = 0, www = 0; i < nentries; i++) {	Err	bitreich.org	70
i+                ls = textnw(entries[i]->label,	Err	bitreich.org	70
i+                                strlen(entries[i]->label));	Err	bitreich.org	70
i+                if (ls > www)	Err	bitreich.org	70
i+                        www = ls;	Err	bitreich.org	70
i+        }	Err	bitreich.org	70
i+        www *= 1.5;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i         if (ww == 0) {	Err	bitreich.org	70
i-                for (i = 0, ww = 0; i < nentries; i++) {	Err	bitreich.org	70
i-                        ls = textnw(entries[i]->label,	Err	bitreich.org	70
i-                                        strlen(entries[i]->label));	Err	bitreich.org	70
i-                        if (ls > ww)	Err	bitreich.org	70
i-                                ww = ls;	Err	bitreich.org	70
i+                if (horizontal) {	Err	bitreich.org	70
i+                        ww = www * nentries;	Err	bitreich.org	70
i+                } else {	Err	bitreich.org	70
i+                        ww = www;	Err	bitreich.org	70
i+                }	Err	bitreich.org	70
i+        }	Err	bitreich.org	70
i+        if (wh == 0) {	Err	bitreich.org	70
i+                if (horizontal) {	Err	bitreich.org	70
i+                        wh = dc.font.height * 2;	Err	bitreich.org	70
i+                } else {	Err	bitreich.org	70
i+                        wh = nentries * (dc.font.height * 2);	Err	bitreich.org	70
i                 }	Err	bitreich.org	70
i-                ww *= 1.5;	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i-        if (wh == 0)	Err	bitreich.org	70
i-                wh = (nentries + 2) * dc.font.height + 4;	Err	bitreich.org	70
i         if (wy == 0)	Err	bitreich.org	70
i                 wy = (sh - wh) / 2;	Err	bitreich.org	70
i         if (wx == 0)	Err	bitreich.org	70
i@@ -473,22 +488,35 @@ unpress()	Err	bitreich.org	70
i void	Err	bitreich.org	70
i updateentries(void)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i-        int i, y = 0, h;	Err	bitreich.org	70
i+        int i, x, y, h, w;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        h = wh / nentries;	Err	bitreich.org	70
i+        x = 0;	Err	bitreich.org	70
i+        y = 0;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        if (horizontal) {	Err	bitreich.org	70
i+                h = wh;	Err	bitreich.org	70
i+                w = www;	Err	bitreich.org	70
i+        } else {	Err	bitreich.org	70
i+                h = wh / nentries;	Err	bitreich.org	70
i+                w = ww;	Err	bitreich.org	70
i+        }	Err	bitreich.org	70
i         for(i = 0; i < nentries; i++) {	Err	bitreich.org	70
i-                entries[i]->x = 0;	Err	bitreich.org	70
i+                entries[i]->x = x;	Err	bitreich.org	70
i                 entries[i]->y = y;	Err	bitreich.org	70
i-                entries[i]->w = ww;	Err	bitreich.org	70
i+                entries[i]->w = w;	Err	bitreich.org	70
i                 entries[i]->h = h;	Err	bitreich.org	70
i-                y += h;	Err	bitreich.org	70
i+                if (horizontal) {	Err	bitreich.org	70
i+                        x += w;	Err	bitreich.org	70
i+                } else {	Err	bitreich.org	70
i+                        y += h;	Err	bitreich.org	70
i+                }	Err	bitreich.org	70
i         }	Err	bitreich.org	70
i }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i void	Err	bitreich.org	70
i usage(char *argv0)	Err	bitreich.org	70
i {	Err	bitreich.org	70
i-        fprintf(stderr, "usage: %s [-hs] [-wh height] [-ww width] "	Err	bitreich.org	70
i+        fprintf(stderr, "usage: %s [-hxso] [-wh height] [-ww width] "	Err	bitreich.org	70
i                         "[-wx x position] [-wy y position] [--] "	Err	bitreich.org	70
i                         "label:cmd ...\n", argv0);	Err	bitreich.org	70
i         exit(1);	Err	bitreich.org	70
i@@ -497,9 +525,13 @@ usage(char *argv0)	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         char *label, *cmd;	Err	bitreich.org	70
i         int i;	Err	bitreich.org	70
i 	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        addexit = True;	Err	bitreich.org	70
i+	Err	bitreich.org	70
i         if (argc < 2)	Err	bitreich.org	70
i                 usage(argv[0]);	Err	bitreich.org	70
i         i = 1;	Err	bitreich.org	70
i@@ -515,6 +547,9 @@ main(int argc, char *argv[])	Err	bitreich.org	70
i                 switch (argv[i][1]) {	Err	bitreich.org	70
i                 case 'h':	Err	bitreich.org	70
i                         usage(argv[0]);	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                 case 's':	Err	bitreich.org	70
i                         oneshot = 0;	Err	bitreich.org	70
i                         break;	Err	bitreich.org	70
i@@ -540,6 +575,9 @@ main(int argc, char *argv[])	Err	bitreich.org	70
i                                 usage(argv[0]);	Err	bitreich.org	70
i                         }	Err	bitreich.org	70
i                         break;	Err	bitreich.org	70
i+                case 'x':	Err	bitreich.org	70
i+                        addexit = False;	Err	bitreich.org	70
i+                        break;	Err	bitreich.org	70
i                 default:	Err	bitreich.org	70
i                         usage(argv[0]);	Err	bitreich.org	70
i                 }	Err	bitreich.org	70
i@@ -568,12 +606,14 @@ main(int argc, char *argv[])	Err	bitreich.org	70
i         if (nentries < 1)	Err	bitreich.org	70
i                 usage(argv[0]);	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-        entries = realloc(entries, sizeof(entries[0])*(++nentries));	Err	bitreich.org	70
i-        entries[nentries-1] = malloc(sizeof(*entries[0]));	Err	bitreich.org	70
i-        bzero(entries[nentries-1], sizeof(*entries[0]));	Err	bitreich.org	70
i-        entries[nentries-1]->label = strdup("cancel");	Err	bitreich.org	70
i-        entries[nentries-1]->cmd = "exit";	Err	bitreich.org	70
i-        entries[nentries-1]->forceexit = True;	Err	bitreich.org	70
i+        if (addexit) {	Err	bitreich.org	70
i+                entries = realloc(entries, sizeof(entries[0])*(++nentries));	Err	bitreich.org	70
i+                entries[nentries-1] = malloc(sizeof(*entries[0]));	Err	bitreich.org	70
i+                bzero(entries[nentries-1], sizeof(*entries[0]));	Err	bitreich.org	70
i+                entries[nentries-1]->label = strdup("cancel");	Err	bitreich.org	70
i+                entries[nentries-1]->cmd = "exit";	Err	bitreich.org	70
i+                entries[nentries-1]->forceexit = True;	Err	bitreich.org	70
i+        }	Err	bitreich.org	70
i 	Err	bitreich.org	70
i         if(!setlocale(LC_CTYPE, "") || !XSupportsLocale())	Err	bitreich.org	70
i                 fprintf(stderr, "warning: no locale support\n");	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/thingmenu/commit/2e6e710ce313...
Content-Typetext/plain; charset=utf-8