added new stuff
This commit is contained in:
		
							parent
							
								
									dbf7e03996
								
							
						
					
					
						commit
						8a34fa50f7
					
				
							
								
								
									
										12
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								Makefile
									
									
									
									
									
								
							| @ -3,8 +3,8 @@ | |||||||
| 
 | 
 | ||||||
| include config.mk | include config.mk | ||||||
| 
 | 
 | ||||||
| SRC = wm.c | WMSRC = wm.c draw.c util.c | ||||||
| OBJ = ${SRC:.c=.o} | WMOBJ = ${WMSRC:.c=.o} | ||||||
| MAN = gridwm.1 | MAN = gridwm.1 | ||||||
| BIN = gridwm gridmenu      | BIN = gridwm gridmenu      | ||||||
| 
 | 
 | ||||||
| @ -22,18 +22,18 @@ config: | |||||||
| 	@echo CC $< | 	@echo CC $< | ||||||
| 	@${CC} -c ${CFLAGS} $< | 	@${CC} -c ${CFLAGS} $< | ||||||
| 
 | 
 | ||||||
| ${OBJ}: wm.h | ${WMOBJ}: wm.h draw.h config.h | ||||||
| 
 | 
 | ||||||
| gridwm: ${OBJ} | gridwm: ${WMOBJ} | ||||||
| 	@echo LD $@ | 	@echo LD $@ | ||||||
| 	@${CC} -o $@ ${OBJ} ${X11LDFLAGS} | 	@${CC} -o $@ ${WMOBJ} ${LDFLAGS} | ||||||
| 
 | 
 | ||||||
| clean: | clean: | ||||||
| 	rm -f gridwm *.o | 	rm -f gridwm *.o | ||||||
| 
 | 
 | ||||||
| dist: clean | dist: clean | ||||||
| 	mkdir -p gridwm-${VERSION} | 	mkdir -p gridwm-${VERSION} | ||||||
| 	cp -R Makefile README LICENSE config.mk ${SRC} ${MAN} gridwm-${VERSION} | 	cp -R Makefile README LICENSE config.mk ${WMSRC} ${MAN} gridwm-${VERSION} | ||||||
| 	tar -cf gridwm-${VERSION}.tar gridwm-${VERSION} | 	tar -cf gridwm-${VERSION}.tar gridwm-${VERSION} | ||||||
| 	gzip gridwm-${VERSION}.tar | 	gzip gridwm-${VERSION}.tar | ||||||
| 	rm -rf gridwm-${VERSION} | 	rm -rf gridwm-${VERSION} | ||||||
|  | |||||||
							
								
								
									
										9
									
								
								config.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								config.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,9 @@ | |||||||
