removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
This commit is contained in:
		
							parent
							
								
									8dc03d6e6b
								
							
						
					
					
						commit
						cd7ebaad25
					
				
							
								
								
									
										4
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								Makefile
									
									
									
									
									
								
							| @ -3,7 +3,7 @@ | ||||
| 
 | ||||
| include config.mk | ||||
| 
 | ||||
| SRC += dwm.c | ||||
| SRC = dwm.c | ||||
| OBJ = ${SRC:.c=.o} | ||||
| 
 | ||||
| all: options dwm | ||||
| @ -35,7 +35,7 @@ clean: | ||||
| dist: clean | ||||
| 	@echo creating dist tarball | ||||
| 	@mkdir -p dwm-${VERSION} | ||||
| 	@cp -R LICENSE Makefile README config.def.h config.mk dwm.h \
 | ||||
| 	@cp -R LICENSE Makefile README config.def.h config.mk \
 | ||||
| 		dwm.1 ${SRC} dwm-${VERSION} | ||||
| 	@tar -cf dwm-${VERSION}.tar dwm-${VERSION} | ||||
| 	@gzip dwm-${VERSION}.tar | ||||
|  | ||||
							
								
								
									
										190
									
								
								dwm.c
									
									
									
									
									
								
							
							
						
						
									
										190
									
								
								dwm.c
									
									
									
									
									
								
							| @ -43,13 +43,199 @@ | ||||
| #include <X11/Xproto.h> | ||||
| #include <X11/Xutil.h> | ||||
| 
 | ||||
| #include "dwm.h" | ||||
| 
 | ||||
| /* macros */ | ||||
| #define BUTTONMASK		(ButtonPressMask | ButtonReleaseMask) | ||||
| #define CLEANMASK(mask)		(mask & ~(numlockmask | LockMask)) | ||||
| #define MOUSEMASK		(BUTTONMASK | PointerMotionMask) | ||||
| 
 | ||||
| /* enums */ | ||||
| enum { BarTop, BarBot, BarOff };			/* bar position */ | ||||
| enum { CurNormal, CurResize, CurMove, CurLast };	/* cursor */ | ||||
| enum { ColBorder, ColFG, ColBG, ColLast };		/* color */ | ||||
| enum { NetSupported, NetWMName, NetLast };		/* EWMH atoms */ | ||||
| enum { WMProtocols, WMDelete, WMName, WMState, WMLast };/* default atoms */ | ||||
| 
 | ||||
| /* typedefs */ | ||||
| typedef struct Client Client; | ||||
| struct Client { | ||||
| 	char name[256]; | ||||
| 	int x, y, w, h; | ||||
| 	int rx, ry, rw, rh; /* revert geometry */ | ||||
| 	int basew, baseh, incw, inch, maxw, maxh, minw, minh; | ||||
| 	int minax, maxax, minay, maxay; | ||||
| 	long flags; | ||||
| 	unsigned int border, oldborder; | ||||
| 	Bool isbanned, isfixed, ismax, isfloating, wasfloating; | ||||
| 	Bool *tags; | ||||
| 	Client *next; | ||||
| 	Client *prev; | ||||
| 	Client *snext; | ||||
| 	Window win; | ||||
| }; | ||||
| 
 | ||||
| typedef struct { | ||||
| 	int x, y, w, h; | ||||
| 	unsigned long norm[ColLast]; | ||||
| 	unsigned long sel[ColLast]; | ||||
| 	Drawable drawable; | ||||
| 	GC gc; | ||||
| 	struct { | ||||
| 		int ascent; | ||||
| 		int descent; | ||||
| 		int height; | ||||
| 		XFontSet set; | ||||
| 		XFontStruct *xfont; | ||||
| 	} font; | ||||
| } DC; /* draw context */ | ||||
| 
 | ||||
| typedef struct { | ||||
| 	unsigned long mod; | ||||
| 	KeySym keysym; | ||||
| 	void (*func)(const char *arg); | ||||
| 	const char *arg; | ||||
| } Key; | ||||
| 
 | ||||
