commit 3438af001adcb1d8ff840f89ae7cb5ef8589bde6
parent 201b056e39267ab34ee777f7766457ef51a9da12
Author: arg@mig29 <unknown>
Date:   Mon, 18 Dec 2006 12:52:58 +0100

applied Stefan Tibus' sun patch, added -bottom option to dmenu which makes it appear in the bottom (for wmii compliance), slightly modified version than the patch proposed by Stefan Tibus
Diffstat:
Mconfig.mk | 5+++++
Mdmenu.1 | 4++++
Mmain.c | 16+++++++++++++---
3 files changed, 22 insertions(+), 3 deletions(-)

diff --git a/config.mk b/config.mk @@ -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} diff --git a/dmenu.1 b/dmenu.1 @@ -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 diff --git a/main.c b/main.c @@ -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),