diff -r a79e4a9cb167 dmenu.c --- a/dmenu.c Sat Nov 20 09:25:08 2010 +0000 +++ b/dmenu.c Fri Feb 18 04:24:31 2011 +0000 @@ -66,6 +68,7 @@ int main(int argc, char *argv[]) { int i; + Bool fastgrab = False; progname = "dmenu"; for(i = 1; i < argc; i++) @@ -78,6 +81,10 @@ topbar = False; else if(!strcmp(argv[i], "-i")) fstrncmp = strncasecmp; + else if(!strcmp(argv[i], "-f")) + fastgrab = True; else if(i == argc-1) usage(); /* double flags */ @@ -101,15 +108,61 @@ usage(); dc = initdc(); initfont(dc, font); + + if(fastgrab) + setup(); /* grab X _now_ */ + readstdin(); - setup(); + + if(!fastgrab) + setup(); + else + match(); /* need to re-match now we've read the input */ + run(); return EXIT_FAILURE; /* should not reach */ } @@ -536,7 +594,7 @@ void usage(void) { - fputs("usage: dmenu [-b] [-i] [-l lines] [-m monitor] [-p prompt] [-fn font]\n" + fputs("usage: dmenu [-b] [-i] [-q] [-l lines] [-m monitor] [-p prompt] [-fn font]\n" " [-nb color] [-nf color] [-sb color] [-sf color] [-v]\n", stderr); exit(EXIT_FAILURE); }