removed config.h stuff, made dwm configurable due to command line options
[dmenu.git] / main.c
diff --git a/main.c b/main.c
index 170a3e0..27b28af 100644 (file)
--- 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);