JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
added several other stuff
[dwm.git] / wm.h
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 "draw.h"
8 #include "util.h"
9
10 #include <X11/Xutil.h>
11
12 /* atoms */
13 enum { WMState, WMProtocols, WMDelete, WMLast };
14 enum { NetSupported, NetWMName, NetLast };
15
16 /* cursor */
17 enum { CurNormal, CurResize, CurMove, CurInput, CurLast };
18
19 /* rects */
20 enum { RFloat, RGrid, RLast };
21
22 typedef struct Client Client;
23 typedef struct Tag Tag;
24
25 struct Client {
26         Tag *tag;
27         char name[256];
28         int proto;
29         unsigned int border;
30         Bool fixedsize;
31         Window win;
32         Window trans;
33         Window title;
34         XSizeHints size;
35         XRectangle r[RLast];
36         Client *next;
37         Client *snext;
38 };
39
40 struct Tag {
41         char name[256];
42         Client *stack;
43         XRectangle r;
44         Tag *next;
45         Tag *cnext;
46 };
47
48 extern Display *dpy;
49 extern Window root, barwin;
50 extern Atom wm_atom[WMLast], net_atom[NetLast];
51 extern Cursor cursor[CurLast];
52 extern XRectangle rect, barrect;
53 extern Bool running;
54 extern void (*handler[LASTEvent]) (XEvent *);
55
56 extern int screen, sel_screen;
57 extern unsigned int lock_mask, numlock_mask;
58 extern char *bartext, *shell;
59
60 extern Brush brush;
61
62 /* bar.c */
63 extern void draw_bar();
64
65 /* client.c */
66 extern Client *create_client(Window w, XWindowAttributes *wa);
67 extern void manage(Client *c);
68
69 /* wm.c */
70 extern int win_proto(Window w);