| typedef struct { | ||||
| 	const char *symbol; | ||||
| 	void (*arrange)(void); | ||||
| } Layout; | ||||
| 
 | ||||
| typedef struct { | ||||
| 	const char *prop; | ||||
| 	const char *tags; | ||||
| 	Bool isfloating; | ||||
| } Rule; | ||||
| 
 | ||||
| typedef struct { | ||||
| 	regex_t *propregex; | ||||
| 	regex_t *tagregex; | ||||
| } Regs; | ||||
| 
 | ||||
| /* functions */ | ||||
| void applyrules(Client *c); | ||||
| void arrange(void); | ||||
| void attach(Client *c); | ||||
| void attachstack(Client *c); | ||||
| void ban(Client *c); | ||||
| void buttonpress(XEvent *e); | ||||
| void checkotherwm(void); | ||||
| void cleanup(void); | ||||
| void compileregs(void); | ||||
| void configure(Client *c); | ||||
| void configurenotify(XEvent *e); | ||||
| void configurerequest(XEvent *e); | ||||
| void destroynotify(XEvent *e); | ||||
| void detach(Client *c); | ||||
| void detachstack(Client *c); | ||||
| void drawbar(void); | ||||
| void drawsquare(Bool filled, Bool empty, unsigned long col[ColLast]); | ||||
| void drawtext(const char *text, unsigned long col[ColLast]); | ||||
| void *emallocz(unsigned int size); | ||||
| void enternotify(XEvent *e); | ||||
| void eprint(const char *errstr, ...); | ||||
| void expose(XEvent *e); | ||||
| void floating(void); /* default floating layout */ | ||||
| void focus(Client *c); | ||||
| void focusnext(const char *arg); | ||||
| void focusprev(const char *arg); | ||||
| Client *getclient(Window w); | ||||
| unsigned long getcolor(const char *colstr); | ||||
| long getstate(Window w); | ||||
| Bool gettextprop(Window w, Atom atom, char *text, unsigned int size); | ||||
| void grabbuttons(Client *c, Bool focused); | ||||
| unsigned int idxoftag(const char *tag); | ||||
| void initfont(const char *fontstr); | ||||
| Bool isarrange(void (*func)()); | ||||
| Bool isoccupied(unsigned int t); | ||||
| Bool isprotodel(Client *c); | ||||
| Bool isvisible(Client *c); | ||||
| void keypress(XEvent *e); | ||||
| void killclient(const char *arg); | ||||
| void leavenotify(XEvent *e); | ||||
| void manage(Window w, XWindowAttributes *wa); | ||||
| void mappingnotify(XEvent *e); | ||||
| void maprequest(XEvent *e); | ||||
| void movemouse(Client *c); | ||||
| Client *nexttiled(Client *c); | ||||
| void propertynotify(XEvent *e); | ||||
| void quit(const char *arg); | ||||
| void resize(Client *c, int x, int y, int w, int h, Bool sizehints); | ||||
| void resizemouse(Client *c); | ||||
| void restack(void); | ||||
| void run(void); | ||||
| void scan(void); | ||||
| void setclientstate(Client *c, long state); | ||||
| void setlayout(const char *arg); | ||||
| void setmwfact(const char *arg); | ||||
| void setup(void); | ||||
| void spawn(const char *arg); | ||||
| void tag(const char *arg); | ||||
| unsigned int textnw(const char *text, unsigned int len); | ||||
| unsigned int textw(const char *text); | ||||
| void tile(void); | ||||
| void togglebar(const char *arg); | ||||
| void togglefloating(const char *arg); | ||||
| void togglemax(const char *arg); | ||||
| void toggletag(const char *arg); | ||||
| void toggleview(const char *arg); | ||||
| void unban(Client *c); | ||||
| void unmanage(Client *c); | ||||
| void unmapnotify(XEvent *e); | ||||
| void updatebarpos(void); | ||||
| void updatesizehints(Client *c); | ||||
| void updatetitle(Client *c); | ||||
| void view(const char *arg); | ||||
| void viewprevtag(const char *arg);	/* views previous selected tags */ | ||||
| int xerror(Display *dpy, XErrorEvent *ee); | ||||
| int xerrordummy(Display *dsply, XErrorEvent *ee); | ||||
| int xerrorstart(Display *dsply, XErrorEvent *ee); | ||||
| void zoom(const char *arg); | ||||
| 
 | ||||
