- if(dc.font.set)
- XFreeFontSet(dpy, dc.font.set);
- else
- XFreeFont(dpy, dc.font.xfont);
- XFreePixmap(dpy, dc.drawable);
- XFreeGC(dpy, dc.gc);
- XDestroyWindow(dpy, win);
- XUngrabKeyboard(dpy, CurrentTime);
+ return XTextWidth(dc.font.xfont, text, len);
+}
+
+unsigned int
+textw(const char *text) {
+ return textnw(text, strlen(text)) + dc.font.height;
+}
+
+int
+main(int argc, char *argv[]) {
+ Bool bottom = False;
+ unsigned int i;
+
+ /* command line args */
+ for(i = 1; i < argc; i++)
+ if(!strcmp(argv[i], "-b")) {
+ bottom = True;
+ }
+ else if(!strcmp(argv[i], "-i"))
+ idomatch = True;
+ else if(!strcmp(argv[i], "-fn")) {
+ if(++i < argc) font = argv[i];
+ }
+ else if(!strcmp(argv[i], "-nb")) {
+ if(++i < argc) normbg = argv[i];
+ }
+ else if(!strcmp(argv[i], "-nf")) {
+ if(++i < argc) normfg = argv[i];
+ }
+ else if(!strcmp(argv[i], "-p")) {
+ if(++i < argc) prompt = argv[i];
+ }
+ else if(!strcmp(argv[i], "-sb")) {
+ if(++i < argc) selbg = argv[i];
+ }
+ else if(!strcmp(argv[i], "-sf")) {
+ if(++i < argc) selfg = argv[i];
+ }
+ else if(!strcmp(argv[i], "-v"))
+ eprint("dmenu-"VERSION", © 2006-2007 Anselm R. Garbe, Sander van Dijk, Michał Janeczek\n");
+ else
+ eprint("usage: dmenu [-b] [-i] [-fn <font>] [-nb <color>] [-nf <color>]\n"
+ " [-p <prompt>] [-sb <color>] [-sf <color>] [-v]\n");
+ setlocale(LC_CTYPE, "");
+ dpy = XOpenDisplay(0);
+ if(!dpy)
+ eprint("dmenu: cannot open display\n");
+ screen = DefaultScreen(dpy);
+ root = RootWindow(dpy, screen);
+
+ if(isatty(STDIN_FILENO)) {
+ readstdin();
+ running = grabkeyboard();
+ }
+ else { /* prevent keypress loss */
+ running = grabkeyboard();
+ readstdin();
+ }
+
+ setup(bottom);
+ drawmenu();
+ XSync(dpy, False);
+ run();
+ cleanup();