diff options
-rw-r--r-- | config.mk | 5 | ||||
-rw-r--r-- | dmenu.1 | 4 | ||||
-rw-r--r-- | main.c | 16 |
3 files changed, 22 insertions, 3 deletions
@@ -20,6 +20,11 @@ LDFLAGS = ${LIBS} #CFLAGS = -g -Wall -O2 ${INCS} -DVERSION=\"${VERSION}\" #LDFLAGS = -g ${LIBS} +# Solaris +#CFLAGS = -fast ${INCS} -DVERSION=\"${VERSION}\" +#LDFLAGS = ${LIBS} +#CFLAGS += -xtarget=ultra + # compiler and linker CC = cc LD = ${CC} @@ -3,6 +3,7 @@ dmenu \- dynamic menu .SH SYNOPSIS .B dmenu +.RB [ \-bottom ] .RB [ \-font " <name>"] .RB [ \-normbg " <color>"] .RB [ \-normfg " <color>"] @@ -19,6 +20,9 @@ It manages huge amounts (up to 10.000 and more) of user defined menu items efficiently. .SS Options .TP +.B \-bottom +makes dmenu appear at the screen bottom (by default it appears at the screen top). +.TP .B \-font <name> defines the font. .TP @@ -330,6 +330,7 @@ DC dc = {0}; int main(int argc, char *argv[]) { + Bool bottom = False; char *font = FONT; char *maxname; char *normbg = NORMBGCOLOR; @@ -347,7 +348,10 @@ main(int argc, char *argv[]) { timeout.tv_sec = 3; /* command line args */ for(i = 1; i < argc; i++) - if(!strncmp(argv[i], "-font", 6)) { + if(!strncmp(argv[i], "-bottom", 8)) { + bottom = True; + } + else if(!strncmp(argv[i], "-font", 6)) { if(++i < argc) font = argv[i]; } else if(!strncmp(argv[i], "-normbg", 8)) { @@ -373,7 +377,8 @@ main(int argc, char *argv[]) { exit(EXIT_SUCCESS); } else - eprint("usage: dmenu [-font <name>] [-{norm,sel}{bg,fg} <color>] [-p <prompt>] [-t <seconds>] [-v]\n", stdout); + eprint("usage: dmenu [-bottom] [-font <name>] [-{norm,sel}{bg,fg} <color>]\n" + " [-p <prompt>] [-t <seconds>] [-v]\n", stdout); setlocale(LC_CTYPE, ""); dpy = XOpenDisplay(0); if(!dpy) @@ -406,7 +411,12 @@ main(int argc, char *argv[]) { wa.event_mask = ExposureMask | ButtonPressMask | KeyPressMask; mx = my = 0; mw = DisplayWidth(dpy, screen); - mh = dc.font.height + 2; + if(bottom) { + mh = dc.font.ascent + dc.font.descent + 3; // match wmii + my = DisplayHeight(dpy, screen) - mh; + } + else + mh = dc.font.height + 2; win = XCreateWindow(dpy, root, mx, my, mw, mh, 0, DefaultDepth(dpy, screen), CopyFromParent, DefaultVisual(dpy, screen), |