all repos — dwm @ 4b0328f2097dedd70bbb36ea2b5159ac55b7cbcb

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 "config.h"
  7#include <X11/Xlib.h>
  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 *cmd;
 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	Drawable drawable;
 47	Fnt font;
 48	GC gc;
 49};
 50
 51struct Client {
 52	char name[256];
 53	int proto;
 54	int x, y, w, h;
 55	int tx, ty, tw, th; /* title */
 56	int basew, baseh, incw, inch, maxw, maxh, minw, minh;
 57	int grav;
 58	long flags; 
 59	unsigned int border;
 60	Bool isfloat;
 61	Bool ismax;
 62	Bool *tags;
 63	Client *next;
 64	Client *prev;
 65	Window win;
 66	Window title;
 67};
 68
 69extern const char *tags[];
 70extern char stext[1024];
 71extern int tsel, screen, sx, sy, sw, sh, bx, by, bw, bh, mw;
 72extern unsigned int ntags;
 73extern void (*handler[LASTEvent])(XEvent *);
 74extern void (*arrange)(Arg *);
 75extern Atom wmatom[WMLast], netatom[NetLast];
 76extern Bool running, issel;
 77extern Client *clients, *sel;
 78extern Cursor cursor[CurLast];
 79extern DC dc;
 80extern Display *dpy;
 81extern Window root, barwin;
 82
 83/* client.c */
 84extern void ban(Client *c);
 85extern void focus(Client *c);
 86extern void focusnext(Arg *arg);
 87extern void focusprev(Arg *arg);
 88extern Client *getclient(Window w);
 89extern Client *getctitle(Window w);
 90extern void gravitate(Client *c, Bool invert);
 91extern void higher(Client *c);
 92extern void killclient(Arg *arg);
 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(const 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 void initrregs();
123extern Client *getnext(Client *c);
124extern Client *getprev(Client *c);
125extern void replacetag(Arg *arg);
126extern void settags(Client *c);
127extern void togglemode(Arg *arg);
128extern void view(Arg *arg);
129extern void viewnext(Arg *arg);
130extern void viewprev(Arg *arg);
131
132/* util.c */
133extern void *emallocz(unsigned int size);
134extern void eprint(const char *errstr, ...);
135extern void spawn(Arg *arg);