dmenu

my fork of dmenu
Index Commits Files Refs README LICENSE
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),