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