|
|
@ -283,19 +283,41 @@ DC dc = {0}; |
|
|
|
|
|
|
|
|
|
|
|
int |
|
|
|
int |
|
|
|
main(int argc, char *argv[]) { |
|
|
|
main(int argc, char *argv[]) { |
|
|
|
|
|
|
|
char *font = FONT; |
|
|
|
char *maxname; |
|
|
|
char *maxname; |
|
|
|
|
|
|
|
char *normbg = NORMBGCOLOR; |
|
|
|
|
|
|
|
char *normfg = NORMFGCOLOR; |
|
|
|
|
|
|
|
char *selbg = SELBGCOLOR; |
|
|
|
|
|
|
|
char *selfg = SELFGCOLOR; |
|
|
|
fd_set rd; |
|
|
|
fd_set rd; |
|
|
|
|
|
|
|
int i; |
|
|
|
struct timeval timeout; |
|
|
|
struct timeval timeout; |
|
|
|
Item *i; |
|
|
|
Item *itm; |
|
|
|
XEvent ev; |
|
|
|
XEvent ev; |
|
|
|
XSetWindowAttributes wa; |
|
|
|
XSetWindowAttributes wa; |
|
|
|
|
|
|
|
|
|
|
|
if(argc == 2 && !strncmp("-v", argv[1], 3)) { |
|
|
|
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); |
|
|
|
fputs("dmenu-"VERSION", (C)opyright MMVI Anselm R. Garbe\n", stdout); |
|
|
|
exit(EXIT_SUCCESS); |
|
|
|
exit(EXIT_SUCCESS); |
|
|
|
} |
|
|
|
} |
|
|
|
else if(argc != 1) |
|
|
|
else |
|
|
|
eprint("usage: dmenu [-v]\n"); |
|
|
|
eprint("usage: dmenu [-font <name>] [-{norm,sel}{bg,fg} <color>] [-t <seconds>] [-v]\n", stdout); |
|
|
|
|
|
|
|
|
|
|
|
dpy = XOpenDisplay(0); |
|
|
|
dpy = XOpenDisplay(0); |
|
|
|
if(!dpy) |
|
|
|
if(!dpy) |
|
|
@ -312,8 +334,6 @@ main(int argc, char *argv[]) { |
|
|
|
GrabModeAsync, CurrentTime) != GrabSuccess) |
|
|
|
GrabModeAsync, CurrentTime) != GrabSuccess) |
|
|
|
usleep(1000); |
|
|
|
usleep(1000); |
|
|
|
|
|
|
|
|
|
|
|
timeout.tv_usec = 0; |
|
|
|
|
|
|
|
timeout.tv_sec = STDIN_TIMEOUT; |
|
|
|
|
|
|
|
FD_ZERO(&rd); |
|
|
|
FD_ZERO(&rd); |
|
|
|
FD_SET(STDIN_FILENO, &rd); |
|
|
|
FD_SET(STDIN_FILENO, &rd); |
|
|
|
if(select(ConnectionNumber(dpy) + 1, &rd, NULL, NULL, &timeout) < 1) |
|
|
|
if(select(ConnectionNumber(dpy) + 1, &rd, NULL, NULL, &timeout) < 1) |
|
|
@ -321,11 +341,11 @@ main(int argc, char *argv[]) { |
|
|
|
maxname = readstdin(); |
|
|
|
maxname = readstdin(); |
|
|
|
|
|
|
|
|
|
|
|
/* style */ |
|
|
|
/* style */ |
|
|
|
dc.sel[ColBG] = getcolor(SELBGCOLOR); |
|
|
|
dc.sel[ColBG] = getcolor(selbg); |
|
|
|
dc.sel[ColFG] = getcolor(SELFGCOLOR); |
|
|
|
dc.sel[ColFG] = getcolor(selfg); |
|
|
|
dc.norm[ColBG] = getcolor(NORMBGCOLOR); |
|
|
|
dc.norm[ColBG] = getcolor(normbg); |
|
|
|
dc.norm[ColFG] = getcolor(NORMFGCOLOR); |
|
|
|
dc.norm[ColFG] = getcolor(normfg); |
|
|
|
setfont(FONT); |
|
|
|
setfont(font); |
|
|
|
|
|
|
|
|
|
|
|
wa.override_redirect = 1; |
|
|
|
wa.override_redirect = 1; |
|
|
|
wa.background_pixmap = ParentRelative; |
|
|
|
wa.background_pixmap = ParentRelative; |
|
|
@ -373,10 +393,10 @@ main(int argc, char *argv[]) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
while(allitems) { |
|
|
|
while(allitems) { |
|
|
|
i = allitems->next; |
|
|
|
itm = allitems->next; |
|
|
|
free(allitems->text); |
|
|
|
free(allitems->text); |
|
|
|
free(allitems); |
|
|
|
free(allitems); |
|
|
|
allitems = i; |
|
|
|
allitems = itm; |
|
|
|
} |
|
|
|
} |
|
|
|
if(dc.font.set) |
|
|
|
if(dc.font.set) |
|
|
|
XFreeFontSet(dpy, dc.font.set); |
|
|
|
XFreeFontSet(dpy, dc.font.set); |
|
|
|