aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile6
-rw-r--r--config.arg.h11
-rw-r--r--config.default.h11
-rw-r--r--config.mk2
-rw-r--r--dmenu.127
-rw-r--r--dmenu.h6
-rw-r--r--main.c52
7 files changed, 67 insertions, 48 deletions
diff --git a/Makefile b/Makefile
index 2fa60d4..5a8f21a 100644
--- a/Makefile
+++ b/Makefile
@@ -19,11 +19,7 @@ options:
19 @echo CC $< 19 @echo CC $<
20 @${CC} -c ${CFLAGS} $< 20 @${CC} -c ${CFLAGS} $<
21 21
22${OBJ}: dmenu.h config.h config.mk 22${OBJ}: dmenu.h config.mk
23
24config.h:
25 @echo creating $@ from config.default.h
26 @cp config.default.h $@
27 23
28dmenu: ${OBJ} 24dmenu: ${OBJ}
29 @echo LD $@ 25 @echo LD $@
diff --git a/config.arg.h b/config.arg.h
deleted file mode 100644
index 5b99a2c..0000000
--- a/config.arg.h
+++ /dev/null
@@ -1,11 +0,0 @@
1/*
2 * (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com>
3 * See LICENSE file for license details.
4 */
5
6#define FONT "-*-terminus-medium-*-*-*-12-*-*-*-*-*-iso10646-*"
7#define SELBGCOLOR "#333366"
8#define SELFGCOLOR "#eeeeee"
9#define NORMBGCOLOR "#333333"
10#define NORMFGCOLOR "#dddddd"
11#define STDIN_TIMEOUT 3 /* seconds */
diff --git a/config.default.h b/config.default.h
deleted file mode 100644
index 0bae3a1..0000000
--- a/config.default.h
+++ /dev/null
@@ -1,11 +0,0 @@
1/*
2 * (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com>
3 * See LICENSE file for license details.
4 */
5
6#define FONT "fixed"
7#define SELBGCOLOR "#666699"
8#define SELFGCOLOR "#eeeeee"
9#define NORMBGCOLOR "#333366"
10#define NORMFGCOLOR "#cccccc"
11#define STDIN_TIMEOUT 3 /* seconds */
diff --git a/config.mk b/config.mk
index 3af05bd..8440322 100644
--- a/config.mk
+++ b/config.mk
@@ -1,5 +1,5 @@
1# dmenu version 1# dmenu version
2VERSION = 1.0 2VERSION = 1.1
3 3
4# Customize below to fit your system 4# Customize below to fit your system
5 5
diff --git a/dmenu.1 b/dmenu.1
index 7495ef3..cfe16b4 100644
--- a/dmenu.1
+++ b/dmenu.1
@@ -3,6 +3,12 @@
3dmenu \- dynamic menu 3dmenu \- dynamic menu
4.SH SYNOPSIS 4.SH SYNOPSIS
5.B dmenu 5.B dmenu
6.RB [ \-font <name> ]
7.RB [ \-normbg <color> ]
8.RB [ \-normfg <color> ]
9.RB [ \-selbg <color> ]
10.RB [ \-selfg <color> ]
11.RB [ \-t <seconds> ]
6.RB [ \-v ] 12.RB [ \-v ]
7.SH DESCRIPTION 13.SH DESCRIPTION
8.SS Overview 14.SS Overview
@@ -12,6 +18,24 @@ It manages huge amounts (up to 10.000 and more) of user defined menu items
12efficiently. 18efficiently.
13.SS Options 19.SS Options
14.TP 20.TP
21.B \-font <name>
22defines the font.
23.TP
24.B \-normbg <color>
25defines the normal background color (#RGB, #RRGGBB, and color names are supported).
26.TP
27.B \-normfg <color>
28defines the normal foreground color (#RGB, #RRGGBB, and color names are supported).
29.TP
30.B \-selbg <color>
31defines the selected background color (#RGB, #RRGGBB, and color names are supported).
32.TP
33.B \-selfg <color>
34defines the selected foreground color (#RGB, #RRGGBB, and color names are supported).
35.TP
36.B \-t <seconds>
37defines the seconds to wait for standard input, before exiting (default is 3).
38.TP
15.B \-v 39.B \-v
16prints version information to standard output, then exits. 40prints version information to standard output, then exits.
17.SH USAGE 41.SH USAGE
@@ -52,8 +76,5 @@ Remove enough characters from the input field to change its filtering effect.
52.TP 76.TP
53.B Control-u 77.B Control-u
54Remove all characters from the input field. 78Remove all characters from the input field.
55.SH CUSTOMIZATION
56dmenu is customized by creating a custom config.h and (re)compiling the source
57code. This keeps it fast, secure and simple.
58.SH SEE ALSO 79.SH SEE ALSO
59.BR dwm (1) 80.BR dwm (1)
diff --git a/dmenu.h b/dmenu.h
index eed5689..d4065d2 100644
--- a/dmenu.h
+++ b/dmenu.h
@@ -3,10 +3,14 @@
3 * See LICENSE file for license details. 3 * See LICENSE file for license details.
4 */ 4 */
5 5
6#include "config.h"
7#include <X11/Xlib.h> 6#include <X11/Xlib.h>
8#include <X11/Xlocale.h> 7#include <X11/Xlocale.h>
9 8
9#define FONT "fixed"
10#define NORMBGCOLOR "#333366"
11#define NORMFGCOLOR "#cccccc"
12#define SELBGCOLOR "#666699"
13#define SELFGCOLOR "#eeeeee"
10#define SPACE 30 /* px */ 14#define SPACE 30 /* px */
11 15
12/* color */ 16/* color */
diff --git a/main.c b/main.c
index 170a3e0..27b28af 100644
--- a/main.c
+++ b/main.c
@@ -283,19 +283,41 @@ DC dc = {0};
283 283
284int 284int
285main(int argc, char *argv[]) { 285main(int argc, char *argv[]) {
286 char *font = FONT;
286 char *maxname; 287 char *maxname;
288 char *normbg = NORMBGCOLOR;
289 char *normfg = NORMFGCOLOR;
290 char *selbg = SELBGCOLOR;
291 char *selfg = SELFGCOLOR;
287 fd_set rd; 292 fd_set rd;
293 int i;
288 struct timeval timeout; 294 struct timeval timeout;
289 Item *i; 295 Item *itm;
290 XEvent ev; 296 XEvent ev;
291 XSetWindowAttributes wa; 297 XSetWindowAttributes wa;
292 298
293 if(argc == 2 && !strncmp("-v", argv[1], 3)) { 299 timeout.tv_usec = 0;
294 fputs("dmenu-"VERSION", (C)opyright MMVI Anselm R. Garbe\n", stdout); 300 timeout.tv_sec = 3;
295 exit(EXIT_SUCCESS); 301 /* command line args */
296 } 302 for(i = 1; i < argc; i++)
297 else if(argc != 1) 303 if(!strncmp(argv[i], "-font", 6))
298 eprint("usage: dmenu [-v]\n"); 304 font = argv[++i];
305 else if(!strncmp(argv[i], "-normbg", 8))
306 normbg = argv[++i];
307 else if(!strncmp(argv[i], "-normfg", 8))
308 normfg = argv[++i];
309 else if(!strncmp(argv[i], "-selbg", 7))
310 selbg = argv[++i];
311 else if(!strncmp(argv[i], "-selfg", 7))
312 selfg = argv[++i];
313 else if(!strncmp(argv[i], "-t", 3))
314 timeout.tv_sec = atoi(argv[++i]);
315 else if(!strncmp(argv[i], "-v", 3)) {
316 fputs("dmenu-"VERSION", (C)opyright MMVI Anselm R. Garbe\n", stdout);
317 exit(EXIT_SUCCESS);
318 }
319 else
320 eprint("usage: dmenu [-font <name>] [-{norm,sel}{bg,fg} <color>] [-t <seconds>] [-v]\n", stdout);
299 321
300 dpy = XOpenDisplay(0); 322 dpy = XOpenDisplay(0);
301 if(!dpy) 323 if(!dpy)
@@ -312,8 +334,6 @@ main(int argc, char *argv[]) {
312 GrabModeAsync, CurrentTime) != GrabSuccess) 334 GrabModeAsync, CurrentTime) != GrabSuccess)
313 usleep(1000); 335 usleep(1000);
314 336
315 timeout.tv_usec = 0;
316 timeout.tv_sec = STDIN_TIMEOUT;
317 FD_ZERO(&rd); 337 FD_ZERO(&rd);
318 FD_SET(STDIN_FILENO, &rd); 338 FD_SET(STDIN_FILENO, &rd);
319 if(select(ConnectionNumber(dpy) + 1, &rd, NULL, NULL, &timeout) < 1) 339 if(select(ConnectionNumber(dpy) + 1, &rd, NULL, NULL, &timeout) < 1)
@@ -321,11 +341,11 @@ main(int argc, char *argv[]) {
321 maxname = readstdin(); 341 maxname = readstdin();
322 342
323 /* style */ 343 /* style */
324 dc.sel[ColBG] = getcolor(SELBGCOLOR); 344 dc.sel[ColBG] = getcolor(selbg);
325 dc.sel[ColFG] = getcolor(SELFGCOLOR); 345 dc.sel[ColFG] = getcolor(selfg);
326 dc.norm[ColBG] = getcolor(NORMBGCOLOR); 346 dc.norm[ColBG] = getcolor(normbg);
327 dc.norm[ColFG] = getcolor(NORMFGCOLOR); 347 dc.norm[ColFG] = getcolor(normfg);
328 setfont(FONT); 348 setfont(font);
329 349
330 wa.override_redirect = 1; 350 wa.override_redirect = 1;
331 wa.background_pixmap = ParentRelative; 351 wa.background_pixmap = ParentRelative;
@@ -373,10 +393,10 @@ main(int argc, char *argv[]) {
373 } 393 }
374 394
375 while(allitems) { 395 while(allitems) {
376 i = allitems->next; 396 itm = allitems->next;
377 free(allitems->text); 397 free(allitems->text);
378 free(allitems); 398 free(allitems);
379 allitems = i; 399 allitems = itm;
380 } 400 }
381 if(dc.font.set) 401 if(dc.font.set)
382 XFreeFontSet(dpy, dc.font.set); 402 XFreeFontSet(dpy, dc.font.set);