|  | /*
 | ||||||
|  |  * (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com> | ||||||
|  |  * See LICENSE file for license details. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #define FONT	"fixed" | ||||||
|  | #define FGCOLOR	"#000000" | ||||||
|  | #define BGCOLOR	"#ffaa00" | ||||||
|  | #define BOCOLOR	"#000000" | ||||||
| @ -11,14 +11,12 @@ X11LIB = /usr/X11R6/lib | |||||||
| VERSION = 0.0 | VERSION = 0.0 | ||||||
| 
 | 
 | ||||||
| # includes and libs
 | # includes and libs
 | ||||||
| LIBS = -L${PREFIX}/lib -L/usr/lib -lc | LIBS = -L${PREFIX}/lib -L/usr/lib -lc -L${X11LIB} -lX11 | ||||||
| X11LIBS = -L${X11LIB} -lX11 |  | ||||||
| 
 | 
 | ||||||
| # Linux/BSD
 | # Linux/BSD
 | ||||||
| CFLAGS = -g -Wall -I. -I${PREFIX}/include -I/usr/include -I${X11INC} \
 | CFLAGS = -g -Wall -I. -I${PREFIX}/include -I/usr/include -I${X11INC} \
 | ||||||
| 	-DVERSION=\"${VERSION}\" | 	-DVERSION=\"${VERSION}\" | ||||||
| LDFLAGS = -g ${LIBS} | LDFLAGS = -g ${LIBS} | ||||||
| X11LDFLAGS = ${LDFLAGS} ${X11LIBS} |  | ||||||
| 
 | 
 | ||||||
| # Solaris
 | # Solaris
 | ||||||
| #CFLAGS = -fast -xtarget=ultra ${INCLUDES} -DVERSION=\"${VERSION}\"
 | #CFLAGS = -fast -xtarget=ultra ${INCLUDES} -DVERSION=\"${VERSION}\"
 | ||||||
|  | |||||||
							
								
								
									
										163
									
								
								draw.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										163
									
								
								draw.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,163 @@ | |||||||
|  | /*
 | ||||||
|  |  * (C)opyright MMIV-MMVI Anselm R. Garbe <garbeam at gmail dot com> | ||||||
|  |  * See LICENSE file for license details. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #include <stdio.h> | ||||||
|  | #include <string.h> | ||||||
|  | 
 | ||||||
|  | #include "draw.h" | ||||||
|  | #include "util.h" | ||||||
|  | 
 | ||||||
|  | static void | ||||||
|  | drawborder(Display *dpy, Brush *b) | ||||||
|  | { | ||||||
|  | 	XPoint points[5]; | ||||||
|  | 	XSetLineAttributes(dpy, b->gc, 1, LineSolid, CapButt, JoinMiter); | ||||||
|  | 	XSetForeground(dpy, b->gc, b->color.border); | ||||||
|  | 	points[0].x = b->rect.x; | ||||||
|  | 	points[0].y = b->rect.y; | ||||||
|  | 	points[1].x = b->rect.width - 1; | ||||||
|  | 	points[1].y = 0; | ||||||
|  | 	points[2].x = 0; | ||||||
|  | 	points[2].y = b->rect.height - 1; | ||||||
|  | 	points[3].x = -(b->rect.width - 1); | ||||||
|  | 	points[3].y = 0; | ||||||
|  | 	points[4].x = 0; | ||||||
|  | 	points[4].y = -(b->rect.height - 1); | ||||||
|  | 	XDrawLines(dpy, b->drawable, b->gc, points, 5, CoordModePrevious); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void | ||||||
|  | draw(Display *dpy, Brush *b) | ||||||
|  | { | ||||||
|  | 	unsigned int x, y, w, h, len; | ||||||
|  | 	static char buf[256]; | ||||||
|  | 	XGCValues gcv; | ||||||
|  | 
 | ||||||
|  | 	XSetForeground(dpy, b->gc, b->color.bg); | ||||||
|  | 	XFillRectangles(dpy, b->drawable, b->gc, &b->rect, 1); | ||||||
|  | 
 | ||||||
|  | 	if(b->border) | ||||||
|  | 		drawborder(dpy, b); | ||||||
|  | 
 | ||||||
|  | 	if(!b->text) | ||||||
|  | 		return; | ||||||
|  | 
 | ||||||
|  | 	len = strlen(b->text); | ||||||
|  | 	if(len >= sizeof(buf)) | ||||||
|  | 		len = sizeof(buf) - 1; | ||||||
|  | 	memcpy(buf, b->text, len); | ||||||
|  | 	buf[len] = 0; | ||||||
|  | 
 | ||||||
|  | 	h = b->font->ascent + b->font->descent; | ||||||
|  | 	y = b->rect.y + (b->rect.height / 2) - (h / 2) + b->font->ascent; | ||||||
|  | 	x = b->rect.x + (h / 2); | ||||||
|  | 
 | ||||||
|  | 	/* shorten text if necessary */ | ||||||
|  | 	while(len && (w = textwidth_l(b->font, buf, len)) > b->rect.width - h) | ||||||
|  | 		buf[--len] = 0; | ||||||
|  | 
 | ||||||
|  | 	if(w > b->rect.width) | ||||||
|  | 		return; /* too long */ | ||||||
|  | 
 | ||||||