| /* variables */ | ||||
| char stext[256]; | ||||
| double mwfact; | ||||
| int screen, sx, sy, sw, sh, wax, way, waw, wah; | ||||
| int (*xerrorxlib)(Display *, XErrorEvent *); | ||||
| unsigned int bh, bpos; | ||||
| unsigned int blw = 0; | ||||
| unsigned int ltidx = 0; /* default */ | ||||
| unsigned int nlayouts = 0; | ||||
| unsigned int nrules = 0; | ||||
| unsigned int numlockmask = 0; | ||||
| void (*handler[LASTEvent]) (XEvent *) = { | ||||
| 	[ButtonPress] = buttonpress, | ||||
| 	[ConfigureRequest] = configurerequest, | ||||
| 	[ConfigureNotify] = configurenotify, | ||||
| 	[DestroyNotify] = destroynotify, | ||||
| 	[EnterNotify] = enternotify, | ||||
| 	[LeaveNotify] = leavenotify, | ||||
| 	[Expose] = expose, | ||||
| 	[KeyPress] = keypress, | ||||
| 	[MappingNotify] = mappingnotify, | ||||
| 	[MapRequest] = maprequest, | ||||
| 	[PropertyNotify] = propertynotify, | ||||
| 	[UnmapNotify] = unmapnotify | ||||
| }; | ||||
| Atom wmatom[WMLast], netatom[NetLast]; | ||||
| Bool otherwm, readin; | ||||
| Bool running = True; | ||||
| Bool selscreen = True; | ||||
| Client *clients = NULL; | ||||
| Client *sel = NULL; | ||||
| Client *stack = NULL; | ||||
| Cursor cursor[CurLast]; | ||||
| Display *dpy; | ||||
| DC dc = {0}; | ||||
| Window barwin, root; | ||||
| Regs *regs = NULL; | ||||
| 
 | ||||
| /* configuration, allows nested code to access above variables */ | ||||
| #include "config.h" | ||||
| 
 | ||||
