diff options
-rw-r--r-- | dinput.c | 24 | ||||
-rw-r--r-- | dmenu.c | 22 |
2 files changed, 32 insertions, 14 deletions
@@ -76,11 +76,11 @@ drawinput(void) | |||
76 | /* print prompt? */ | 76 | /* print prompt? */ |
77 | if(prompt) { | 77 | if(prompt) { |
78 | dc.w = promptw; | 78 | dc.w = promptw; |
79 | drawtext(&dc, prompt, selcol, False); | 79 | drawtext(&dc, prompt, normcol, False); |
80 | dc.x += dc.w; | 80 | dc.x += dc.w; |
81 | } | 81 | } |
82 | dc.w = mw - dc.x; | 82 | dc.w = mw - dc.x; |
83 | drawtext(&dc, *text ? text : NULL, normcol, False); | 83 | drawtext(&dc, *text ? text : NULL, selcol, False); |
84 | drawcursor(); | 84 | drawcursor(); |
85 | XCopyArea(dpy, dc.drawable, win, dc.gc, 0, 0, mw, mh, 0, 0); | 85 | XCopyArea(dpy, dc.drawable, win, dc.gc, 0, 0, mw, mh, 0, 0); |
86 | XFlush(dpy); | 86 | XFlush(dpy); |
@@ -329,11 +329,15 @@ main(int argc, char *argv[]) { | |||
329 | /* command line args */ | 329 | /* command line args */ |
330 | progname = argv[0]; | 330 | progname = argv[0]; |
331 | for(i = 1; i < argc; i++) | 331 | for(i = 1; i < argc; i++) |
332 | if(!strcmp(argv[i], "-b")) | 332 | if(!strcmp(argv[i], "-i")) |
333 | ; /* ignore flag */ | ||
334 | else if(!strcmp(argv[i], "-b")) | ||
333 | topbar = False; | 335 | topbar = False; |
334 | else if(!strcmp(argv[i], "-e")) { | 336 | else if(!strcmp(argv[i], "-e")) { |
335 | if(++i < argc) parent = atoi(argv[i]); | 337 | if(++i < argc) parent = atoi(argv[i]); |
336 | } | 338 | } |
339 | else if(!strcmp(argv[i], "-l")) | ||
340 | i++; /* ignore flag */ | ||
337 | else if(!strcmp(argv[i], "-fn")) { | 341 | else if(!strcmp(argv[i], "-fn")) { |
338 | if(++i < argc) font = argv[i]; | 342 | if(++i < argc) font = argv[i]; |
339 | } | 343 | } |
@@ -352,13 +356,17 @@ main(int argc, char *argv[]) { | |||
352 | else if(!strcmp(argv[i], "-sf")) { | 356 | else if(!strcmp(argv[i], "-sf")) { |
353 | if(++i < argc) selfgcolor = argv[i]; | 357 | if(++i < argc) selfgcolor = argv[i]; |
354 | } | 358 | } |
355 | else if(!strcmp(argv[i], "-v")) | 359 | else if(!strcmp(argv[i], "-v")) { |
356 | eprint("dinput-"VERSION", © 2006-2010 dinput engineers, see LICENSE for details\n"); | 360 | printf("dinput-"VERSION", © 2006-2010 dinput engineers, see LICENSE for details\n"); |
361 | exit(EXIT_SUCCESS); | ||
362 | } | ||
357 | else if(!*text) | 363 | else if(!*text) |
358 | strncpy(text, argv[i], sizeof text); | 364 | strncpy(text, argv[i], sizeof text); |
359 | else | 365 | else { |
360 | eprint("usage: dinput [-b] [-e <xid>] [-fn <font>] [-nb <color>] [-nf <color>]\n" | 366 | fputs("usage: dinput [-b] [-e <xid>] [-fn <font>] [-nb <color>] [-nf <color>]\n" |
361 | " [-p <prompt>] [-sb <color>] [-sf <color>] [-v] [<text>]\n"); | 367 | " [-p <prompt>] [-sb <color>] [-sf <color>] [-v] [<text>]\n", stderr); |
368 | exit(EXIT_FAILURE); | ||
369 | } | ||
362 | if(!setlocale(LC_CTYPE, "") || !XSupportsLocale()) | 370 | if(!setlocale(LC_CTYPE, "") || !XSupportsLocale()) |
363 | fprintf(stderr, "dinput: warning: no locale support\n"); | 371 | fprintf(stderr, "dinput: warning: no locale support\n"); |
364 | if(!(dpy = XOpenDisplay(NULL))) | 372 | if(!(dpy = XOpenDisplay(NULL))) |
@@ -49,6 +49,7 @@ static void setup(Bool topbar); | |||
49 | #include "draw.h" | 49 | #include "draw.h" |
50 | 50 | ||
51 | /* variables */ | 51 | /* variables */ |
52 | static char **argp = NULL; | ||
52 | static char *maxname = NULL; | 53 | static char *maxname = NULL; |
53 | static char *prompt = NULL; | 54 | static char *prompt = NULL; |
54 | static char text[4096]; | 55 | static char text[4096]; |
@@ -151,7 +152,9 @@ cleanup(void) { | |||
151 | void | 152 | void |
152 | dinput(void) { | 153 | dinput(void) { |
153 | cleanup(); | 154 | cleanup(); |
154 | execlp("dinput", "dinput", text, NULL); /* todo: argv */ | 155 | argp[0] = "dinput"; |
156 | argp[1] = text; | ||
157 | execvp("dinput", argp); | ||
155 | eprint("cannot exec dinput\n"); | 158 | eprint("cannot exec dinput\n"); |
156 | } | 159 | } |
157 | 160 | ||
@@ -587,11 +590,15 @@ main(int argc, char *argv[]) { | |||
587 | else if(!strcmp(argv[i], "-sf")) { | 590 | else if(!strcmp(argv[i], "-sf")) { |
588 | if(++i < argc) selfgcolor = argv[i]; | 591 | if(++i < argc) selfgcolor = argv[i]; |
589 | } | 592 | } |
590 | else if(!strcmp(argv[i], "-v")) | 593 | else if(!strcmp(argv[i], "-v")) { |
591 | eprint("dmenu-"VERSION", © 2006-2010 dmenu engineers, see LICENSE for details\n"); | 594 | printf("dmenu-"VERSION", © 2006-2010 dmenu engineers, see LICENSE for details\n"); |
592 | else | 595 | exit(EXIT_SUCCESS); |
593 | eprint("usage: dmenu [-i] [-b] [-e <xid>] [-l <lines>] [-fn <font>] [-nb <color>]\n" | 596 | } |
594 | " [-nf <color>] [-p <prompt>] [-sb <color>] [-sf <color>] [-v]\n"); | 597 | else { |
598 | fputs("usage: dmenu [-i] [-b] [-e <xid>] [-l <lines>] [-fn <font>] [-nb <color>]\n" | ||
599 | " [-nf <color>] [-p <prompt>] [-sb <color>] [-sf <color>] [-v]\n", stderr); | ||
600 | exit(EXIT_FAILURE); | ||
601 | } | ||
595 | if(!setlocale(LC_CTYPE, "") || !XSupportsLocale()) | 602 | if(!setlocale(LC_CTYPE, "") || !XSupportsLocale()) |
596 | fprintf(stderr, "dmenu: warning: no locale support\n"); | 603 | fprintf(stderr, "dmenu: warning: no locale support\n"); |
597 | if(!(dpy = XOpenDisplay(NULL))) | 604 | if(!(dpy = XOpenDisplay(NULL))) |
@@ -599,6 +606,9 @@ main(int argc, char *argv[]) { | |||
599 | screen = DefaultScreen(dpy); | 606 | screen = DefaultScreen(dpy); |
600 | if(!parent) | 607 | if(!parent) |
601 | parent = RootWindow(dpy, screen); | 608 | parent = RootWindow(dpy, screen); |
609 | if(!(argp = malloc(sizeof *argp * (argc+2)))) | ||
610 | eprint("cannot malloc %u bytes\n", sizeof *argp * (argc+2)); | ||
611 | memcpy(argp + 2, argv + 1, sizeof *argp * argc); | ||
602 | 612 | ||
603 | readstdin(); | 613 | readstdin(); |
604 | running = grabkeyboard(); | 614 | running = grabkeyboard(); |