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(); |
