dwm

my fork of dwm
Index Commits Files Refs README LICENSE
commit cd7ebaad25fa5f10a4442f9d80a05f344ca271d3
parent 8dc03d6e6be7092f9f5595e03295efc2488f65b9
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:
MMakefile | 4++--
Mdwm.c | 190++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
Ddwm.h | 190-------------------------------------------------------------------------------
3 files changed, 190 insertions(+), 194 deletions(-)
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
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];
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};