all repos — dwm @ 3af6434085aee75bd90e22aee95419dc0ae0b969

fork of suckless dynamic window manager

dwm.h (view raw)

  1/*
  2 * (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com>
  3 * See LICENSE file for license details.
  4 */
  5
  6#include <X11/Xlib.h>
  7#include CONFIG
  8
  9/* mask shorthands, used in event.c and client.c */
 10#define BUTTONMASK		(ButtonPressMask | ButtonReleaseMask)
 11#define MOUSEMASK		(BUTTONMASK | PointerMotionMask)
 12#define PROTODELWIN		1
 13
 14typedef union Arg Arg;
 15typedef struct Client Client;
 16typedef struct DC DC;
 17typedef struct Fnt Fnt;
 18
 19union Arg {
 20	const char **argv;
 21	int i;
 22};
 23
 24/* atoms */
 25enum { NetSupported, NetWMName, NetLast };
 26enum { WMProtocols, WMDelete, WMLast };
 27
 28/* cursor */
 29enum { CurNormal, CurResize, CurMove, CurLast };
 30
 31/* windowcorners */
 32typedef enum { TopLeft, TopRight, BotLeft, BotRight } Corner;
 33
 34struct Fnt {
 35	int ascent;
 36	int descent;
 37	int height;
 38	XFontSet set;
 39	XFontStruct *xfont;
 40};
 41
 42struct DC { /* draw context */
 43	int x, y, w, h;
 44	unsigned long bg;
 45	unsigned long fg;
 46	unsigned long border;
 47	Drawable drawable;
 48	Fnt font;
 49	GC gc;
 50};
 51
 52struct Client {
 53	char name[256];
 54	char *tags[TLast];
 55	int proto;
 56	int x, y, w, h;
 57	int tx, ty, tw, th; /* title */
 58	int basew, baseh, incw, inch, maxw, maxh, minw, minh;
 59	int grav;
 60	unsigned int border;
 61	long flags; 
 62	Bool isfloat;
 63	Bool ismax;
 64	Client *next;
 65	Client *prev;
 66	Window win;
 67	Window title;
 68};
 69
 70extern char *tags[TLast], stext[1024];
 71extern int tsel, screen, sx, sy, sw, sh, bx, by, bw, bh, mw;
 72extern void (*handler[LASTEvent])(XEvent *);
 73extern void (*arrange)(Arg *);
 74extern Atom wmatom[WMLast], netatom[NetLast];
 75extern Bool running, issel;
 76extern Client *clients, *sel;
 77extern Cursor cursor[CurLast];
 78extern DC dc;
 79extern Display *dpy;
 80extern Window root, barwin;
 81
 82/* client.c */
 83extern void ban(Client *c);
 84extern void focus(Client *c);
 85extern void focusnext(Arg *arg);
 86extern void focusprev(Arg *arg);
 87extern Client *getclient(Window w);
 88extern Client *getctitle(Window w);
 89extern void gravitate(Client *c, Bool invert);
 90extern void higher(Client *c);
 91extern void killclient(Arg *arg);
 92extern void lower(Client *c);
 93extern void manage(Window w, XWindowAttributes *wa);
 94extern void resize(Client *c, Bool sizehints, Corner sticky);
 95extern void setsize(Client *c);
 96extern void settitle(Client *c);
 97extern void togglemax(Arg *arg);
 98extern void unmanage(Client *c);
 99extern void zoom(Arg *arg);
100
101/* draw.c */
102extern void drawall();
103extern void drawstatus();
104extern void drawtitle(Client *c);
105extern unsigned long getcolor(const char *colstr);
106extern void setfont(const char *fontstr);
107extern unsigned int textw(char *text);
108
109/* event.c */
110extern void grabkeys();
111
112/* main.c */
113extern int getproto(Window w);
114extern void quit(Arg *arg);
115extern void sendevent(Window w, Atom a, long value);
116extern int xerror(Display *dsply, XErrorEvent *ee);
117
118/* tag.c */
119extern void appendtag(Arg *arg);
120extern void dofloat(Arg *arg);
121extern void dotile(Arg *arg);
122extern Client *getnext(Client *c);
123extern Client *getprev(Client *c);
124extern void replacetag(Arg *arg);
125extern void settags(Client *c);
126extern void togglemode(Arg *arg);
127extern void view(Arg *arg);
128extern void viewnext(Arg *arg);
129extern void viewprev(Arg *arg);
130
131/* util.c */
132extern void *emallocz(unsigned int size);
133extern void eprint(const char *errstr, ...);
134extern void spawn(Arg *arg);