This commit is contained in:
Connor Lane Smith 2011-05-15 02:37:49 +01:00
parent 6cc0b0dc08
commit 1654d6cd62
4 changed files with 18 additions and 19 deletions

View file

@ -3,6 +3,9 @@
include config.mk include config.mk
SRC = dmenu.c draw.c
OBJ = ${SRC:.c=.o}
all: options dmenu all: options dmenu
options: options:
@ -11,22 +14,24 @@ options:
@echo "LDFLAGS = ${LDFLAGS}" @echo "LDFLAGS = ${LDFLAGS}"
@echo "CC = ${CC}" @echo "CC = ${CC}"
dmenu: dmenu.o draw.o .c.o:
@echo CC -o $@
@${CC} -o $@ dmenu.o draw.o ${LDFLAGS}
.c.o: config.mk
@echo CC -c $< @echo CC -c $<
@${CC} -c $< ${CFLAGS} @${CC} -c $< ${CFLAGS}
${OBJ}: config.mk
dmenu: ${OBJ}
@echo CC -o $@
@${CC} -o $@ ${OBJ} ${LDFLAGS}
clean: clean:
@echo cleaning @echo cleaning
@rm -f dmenu dmenu.o draw.o dmenu-${VERSION}.tar.gz @rm -f dmenu ${OBJ} dmenu-${VERSION}.tar.gz
dist: clean dist: clean
@echo creating dist tarball @echo creating dist tarball
@mkdir -p dmenu-${VERSION} @mkdir -p dmenu-${VERSION}
@cp LICENSE Makefile README config.mk dmenu.1 dmenu.c draw.c draw.h dmenu_path dmenu_run dmenu-${VERSION} @cp LICENSE Makefile README config.mk dmenu.1 draw.h dmenu_path dmenu_run ${SRC} dmenu-${VERSION}
@tar -cf dmenu-${VERSION}.tar dmenu-${VERSION} @tar -cf dmenu-${VERSION}.tar dmenu-${VERSION}
@gzip dmenu-${VERSION}.tar @gzip dmenu-${VERSION}.tar
@rm -rf dmenu-${VERSION} @rm -rf dmenu-${VERSION}

View file

@ -1,10 +1,6 @@
# dmenu version # dmenu version
VERSION = 4.3 VERSION = 4.3
# dmenu_path cache (absolute or relative to $HOME)
CACHE = .dmenu_cache
# paths # paths
PREFIX = /usr/local PREFIX = /usr/local
MANPREFIX = ${PREFIX}/share/man MANPREFIX = ${PREFIX}/share/man
@ -21,7 +17,7 @@ INCS = -I${X11INC}
LIBS = -L${X11LIB} -lX11 ${XINERAMALIBS} LIBS = -L${X11LIB} -lX11 ${XINERAMALIBS}
# flags # flags
CPPFLAGS = -D_BSD_SOURCE -DVERSION=\"${VERSION}\" -DCACHE=\"${CACHE}\" ${XINERAMAFLAGS} CPPFLAGS = -D_BSD_SOURCE -DVERSION=\"${VERSION}\" ${XINERAMAFLAGS}
CFLAGS = -std=c99 -pedantic -Wall -Os ${INCS} ${CPPFLAGS} CFLAGS = -std=c99 -pedantic -Wall -Os ${INCS} ${CPPFLAGS}
LDFLAGS = -s ${LIBS} LDFLAGS = -s ${LIBS}

View file

@ -31,9 +31,9 @@ dmenu \- dynamic menu
.B dmenu .B dmenu
is a dynamic menu for X, originally designed for is a dynamic menu for X, originally designed for
.BR dwm (1). .BR dwm (1).
It manages huge numbers of user-defined menu items efficiently. It manages huge numbers of user\-defined menu items efficiently.
.P .P
dmenu reads a list of newline-separated items from stdin and creates a menu. dmenu reads a list of newline\-separated items from stdin and creates a menu.
When the user selects an item or enters any text and presses Return, their When the user selects an item or enters any text and presses Return, their
choice is printed to stdout and dmenu terminates. choice is printed to stdout and dmenu terminates.
.P .P

8
draw.c
View file

@ -25,14 +25,13 @@ drawrect(DC *dc, int x, int y, unsigned int w, unsigned int h, Bool fill, unsign
(fill ? XFillRectangles : XDrawRectangles)(dc->dpy, dc->canvas, dc->gc, &r, 1); (fill ? XFillRectangles : XDrawRectangles)(dc->dpy, dc->canvas, dc->gc, &r, 1);
} }
void void
drawtext(DC *dc, const char *text, unsigned long col[ColLast]) { drawtext(DC *dc, const char *text, unsigned long col[ColLast]) {
char buf[256]; char buf[BUFSIZ];
size_t mn, n = strlen(text); size_t mn, n = strlen(text);
/* shorten text if necessary */ /* shorten text if necessary */
for(mn = MIN(n, sizeof buf); textnw(dc, text, mn) > dc->w - dc->font.height/2; mn--) for(mn = MIN(n, sizeof buf); textnw(dc, text, mn) + dc->font.height/2 > dc->w; mn--)
if(mn == 0) if(mn == 0)
return; return;
memcpy(buf, text, mn); memcpy(buf, text, mn);
@ -157,12 +156,11 @@ void
resizedc(DC *dc, unsigned int w, unsigned int h) { resizedc(DC *dc, unsigned int w, unsigned int h) {
if(dc->canvas) if(dc->canvas)
XFreePixmap(dc->dpy, dc->canvas); XFreePixmap(dc->dpy, dc->canvas);
dc->canvas = XCreatePixmap(dc->dpy, DefaultRootWindow(dc->dpy), w, h, dc->canvas = XCreatePixmap(dc->dpy, DefaultRootWindow(dc->dpy), w, h,
DefaultDepth(dc->dpy, DefaultScreen(dc->dpy))); DefaultDepth(dc->dpy, DefaultScreen(dc->dpy)));
dc->x = dc->y = 0;
dc->w = w; dc->w = w;
dc->h = h; dc->h = h;
dc->invert = False;
} }
int int