URI: 
       removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities - dwm - dynamic window manager
  HTML git clone https://git.parazyd.org/dwm
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit cd7ebaad25fa5f10a4442f9d80a05f344ca271d3
   DIR parent 8dc03d6e6be7092f9f5595e03295efc2488f65b9
  HTML Author: arg@suckless.org <unknown>
       Date:   Thu, 18 Oct 2007 10:28:41 +0200
       
       removed dwm.h, just include C-files in config.h if you extend dwm, that's simplier and most flexible than all other possibilities
       Diffstat:
         M Makefile                            |       4 ++--
         M dwm.c                               |     190 ++++++++++++++++++++++++++++++-
         D dwm.h                               |     190 ------------------------------
       
       3 files changed, 190 insertions(+), 194 deletions(-)
       ---
   DIR diff --git a/Makefile b/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
   DIR diff --git a/dwm.c b/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];
   DIR diff --git a/dwm.h b/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};