* See LICENSE file for license details.
*/
-#include "config.h"
-#include "draw.h"
-#include "util.h"
+#include <X11/Xlib.h>
-#include <X11/Xutil.h>
+/********** CUSTOMIZE **********/
+#define FONT "-*-terminus-medium-*-*-*-13-*-*-*-*-*-iso10646-*"
+#define BGCOLOR "#666699"
+#define FGCOLOR "#ffffff"
+#define BORDERCOLOR "#9999CC"
+#define STATUSDELAY 10 /* seconds */
#define WM_PROTOCOL_DELWIN 1
+/* tags */
+enum { Tscratch, Tdev, Tirc, Twww, Twork, TLast };
+
+/********** CUSTOMIZE **********/
+
+typedef struct DC DC;
typedef struct Client Client;
+typedef struct Fnt Fnt;
typedef struct Key Key;
/* atoms */
/* cursor */
enum { CurNormal, CurResize, CurMove, CurInput, CurLast };
+struct Fnt {
+ XFontStruct *xfont;
+ XFontSet set;
+ int ascent;
+ int descent;
+ int height;
+};
+
+struct DC { /* draw context */
+ GC gc;
+ Drawable drawable;
+ int x, y, w, h;
+ Fnt font;
+ unsigned long bg;
+ unsigned long fg;
+ unsigned long border;
+};
+
struct Client {
- char name[256], tag[256];
+ char name[256];
+ char *tags[TLast];
int proto;
int x, y, w, h;
int tx, ty, tw, th;
};
extern Display *dpy;
-extern Window root, barwin;
+extern Window root;
extern Atom wm_atom[WMLast], net_atom[NetLast];
extern Cursor cursor[CurLast];
-extern Bool running, sel_screen, grid;
+extern Bool running, issel;
extern void (*handler[LASTEvent]) (XEvent *);
-extern int screen, sx, sy, sw, sh, bx, by, bw, bh;
-extern char statustext[1024], tag[256];
+extern int tsel, screen, sx, sy, sw, sh, th;
+extern char stext[1024], *tags[TLast];
-extern Brush brush;
+extern DC dc;
extern Client *clients, *stack;
-/* bar.c */
-extern void draw_bar();
-
/* client.c */
extern void manage(Window w, XWindowAttributes *wa);
extern void unmanage(Client *c);
extern void resize(Client *c);
extern void update_size(Client *c);
extern Client *gettitle(Window w);
-extern void raise(Client *c);
+extern void craise(Client *c);
extern void lower(Client *c);
-extern void kill(void *aux);
+extern void ckill(void *aux);
extern void sel(void *aux);
extern void max(void *aux);
-extern void arrange(void *aux);
+extern void toggle(void *aux);
extern void gravitate(Client *c, Bool invert);
+/* draw.c */
+extern void draw(Bool border, const char *text);
+extern void initcolors(const char *bg, const char *fg, const char *bo);
+extern void initfont(Fnt *font, const char *fontstr);
+extern unsigned int textnw(Fnt *font, char *text, unsigned int len);
+extern unsigned int textw(Fnt *font, char *text);
+extern unsigned int texth(Fnt *font);
+
/* event.c */
extern void discard_events(long even_mask);
-/* key.c */
-extern void update_keys();
+/* kb.c */
+extern void update_keys(void);
extern void keypress(XEvent *e);
/* mouse.c */
extern void mresize(Client *c);
extern void mmove(Client *c);
+/* util.c */
+extern void error(const char *errstr, ...);
+extern void *emallocz(unsigned int size);
+extern void *emalloc(unsigned int size);
+extern void *erealloc(void *ptr, unsigned int size);
+extern char *estrdup(const char *str);
+extern void spawn(char *argv[]);
+extern void swap(void **p1, void **p2);
+
/* wm.c */
-extern int error_handler(Display *dpy, XErrorEvent *error);
+extern int error_handler(Display *dsply, XErrorEvent *e);
extern void send_message(Window w, Atom a, long value);
extern int win_proto(Window w);
-extern void run(void *aux);
extern void quit(void *aux);