|  | 	gcv.foreground = b->color.fg; | ||||||
|  | 	gcv.background = b->color.bg; | ||||||
|  | 	if(b->font->set) { | ||||||
|  | 		XChangeGC(dpy, b->gc, GCForeground | GCBackground, &gcv); | ||||||
|  | 		XmbDrawImageString(dpy, b->drawable, b->font->set, b->gc, | ||||||
|  | 				x, y, buf, len); | ||||||
|  | 	} | ||||||
|  | 	else { | ||||||
|  | 		gcv.font = b->font->xfont->fid; | ||||||
|  | 		XChangeGC(dpy, b->gc, GCForeground | GCBackground | GCFont, &gcv); | ||||||
|  | 		XDrawImageString(dpy, b->drawable, b->gc, x, y, buf, len); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | static unsigned long | ||||||
|  | xloadcolor(Display *dpy, Colormap cmap, const char *colstr) | ||||||
|  | { | ||||||
|  | 	XColor color; | ||||||
|  | 	XAllocNamedColor(dpy, cmap, colstr, &color, &color); | ||||||
|  | 	return color.pixel; | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void | ||||||
|  | loadcolor(Display *dpy, int screen, Color *c, | ||||||
|  | 		const char *bg, const char *fg, const char *border) | ||||||
|  | { | ||||||
|  | 	Colormap cmap = DefaultColormap(dpy, screen); | ||||||
|  | 	c->bg = xloadcolor(dpy, cmap, bg); | ||||||
|  | 	c->fg = xloadcolor(dpy, cmap, fg); | ||||||
|  | 	c->border = xloadcolor(dpy, cmap, border); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | unsigned int | ||||||
|  | textwidth_l(Fnt *font, char *text, unsigned int len) | ||||||
|  | { | ||||||
|  | 	if(font->set) { | ||||||
|  | 		XRectangle r; | ||||||
|  | 		XmbTextExtents(font->set, text, len, 0, &r); | ||||||
|  | 		return r.width; | ||||||
|  | 	} | ||||||
|  | 	return XTextWidth(font->xfont, text, len); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | unsigned int | ||||||
|  | textwidth(Fnt *font, char *text) | ||||||
|  | { | ||||||
|  | 	return textwidth_l(font, text, strlen(text)); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void | ||||||
|  | loadfont(Display *dpy, Fnt *font, const char *fontstr) | ||||||
|  | { | ||||||
|  | 	char **missing, *def; | ||||||
|  | 	int n; | ||||||
|  | 
 | ||||||
|  | 	missing = 0; | ||||||
|  | 	def = "?"; | ||||||
|  | 	setlocale(LC_ALL, ""); | ||||||
|  | 	if(font->set) | ||||||
|  | 		XFreeFontSet(dpy, font->set); | ||||||
|  | 	font->set = XCreateFontSet(dpy, fontstr, &missing, &n, &def); | ||||||
|  | 	if(missing) { | ||||||
|  | 		while(n--) | ||||||
|  | 			fprintf(stderr, "missing fontset: %s\n", missing[n]); | ||||||
|  | 		XFreeStringList(missing); | ||||||
|  | 		if(font->set) { | ||||||
|  | 			XFreeFontSet(dpy, font->set); | ||||||
|  | 			font->set = 0; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	if(font->set) { | ||||||
|  | 		XFontSetExtents *font_extents; | ||||||
|  | 		XFontStruct **xfonts; | ||||||
|  | 		char **font_names; | ||||||
|  | 		unsigned int i; | ||||||
|  | 
 | ||||||
|  | 		font->ascent = font->descent = 0; | ||||||
|  | 		font_extents = XExtentsOfFontSet(font->set); | ||||||
|  | 		n = XFontsOfFontSet(font->set, &xfonts, &font_names); | ||||||
|  | 		for(i = 0, font->ascent = 0, font->descent = 0; i < n; i++) { | ||||||
|  | 			if(font->ascent < (*xfonts)->ascent) | ||||||
|  | 				font->ascent = (*xfonts)->ascent; | ||||||
|  | 			if(font->descent < (*xfonts)->descent) | ||||||
|  | 				font->descent = (*xfonts)->descent; | ||||||
|  | 			xfonts++; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	else { | ||||||
|  | 		if(font->xfont) | ||||||
|  | 			XFreeFont(dpy, font->xfont); | ||||||
|  | 		font->xfont = 0; | ||||||
|  | 		font->xfont = XLoadQueryFont(dpy, fontstr); | ||||||
|  | 		if (!font->xfont) | ||||||
|  | 			font->xfont = XLoadQueryFont(dpy, "fixed"); | ||||||
|  | 		if (!font->xfont) | ||||||
|  | 			error("error, cannot load 'fixed' font\n"); | ||||||
|  | 		font->ascent = font->xfont->ascent; | ||||||
|  | 		font->descent = font->xfont->descent; | ||||||
|  | 	} | ||||||
|  | } | ||||||
							
								
								
									
										6
									
								
								draw.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								draw.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,6 @@ | |||||||
|  | /*
 | ||||||
|  |  * (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com> | ||||||
|  |  * See LICENSE file for license details. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | extern void error(char *errstr, ...); | ||||||
							
								
								
									
										81
									
								
								font.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										81
									
								
								font.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,81 @@ | |||||||
|  | /*
 | ||||||
|  |  * (C)opyright MMIV-MMVI Anselm R. Garbe <garbeam at gmail dot com> | ||||||
|  |  * See LICENSE file for license details. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #include <stdio.h> | ||||||
|  | #include <stdlib.h> | ||||||
|  | #include <string.h> | ||||||
|  | #include <locale.h> | ||||||
|  | 
 | ||||||
|  | unsigned int | ||||||
|  | textwidth_l(BlitzFont *font, char *text, unsigned int len) | ||||||
|  | { | ||||||
|  | 	if(font->set) { | ||||||
|  | 		XRectangle r; | ||||||
|  | 		XmbTextExtents(font->set, text, len, nil, &r); | ||||||
|  | 		return r.width; | ||||||
|  | 	} | ||||||
|  | 	return XTextWidth(font->xfont, text, len); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | unsigned int | ||||||
|  | textwidth(BlitzFont *font, char *text) | ||||||
|  | { | ||||||
|  | 	return blitz_textwidth_l(font, text, strlen(text)); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void | ||||||
|  | loadfont(Blitz *blitz, BlitzFont *font) | ||||||
|  | { | ||||||
|  | 	char *fontname = font->fontstr; | ||||||
|  | 	char **missing = nil, *def = "?"; | ||||||
|  | 	int n; | ||||||
|  | 
 | ||||||
|  | 	setlocale(LC_ALL, ""); | ||||||
|  | 	if(font->set) | ||||||
|  | 		XFreeFontSet(blitz->dpy, font->set); | ||||||
|  | 	font->set = XCreateFontSet(blitz->dpy, fontname, &missing, &n, &def); | ||||||
|  | 	if(missing) { | ||||||
|  | 		while(n--) | ||||||
|  | 			fprintf(stderr, "liblitz: missing fontset: %s\n", missing[n]); | ||||||
|  | 		XFreeStringList(missing); | ||||||
|  | 		if(font->set) { | ||||||
|  | 			XFreeFontSet(blitz->dpy, font->set); | ||||||
|  | 			font->set = nil; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	if(font->set) { | ||||||
|  | 		XFontSetExtents *font_extents; | ||||||
|  | 		XFontStruct **xfonts; | ||||||
|  | 		char **font_names; | ||||||
|  | 		unsigned int i; | ||||||
|  | 
 | ||||||
|  | 		font->ascent = font->descent = 0; | ||||||
|  | 		font_extents = XExtentsOfFontSet(font->set); | ||||||
|  | 		n = XFontsOfFontSet(font->set, &xfonts, &font_names); | ||||||
|  | 		for(i = 0, font->ascent = 0, font->descent = 0; i < n; i++) { | ||||||
|  | 			if(font->ascent < (*xfonts)->ascent) | ||||||
|  | 				font->ascent = (*xfonts)->ascent; | ||||||
|  | 			if(font->descent < (*xfonts)->descent) | ||||||
|  | 				font->descent = (*xfonts)->descent; | ||||||
|  | 			xfonts++; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	else { | ||||||
|  | 		if(font->xfont) | ||||||
|  | 			XFreeFont(blitz->dpy, font->xfont); | ||||||
|  | 		font->xfont = nil; | ||||||
|  | 		font->xfont = XLoadQueryFont(blitz->dpy, fontname); | ||||||
|  | 		if (!font->xfont) { | ||||||
|  | 			fontname = "fixed"; | ||||||
|  | 			font->xfont = XLoadQueryFont(blitz->dpy, fontname); | ||||||
|  | 		} | ||||||
|  | 		if (!font->xfont) { | ||||||
|  | 			fprintf(stderr, "%s", "liblitz: error, cannot load 'fixed' font\n"); | ||||||
|  | 			exit(1); | ||||||
|  | 		} | ||||||
|  | 		font->ascent = font->xfont->ascent; | ||||||
|  | 		font->descent = font->xfont->descent; | ||||||
|  | 	} | ||||||
|  | } | ||||||
							
								
								
									
										16
									
								
								gridmenu.1
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								gridmenu.1
									
									
									
									
									
								
							| @ -64,21 +64,5 @@ returns | |||||||
| if Enter is pressed on termination, | if Enter is pressed on termination, | ||||||
| .B 1 | .B 1 | ||||||
| if Escape is pressed. | if Escape is pressed. | ||||||
| .SH ENVIRONMENT |  | ||||||
| .TP |  | ||||||
| GRID_FONT |  | ||||||
| The X11 font used to display each item in the menu. |  | ||||||
| .br |  | ||||||
| Default: fixed |  | ||||||
| .TP |  | ||||||
| GRID_NORMCOLORS |  | ||||||
| The foreground, background, and border colors of a label. Syntactically, three blank-separated color values of the form #RRGGBB are expected. |  | ||||||
| .br |  | ||||||
| Default: #222222 #eeeeee #666666 |  | ||||||
| .TP |  | ||||||
| GRID_SELCOLORS |  | ||||||
| Like GRID_NORMCOLORS, but for the selected label. |  | ||||||
| .br |  | ||||||
| Default: #ffffff #335577 #447799 |  | ||||||
| .SH SEE ALSO | .SH SEE ALSO | ||||||
| .BR gridwm (1) | .BR gridwm (1) | ||||||
|  | |||||||
							
								
								
									
										18
									
								
								util.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								util.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,18 @@ | |||||||
|  | /*
 | ||||||
|  |  * (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com> | ||||||
|  |  * See LICENSE file for license details. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #include <stdarg.h> | ||||||
|  | #include <stdio.h> | ||||||
|  | #include <stdlib.h> | ||||||
|  | 
 | ||||||
|  | void | ||||||
|  | error(char *errstr, ...) { | ||||||
|  | 	va_list ap; | ||||||
|  | 	va_start(ap, errstr); | ||||||
|  | 	vfprintf(stderr, errstr, ap); | ||||||
|  | 	va_end(ap); | ||||||
|  | 	exit(1); | ||||||
|  | } | ||||||
|  | 
 | ||||||
							
								
								
									
										41
									
								
								util.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										41
									
								
								util.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,41 @@ | |||||||
|  | /*
 | ||||||
|  |  * (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com> | ||||||
|  |  * See LICENSE file for license details. | ||||||
|  |  */ | ||||||
|  | 
 | ||||||
|  | #include <X11/Xlib.h> | ||||||
|  | #include <X11/Xlocale.h> | ||||||
|  | 
 | ||||||
|  | typedef struct Brush Brush; | ||||||
|  | typedef struct Color Color; | ||||||
|  | typedef struct Fnt Fnt; | ||||||
|  | 
 | ||||||
|  | struct Color { | ||||||
|  | 	unsigned long bg; | ||||||
|  | 	unsigned long fg; | ||||||
|  | 	unsigned long border; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct Fnt { | ||||||
|  | 	XFontStruct *xfont; | ||||||
|  | 	XFontSet set; | ||||||
|  | 	int ascent; | ||||||
|  | 	int descent; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | struct Brush { | ||||||
|  | 	GC gc; | ||||||
|  | 	Drawable drawable; | ||||||
|  | 	XRectangle rect; | ||||||
|  | 	Bool border; | ||||||
|  | 	Fnt *font; | ||||||
|  | 	Color color; | ||||||
|  | 	const char *text; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | extern void draw(Display *dpy, Brush *b); | ||||||
|  | extern void loadcolor(Display *dpy, int screen, Color *c, | ||||||
|  | 		const char *bg, const char *fg, const char *bo); | ||||||
|  | extern unsigned int textwidth_l(Fnt *font, char *text, unsigned int len); | ||||||
|  | extern unsigned int textwidth(Fnt *font, char *text); | ||||||
|  | extern void loadfont(Display *dpy, Fnt *font, const char *fontstr); | ||||||
							
								
								
									
										9
									
								
								wm.c
									
									
									
									
									
								
							
							
						
						
									
										9
									
								
								wm.c
									
									
									
									
									
								
							| @ -36,15 +36,6 @@ usage() | |||||||
| 	exit(1); | 	exit(1); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void |  | ||||||
| error(char *errstr, ...) { |  | ||||||
| 	va_list ap; |  | ||||||
| 	va_start(ap, errstr); |  | ||||||
| 	vfprintf(stderr, errstr, ap); |  | ||||||
| 	va_end(ap); |  | ||||||
| 	exit(1); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| static void | static void | ||||||
| scan_wins() | scan_wins() | ||||||
| { | { | ||||||
|  | |||||||
							
								
								
									
										5
									
								
								wm.h
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								wm.h
									
									
									
									
									
								
							| @ -3,7 +3,9 @@ | |||||||
|  * See LICENSE file for license details. |  * See LICENSE file for license details. | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| #include <X11/Xlib.h> | #include "draw.h" | ||||||
|  | #include "util.h" | ||||||
|  | 
 | ||||||
| #include <X11/Xutil.h> | #include <X11/Xutil.h> | ||||||
| 
 | 
 | ||||||
| /* WM atoms */ | /* WM atoms */ | ||||||
| @ -54,4 +56,3 @@ extern Cursor cursor[CurLast]; | |||||||
| extern Pixmap pmap; | extern Pixmap pmap; | ||||||
| 
 | 
 | ||||||
| /* wm.c */ | /* wm.c */ | ||||||
| extern void error(char *errstr, ...); |  | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Anselm R. Garbe
						Anselm R. Garbe