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
24struct Client {
25 char name[256], tag[256];
26 int proto;
27 int x, y, w, h;
28 int tx, ty, tw, th;
29 int basew, baseh, incw, inch, maxw, maxh, minw, minh;
30 long flags;
31 Window win;
32 Window trans;
33 Window title;
34 Client *next;
35 Client *snext;
36};
37
38struct Key {
39 unsigned long mod;
40 KeySym keysym;
41 void (*func)(void *aux);
42 void *aux;
43};
44
45extern Display *dpy;
46extern Window root, barwin;
47extern Atom wm_atom[WMLast], net_atom[NetLast];
48extern Cursor cursor[CurLast];
49extern XRectangle rect, barrect;
50extern Bool running, sel_screen, grid;
51extern void (*handler[LASTEvent]) (XEvent *);
52
53extern int screen;
54extern char statustext[1024], tag[256];
55
56extern Brush brush;
57extern Client *clients, *stack;
58
59/* bar.c */
60extern void draw_bar();
61
62/* cmd.c */
63extern void run(void *aux);
64extern void quit(void *aux);
65extern void kill(void *aux);
66extern void sel(void *aux);
67
68/* client.c */
69extern void manage(Window w, XWindowAttributes *wa);
70extern void unmanage(Client *c);
71extern Client *getclient(Window w);
72extern void focus(Client *c);
73extern void update_name(Client *c);
74extern void draw_client(Client *c);
75extern void resize(Client *c);
76extern void update_size(Client *c);
77extern Client *gettitle(Window w);
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);