dmenu

dynamic menu
git clone git://git.suckless.org/dmenu
Log | Files | Refs | README | LICENSE

commit 5c0d28e4ff9909059ac1247aa71f9b1e906fea3a
parent e0fe9f2fcac32f04f7fda5236f48d1a705cbdcce
Author: arg@mmvi <unknown>
Date:   Tue, 26 Sep 2006 13:20:47 +0200

removed config.h stuff, made dwm configurable due to command line options
Diffstat:
MMakefile | 6+-----
Dconfig.arg.h | 11-----------
Dconfig.default.h | 11-----------
Mconfig.mk | 2+-
Mdmenu.1 | 27++++++++++++++++++++++++---
Mdmenu.h | 6+++++-
Mmain.c | 52++++++++++++++++++++++++++++++++++++----------------
7 files changed, 67 insertions(+), 48 deletions(-)

diff --git a/Makefile b/Makefile @@ -19,11 +19,7 @@ options: @echo CC $< @${CC} -c ${CFLAGS} $< -${OBJ}: dmenu.h config.h config.mk - -config.h: - @echo creating $@ from config.default.h - @cp config.default.h $@ +${OBJ}: dmenu.h config.mk dmenu: ${OBJ} @echo LD $@ diff --git a/config.arg.h b/config.arg.h @@ -1,11 +0,0 @@ -/* - * (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com> - * See LICENSE file for license details. - */ - -#define FONT "-*-terminus-medium-*-*-*-12-*-*-*-*-*-iso10646-*" -#define SELBGCOLOR "#333366" -#define SELFGCOLOR "#eeeeee" -#define NORMBGCOLOR "#333333" -#define NORMFGCOLOR "#dddddd" -#define STDIN_TIMEOUT 3 /* seconds */ diff --git a/config.default.h b/config.default.h @@ -1,11 +0,0 @@ -/* - * (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com> - * See LICENSE file for license details. - */ - -#define FONT "fixed" -#define SELBGCOLOR "#666699" -#define SELFGCOLOR "#eeeeee" -#define NORMBGCOLOR "#333366" -#define NORMFGCOLOR "#cccccc" -#define STDIN_TIMEOUT 3 /* seconds */ diff --git a/config.mk b/config.mk @@ -1,5 +1,5 @@ # dmenu version -VERSION = 1.0 +VERSION = 1.1 # Customize below to fit your system diff --git a/dmenu.1 b/dmenu.1 @@ -3,6 +3,12 @@ dmenu \- dynamic menu .SH SYNOPSIS .B dmenu +.RB [ \-font <name> ] +.RB [ \-normbg <color> ] +.RB [ \-normfg <color> ] +.RB [ \-selbg <color> ] +.RB [ \-selfg <color> ] +.RB [ \-t <seconds> ] .RB [ \-v ] .SH DESCRIPTION .SS Overview @@ -12,6 +18,24 @@ It manages huge amounts (up to 10.000 and more) of user defined menu items efficiently. .SS Options .TP +.B \-font <name> +defines the font. +.TP +.B \-normbg <color> +defines the normal background color (#RGB, #RRGGBB, and color names are supported). +.TP +.B \-normfg <color> +defines the normal foreground color (#RGB, #RRGGBB, and color names are supported). +.TP +.B \-selbg <color> +defines the selected background color (#RGB, #RRGGBB, and color names are supported). +.TP +.B \-selfg <color> +defines the selected foreground color (#RGB, #RRGGBB, and color names are supported). +.TP +.B \-t <seconds> +defines the seconds to wait for standard input, before exiting (default is 3). +.TP .B \-v prints version information to standard output, then exits. .SH USAGE @@ -52,8 +76,5 @@ Remove enough characters from the input field to change its filtering effect. .TP .B Control-u Remove all characters from the input field. -.SH CUSTOMIZATION -dmenu is customized by creating a custom config.h and (re)compiling the source -code. This keeps it fast, secure and simple. .SH SEE ALSO .BR dwm (1) diff --git a/dmenu.h b/dmenu.h @@ -3,10 +3,14 @@ * See LICENSE file for license details. */ -#include "config.h" #include <X11/Xlib.h> #include <X11/Xlocale.h> +#define FONT "fixed" +#define NORMBGCOLOR "#333366" +#define NORMFGCOLOR "#cccccc" +#define SELBGCOLOR "#666699" +#define SELFGCOLOR "#eeeeee" #define SPACE 30 /* px */ /* color */ diff --git a/main.c b/main.c @@ -283,19 +283,41 @@ DC dc = {0}; int main(int argc, char *argv[]) { + char *font = FONT; char *maxname; + char *normbg = NORMBGCOLOR; + char *normfg = NORMFGCOLOR; + char *selbg = SELBGCOLOR; + char *selfg = SELFGCOLOR; fd_set rd; + int i; struct timeval timeout; - Item *i; + Item *itm; XEvent ev; XSetWindowAttributes wa; - if(argc == 2 && !strncmp("-v", argv[1], 3)) { - fputs("dmenu-"VERSION", (C)opyright MMVI Anselm R. Garbe\n", stdout); - exit(EXIT_SUCCESS); - } - else if(argc != 1) - eprint("usage: dmenu [-v]\n"); + timeout.tv_usec = 0; + timeout.tv_sec = 3; + /* command line args */ + for(i = 1; i < argc; i++) + if(!strncmp(argv[i], "-font", 6)) + font = argv[++i]; + else if(!strncmp(argv[i], "-normbg", 8)) + normbg = argv[++i]; + else if(!strncmp(argv[i], "-normfg", 8)) + normfg = argv[++i]; + else if(!strncmp(argv[i], "-selbg", 7)) + selbg = argv[++i]; + else if(!strncmp(argv[i], "-selfg", 7)) + selfg = argv[++i]; + else if(!strncmp(argv[i], "-t", 3)) + timeout.tv_sec = atoi(argv[++i]); + else if(!strncmp(argv[i], "-v", 3)) { + fputs("dmenu-"VERSION", (C)opyright MMVI Anselm R. Garbe\n", stdout); + exit(EXIT_SUCCESS); + } + else + eprint("usage: dmenu [-font <name>] [-{norm,sel}{bg,fg} <color>] [-t <seconds>] [-v]\n", stdout); dpy = XOpenDisplay(0); if(!dpy) @@ -312,8 +334,6 @@ main(int argc, char *argv[]) { GrabModeAsync, CurrentTime) != GrabSuccess) usleep(1000); - timeout.tv_usec = 0; - timeout.tv_sec = STDIN_TIMEOUT; FD_ZERO(&rd); FD_SET(STDIN_FILENO, &rd); if(select(ConnectionNumber(dpy) + 1, &rd, NULL, NULL, &timeout) < 1) @@ -321,11 +341,11 @@ main(int argc, char *argv[]) { maxname = readstdin(); /* style */ - dc.sel[ColBG] = getcolor(SELBGCOLOR); - dc.sel[ColFG] = getcolor(SELFGCOLOR); - dc.norm[ColBG] = getcolor(NORMBGCOLOR); - dc.norm[ColFG] = getcolor(NORMFGCOLOR); - setfont(FONT); + dc.sel[ColBG] = getcolor(selbg); + dc.sel[ColFG] = getcolor(selfg); + dc.norm[ColBG] = getcolor(normbg); + dc.norm[ColFG] = getcolor(normfg); + setfont(font); wa.override_redirect = 1; wa.background_pixmap = ParentRelative; @@ -373,10 +393,10 @@ main(int argc, char *argv[]) { } while(allitems) { - i = allitems->next; + itm = allitems->next; free(allitems->text); free(allitems); - allitems = i; + allitems = itm; } if(dc.font.set) XFreeFontSet(dpy, dc.font.set);