14 Commits
0.4 ... 0.5

Author SHA1 Message Date
Anselm R. Garbe
865c938856 prepared dmenu-0.5 2006-08-24 10:22:30 +02:00
Anselm R. Garbe
30d72e5f87 removed unnecessary Xlib call 2006-08-24 09:27:01 +02:00
Anselm R. Garbe
0ffd139f2c sanitizing my colorscheme 2006-08-23 19:05:20 +02:00
Anselm R. Garbe
86512ce930 back to terminus font 2006-08-23 18:55:48 +02:00
Anselm R. Garbe
d3206194c1 font fix 2006-08-22 10:01:45 +02:00
Anselm R. Garbe
8148b515a1 fixed 2006-08-22 09:49:56 +02:00
arg@localhost.10kloc.org
35210e3998 applied OpenBSD changes.. 2006-08-21 17:45:46 +02:00
Anselm R.Garbe
df85dd743c renamed bad_malloc into badmalloc as well 2006-08-21 07:34:16 +02:00
Anselm R.Garbe
d9f6fa426b small changes in dmenu.1 2006-08-21 07:31:33 +02:00
Anselm R.Garbe
bbb2cc2a72 fixed a typo in config.mk, fixed cleanup code in dmenu (now frees all allocated stuff) 2006-08-16 19:25:04 +02:00
Anselm R.Garbe
02ddc93c94 applied sanders patch 2006-08-16 12:37:01 +02:00
Anselm R.Garbe
0faf441367 applied sanders Makefile patch 2006-08-16 08:57:10 +02:00
Anselm R.Garbe
be6b534520 fixed the same issue in dmenu 2006-08-15 16:56:55 +02:00
Anselm R.Garbe
db76b0f9a5 Added tag 0.4 for changeset 7acf0dde1120542917bae12e0e42293f9d2cc899 2006-08-15 10:39:26 +02:00
9 changed files with 28 additions and 17 deletions

View File

@@ -1,3 +1,4 @@
fcc8a282cb52c6a9343b461026b386825590cd31 0.1 fcc8a282cb52c6a9343b461026b386825590cd31 0.1
656be0f47df545dfdd2e1e0663663b8b1b26f031 0.2 656be0f47df545dfdd2e1e0663663b8b1b26f031 0.2
d352e9dc112ee96aa5cad961a0ed880ae9ce7276 0.3 d352e9dc112ee96aa5cad961a0ed880ae9ce7276 0.3
7acf0dde1120542917bae12e0e42293f9d2cc899 0.4

View File

@@ -19,7 +19,7 @@ options:
@echo CC $< @echo CC $<
@${CC} -c ${CFLAGS} $< @${CC} -c ${CFLAGS} $<
${OBJ}: dmenu.h config.h ${OBJ}: dmenu.h config.h config.mk
config.h: config.h:
@echo creating $@ from config.default.h @echo creating $@ from config.default.h

3
README
View File

@@ -1,7 +1,6 @@
dmenu - dynamic menu dmenu - dynamic menu
-------------------- --------------------
dmenu is a generic, highly customizable, and efficient menu for the dmenu is a generic, highly customizable, and efficient menu for X.
X Window System.
Requirements Requirements

View File

@@ -4,6 +4,6 @@
*/ */
#define FONT "-*-terminus-medium-*-*-*-12-*-*-*-*-*-iso10646-*" #define FONT "-*-terminus-medium-*-*-*-12-*-*-*-*-*-iso10646-*"
#define BGCOLOR "#0d121d" #define BGCOLOR "#666699"
#define FGCOLOR "#eeeeee" #define FGCOLOR "#eeeeee"
#define BORDERCOLOR "#3f484d" #define BORDERCOLOR "#9999CC"

View File

@@ -1,5 +1,5 @@
# dmenu version # dmenu version
VERSION = 0.4 VERSION = 0.5
# Customize below to fit your system # Customize below to fit your system
@@ -11,7 +11,7 @@ X11INC = /usr/X11R6/include
X11LIB = /usr/X11R6/lib X11LIB = /usr/X11R6/lib
# includes and libs # includes and libs
INCS = -I/usr/lib -I${X11INC} INCS = -I. -I/usr/include -I${X11INC}
LIBS = -L/usr/lib -lc -L${X11LIB} -lX11 LIBS = -L/usr/lib -lc -L${X11LIB} -lX11
# flags # flags

View File

@@ -7,7 +7,7 @@ dmenu \- dynamic menu
.SH DESCRIPTION .SH DESCRIPTION
.SS Overview .SS Overview
.B dmenu .B dmenu
is a generic, highly customizable, and efficient menu for the X Window System, is a generic, highly customizable, and efficient menu for X,
originally designed for originally designed for
.BR dwm (1). .BR dwm (1).
It supports arbitrary, user defined menu contents. It supports arbitrary, user defined menu contents.

3
draw.c
View File

