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 | include config.mk | ||||||
| 
 | 
 | ||||||
| SRC += dwm.c | SRC = dwm.c | ||||||
| OBJ = ${SRC:.c=.o} | OBJ = ${SRC:.c=.o} | ||||||
| 
 | 
 | ||||||
| all: options dwm | all: options dwm | ||||||
| @ -35,7 +35,7 @@ clean: | |||||||
| dist: clean | dist: clean | ||||||
| 	@echo creating dist tarball | 	@echo creating dist tarball | ||||||
| 	@mkdir -p dwm-${VERSION} | 	@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} | 		dwm.1 ${SRC} dwm-${VERSION} | ||||||
| 	@tar -cf dwm-${VERSION}.tar dwm-${VERSION} | 	@tar -cf dwm-${VERSION}.tar dwm-${VERSION} | ||||||
| 	@gzip dwm-${VERSION}.tar | 	@gzip dwm-${VERSION}.tar | ||||||
|  | |||||||
							
								
								
									
										190
									
								
								dwm.c
									
									
									
									
									
								
							
							
						
						
									
										190
									
								
								dwm.c
									
									
									
									
									
								
							| @ -43,13 +43,199 @@ | |||||||
| #include <X11/Xproto.h> | #include <X11/Xproto.h> | ||||||
| #include <X11/Xutil.h> | #include <X11/Xutil.h> | ||||||
| 
 | 
 | ||||||
| #include "dwm.h" |  | ||||||
| 
 |  | ||||||
| /* macros */ | /* macros */ | ||||||
| #define BUTTONMASK		(ButtonPressMask | ButtonReleaseMask) | #define BUTTONMASK		(ButtonPressMask | ButtonReleaseMask) | ||||||
| #define CLEANMASK(mask)		(mask & ~(numlockmask | LockMask)) | #define CLEANMASK(mask)		(mask & ~(numlockmask | LockMask)) | ||||||
| #define MOUSEMASK		(BUTTONMASK | PointerMotionMask) | #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 | void | ||||||
| applyrules(Client *c) { | applyrules(Client *c) { | ||||||
| 	static char buf[512]; | 	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