wm.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 "draw.h"
8#include "util.h"
9
10#include <X11/Xutil.h>
11
12#define WM_PROTOCOL_DELWIN 1
13
14typedef struct Client Client;
15typedef struct Key Key;
16
17/* atoms */
18enum { WMProtocols, WMDelete, WMLast };
19enum { NetSupported, NetWMName, NetLast };
20
21/* cursor */
22enum { CurNormal, CurResize, CurMove, CurInput, CurLast };
23
24/* rects */
25enum { RFloat, RGrid, RLast };
26
27struct Client {
28 char name[256];
29 char tag[256];
30 int proto;
31 Bool fixedsize;
32 Window win;
33 Window trans;
34 Window title;
35 XSizeHints size;
36 XRectangle r[RLast];
37 Client *next;
38 Client *snext;
39};
40
41struct Key {
42 unsigned long mod;
43 KeySym keysym;
44 void (*func)(void *aux);
45 void *aux;
46};
47
48extern Display *dpy;
49extern Window root, barwin;
50extern Atom wm_atom[WMLast], net_atom[NetLast];
51extern Cursor cursor[CurLast];
52extern XRectangle rect, barrect;
53extern Bool running, sel_screen, grid;
54extern void (*handler[LASTEvent]) (XEvent *);
55
56extern int screen;
57extern char statustext[1024], tag[256];
58
59extern Brush brush;
60extern Client *clients, *stack;
61
62/* bar.c */
63extern void draw_bar();
64
65/* cmd.c */
66extern void run(void *aux);
67extern void quit(void *aux);
68extern void kill(void *aux);
69
70/* client.c */
71extern void manage(Window w, XWindowAttributes *wa);
72extern void unmanage(Client *c);
73extern Client *getclient(Window w);
74extern void focus(Client *c);
75extern void update_name(Client *c);
76extern void draw_client(Client *c);
77extern void resize(Client *c);
78
79/* event.c */
80extern unsigned int discard_events(long even_mask);
81
82/* key.c */
83extern void update_keys();
84extern void keypress(XEvent *e);
85
86/* mouse.c */
87extern void mresize(Client *c);
88extern void mmove(Client *c);
89
90/* wm.c */
91extern int error_handler(Display *dpy, XErrorEvent *error);
92extern void send_message(Window w, Atom a, long value);
93extern int win_proto(Window w);