| /* statically define the number of tags. */ | ||||
| unsigned int ntags = sizeof tags / sizeof tags[0]; | ||||
| Bool seltags[sizeof tags / sizeof tags[0]] = {[0] = True}; | ||||
| Bool prevtags[sizeof tags / sizeof tags[0]] = {[0] = True}; | ||||
| void | ||||
| applyrules(Client *c) { | ||||
| 	static char buf[512]; | ||||
|  | ||||
							
								
								
									
										190
									
								
								dwm.h
									
									
									
									
									
								
							
							
						
						
									
										190
									
								
								dwm.h
									
									
									
									
									
								
							| @ -1,190 +0,0 @@ | ||||
| /* See LICENSE file for copyright and license details. */ | ||||
| 
 | ||||
| /* enums */ | ||||
| enum { BarTop, BarBot, BarOff };			/* bar position */ | ||||
| enum { CurNormal, CurResize, CurMove, CurLast };	/* cursor */ | ||||
| enum { ColBorder, ColFG, ColBG, ColLast };		/* color */ | ||||
| enum { NetSupported, NetWMName, NetLast };		/* EWMH atoms */ | ||||
| enum { WMProtocols, WMDelete, WMName, WMState, WMLast };/* default atoms */ | ||||
| 
 | ||||
| /* typedefs */ | ||||
| typedef struct Client Client; | ||||
| struct Client { | ||||
| 	char name[256]; | ||||
| 	int x, y, w, h; | ||||
| 	int rx, ry, rw, rh; /* revert geometry */ | ||||
| 	int basew, baseh, incw, inch, maxw, maxh, minw, minh; | ||||
| 	int minax, maxax, minay, maxay; | ||||
| 	long flags; | ||||
| 	unsigned int border, oldborder; | ||||
| 	Bool isbanned, isfixed, ismax, isfloating, wasfloating; | ||||
| 	Bool *tags; | ||||
| 	Client *next; | ||||
| 	Client *prev; | ||||
| 	Client *snext; | ||||
| 	Window win; | ||||
| }; | ||||
| 
 | ||||
| typedef struct { | ||||
| 	int x, y, w, h; | ||||
| 	unsigned long norm[ColLast]; | ||||
| 	unsigned long sel[ColLast]; | ||||
| 	Drawable drawable; | ||||
| 	GC gc; | ||||
| 	struct { | ||||
| 		int ascent; | ||||
| 		int descent; | ||||
| 		int height; | ||||
| 		XFontSet set; | ||||
| 		XFontStruct *xfont; | ||||
| 	} font; | ||||
| } DC; /* draw context */ | ||||
| 
 | ||||
| typedef struct { | ||||
| 	unsigned long mod; | ||||
| 	KeySym keysym; | ||||
| 	void (*func)(const char *arg); | ||||
| 	const char *arg; | ||||
| } Key; | ||||
| 
 | ||||
| typedef struct { | ||||
| 	const char *symbol; | ||||
| 	void (*arrange)(void); | ||||
| } Layout; | ||||
| 
 | ||||
| typedef struct { | ||||
| 	const char *prop; | ||||
| 	const char *tags; | ||||
| 	Bool isfloating; | ||||
| } Rule; | ||||
| 
 | ||||
| typedef struct { | ||||
| 	regex_t *propregex; | ||||
| 	regex_t *tagregex; | ||||
| } Regs; | ||||
| 
 | ||||
| /* functions */ | ||||
| void applyrules(Client *c); | ||||
| void arrange(void); | ||||
| void attach(Client *c); | ||||
| void attachstack(Client *c); | ||||
| void ban(Client *c); | ||||
| void buttonpress(XEvent *e); | ||||
| void checkotherwm(void); | ||||
| void cleanup(void); | ||||
| void compileregs(void); | ||||
| void configure(Client *c); | ||||
| void configurenotify(XEvent *e); | ||||
| void configurerequest(XEvent *e); | ||||
| void destroynotify(XEvent *e); | ||||
| void detach(Client *c); | ||||
| void detachstack(Client *c); | ||||
| void drawbar(void); | ||||
| void drawsquare(Bool filled, Bool empty, unsigned long col[ColLast]); | ||||
| void drawtext(const char *text, unsigned long col[ColLast]); | ||||
| void *emallocz(unsigned int size); | ||||
| void enternotify(XEvent *e); | ||||
| void eprint(const char *errstr, ...); | ||||
| void expose(XEvent *e); | ||||
| void floating(void); /* default floating layout */ | ||||
| void focus(Client *c); | ||||
| void focusnext(const char *arg); | ||||
| void focusprev(const char *arg); | ||||
| Client *getclient(Window w); | ||||
| unsigned long getcolor(const char *colstr); | ||||
| long getstate(Window w); | ||||
| Bool gettextprop(Window w, Atom atom, char *text, unsigned int size); | ||||
| void grabbuttons(Client *c, Bool focused); | ||||
| unsigned int idxoftag(const char *tag); | ||||
| void initfont(const char *fontstr); | ||||
| Bool isarrange(void (*func)()); | ||||
| Bool isoccupied(unsigned int t); | ||||
| Bool isprotodel(Client *c); | ||||
| Bool isvisible(Client *c); | ||||
| void keypress(XEvent *e); | ||||
| void killclient(const char *arg); | ||||
| void leavenotify(XEvent *e); | ||||
| void manage(Window w, XWindowAttributes *wa); | ||||
| void mappingnotify(XEvent *e); | ||||
| void maprequest(XEvent *e); | ||||
| void movemouse(Client *c); | ||||
| Client *nexttiled(Client *c); | ||||
| void propertynotify(XEvent *e); | ||||
| void quit(const char *arg); | ||||
| void resize(Client *c, int x, int y, int w, int h, Bool sizehints); | ||||
| void resizemouse(Client *c); | ||||
| void restack(void); | ||||
| void run(void); | ||||
| void scan(void); | ||||
| void setclientstate(Client *c, long state); | ||||
| void setlayout(const char *arg); | ||||
| void setmwfact(const char *arg); | ||||
| void setup(void); | ||||
| void spawn(const char *arg); | ||||
| void tag(const char *arg); | ||||
| unsigned int textnw(const char *text, unsigned int len); | ||||
| unsigned int textw(const char *text); | ||||
| void tile(void); | ||||
| void togglebar(const char *arg); | ||||
| void togglefloating(const char *arg); | ||||
| void togglemax(const char *arg); | ||||
| void toggletag(const char *arg); | ||||
| void toggleview(const char *arg); | ||||
| void unban(Client *c); | ||||
| void unmanage(Client *c); | ||||
| void unmapnotify(XEvent *e); | ||||
| void updatebarpos(void); | ||||
| void updatesizehints(Client *c); | ||||
| void updatetitle(Client *c); | ||||
| void view(const char *arg); | ||||
| void viewprevtag(const char *arg);	/* views previous selected tags */ | ||||
| int xerror(Display *dpy, XErrorEvent *ee); | ||||
| int xerrordummy(Display *dsply, XErrorEvent *ee); | ||||
| int xerrorstart(Display *dsply, XErrorEvent *ee); | ||||
| void zoom(const char *arg); | ||||
| 
 | ||||
| /* variables */ | ||||
| char stext[256]; | ||||
| double mwfact; | ||||
| int screen, sx, sy, sw, sh, wax, way, waw, wah; | ||||
| int (*xerrorxlib)(Display *, XErrorEvent *); | ||||
| unsigned int bh, bpos; | ||||
| unsigned int blw = 0; | ||||
| unsigned int ltidx = 0; /* default */ | ||||
| unsigned int nlayouts = 0; | ||||
| unsigned int nrules = 0; | ||||
| unsigned int numlockmask = 0; | ||||
| void (*handler[LASTEvent]) (XEvent *) = { | ||||
| 	[ButtonPress] = buttonpress, | ||||
| 	[ConfigureRequest] = configurerequest, | ||||
| 	[ConfigureNotify] = configurenotify, | ||||
| 	[DestroyNotify] = destroynotify, | ||||
| 	[EnterNotify] = enternotify, | ||||
| 	[LeaveNotify] = leavenotify, | ||||
| 	[Expose] = expose, | ||||
| 	[KeyPress] = keypress, | ||||
| 	[MappingNotify] = mappingnotify, | ||||
| 	[MapRequest] = maprequest, | ||||
| 	[PropertyNotify] = propertynotify, | ||||
| 	[UnmapNotify] = unmapnotify | ||||
| }; | ||||
| Atom wmatom[WMLast], netatom[NetLast]; | ||||
| Bool otherwm, readin; | ||||
| Bool running = True; | ||||
| Bool selscreen = True; | ||||
| Client *clients = NULL; | ||||
| Client *sel = NULL; | ||||
| Client *stack = NULL; | ||||
| Cursor cursor[CurLast]; | ||||
| Display *dpy; | ||||
| DC dc = {0}; | ||||
| Window barwin, root; | ||||
| Regs *regs = NULL; | ||||
| 
 | ||||
| /* configuration, allows nested code to access above variables */ | ||||
| #include "config.h" | ||||
| 
 | ||||
| /* statically define the number of tags. */ | ||||
| unsigned int ntags = sizeof tags / sizeof tags[0]; | ||||
| Bool seltags[sizeof tags / sizeof tags[0]] = {[0] = True}; | ||||
| Bool prevtags[sizeof tags / sizeof tags[0]] = {[0] = True}; | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 arg@suckless.org
						arg@suckless.org