@@ -38,8 +38,6 @@ drawtext(const char *text, Bool invert, Bool border)
w = 0; w = 0;
if(border) { if(border) {
XSetLineAttributes(dpy, dc.gc, 1, LineSolid, CapButt, JoinMiter);
XSetForeground(dpy, dc.gc, dc.border);
points[0].x = dc.x; points[0].x = dc.x;
points[0].y = dc.y; points[0].y = dc.y;
points[1].x = dc.w - 1; points[1].x = dc.w - 1;
@@ -50,6 +48,7 @@ drawtext(const char *text, Bool invert, Bool border)
points[3].y = 0; points[3].y = 0;
points[4].x = 0; points[4].x = 0;
points[4].y = -(dc.h - 1); points[4].y = -(dc.h - 1);
XSetForeground(dpy, dc.gc, dc.border);
XDrawLines(dpy, dc.drawable, dc.gc, points, 5, CoordModePrevious); XDrawLines(dpy, dc.drawable, dc.gc, points, 5, CoordModePrevious);
} }

20
main.c
View File

@@ -29,7 +29,7 @@ static int mx, my, mw, mh;
static int ret = 0; static int ret = 0;
static int nitem = 0; static int nitem = 0;
static unsigned int cmdw = 0; static unsigned int cmdw = 0;
static Bool done = False; static Bool running = True;
static Item *allitems = NULL; /* first of all items */ static Item *allitems = NULL; /* first of all items */
static Item *item = NULL; /* first of pattern matching items */ static Item *item = NULL; /* first of pattern matching items */
static Item *sel = NULL; static Item *sel = NULL;
@@ -219,11 +219,11 @@ kpress(XKeyEvent * e)
else if(text) else if(text)
fprintf(stdout, "%s", text); fprintf(stdout, "%s", text);
fflush(stdout); fflush(stdout);
done = True; running = False;
break; break;
case XK_Escape: case XK_Escape:
ret = 1; ret = 1;
done = True; running = False;
break; break;
case XK_BackSpace: case XK_BackSpace:
if((i = len)) { if((i = len)) {
@@ -290,6 +290,7 @@ int
main(int argc, char *argv[]) main(int argc, char *argv[])
{ {
char *maxname; char *maxname;
Item *i;
XEvent ev; XEvent ev;
XSetWindowAttributes wa; XSetWindowAttributes wa;
@@ -336,6 +337,7 @@ main(int argc, char *argv[])
/* pixmap */ /* pixmap */
dc.drawable = XCreatePixmap(dpy, root, mw, mh, DefaultDepth(dpy, screen)); dc.drawable = XCreatePixmap(dpy, root, mw, mh, DefaultDepth(dpy, screen));
dc.gc = XCreateGC(dpy, root, 0, 0); dc.gc = XCreateGC(dpy, root, 0, 0);
XSetLineAttributes(dpy, dc.gc, 1, LineSolid, CapButt, JoinMiter);
if(maxname) if(maxname)
cmdw = textw(maxname); cmdw = textw(maxname);
@@ -349,7 +351,7 @@ main(int argc, char *argv[])
XSync(dpy, False); XSync(dpy, False);
/* main event loop */ /* main event loop */
while(!done && !XNextEvent(dpy, &ev)) { while(running && !XNextEvent(dpy, &ev)) {
switch (ev.type) { switch (ev.type) {
case KeyPress: case KeyPress:
kpress(&ev.xkey); kpress(&ev.xkey);
@@ -364,6 +366,16 @@ main(int argc, char *argv[])
} }
XUngrabKeyboard(dpy, CurrentTime); XUngrabKeyboard(dpy, CurrentTime);
while(allitems) {
i = allitems->next;
free(allitems->text);
free(allitems);
allitems = i;
}
if(dc.font.set)
XFreeFontSet(dpy, dc.font.set);
else
XFreeFont(dpy, dc.font.xfont);
XFreePixmap(dpy, dc.drawable); XFreePixmap(dpy, dc.drawable);
XFreeGC(dpy, dc.gc); XFreeGC(dpy, dc.gc);
XDestroyWindow(dpy, win); XDestroyWindow(dpy, win);

6
util.c
View File

@@ -13,7 +13,7 @@
/* static */ /* static */
static void static void
bad_malloc(unsigned int size) badmalloc(unsigned int size)
{ {
eprint("fatal: could not malloc() %u bytes\n", size); eprint("fatal: could not malloc() %u bytes\n", size);
} }
@@ -25,7 +25,7 @@ emalloc(unsigned int size)
{ {
void *res = malloc(size); void *res = malloc(size);
if(!res) if(!res)
bad_malloc(size); badmalloc(size);
return res; return res;
} }
@@ -45,6 +45,6 @@ estrdup(const char *str)
{ {
void *res = strdup(str); void *res = strdup(str);
if(!res) if(!res)
bad_malloc(strlen(str)); badmalloc(strlen(str));
return res; return res;
} }