all repos — dwm @ 2e836ecce1ba0629a6088b739c1092d27fccd72b

fork of suckless dynamic window manager

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	int grav;
31	unsigned int border;
32	long flags; 
33	Window win;
34	Window trans;
35	Window title;
36	Client *next;
37	Client *snext;
38};
39
40struct Key {
41	unsigned long mod;
42	KeySym keysym;
43	void (*func)(void *aux);
44	void *aux;
45};
46
47extern Display *dpy;
48extern Window root, barwin;
49extern Atom wm_atom[WMLast], net_atom[NetLast];
50extern Cursor cursor[CurLast];
51extern Bool running, sel_screen, grid;
52extern void (*handler[LASTEvent]) (XEvent *);
53
54extern int screen, sx, sy, sw, sh, bx, by, bw, bh;
55extern char statustext[1024], tag[256];
56
57extern Brush brush;
58extern Client *clients, *stack;
59
60/* bar.c */
61extern void draw_bar();
62
63/* client.c */
64extern void manage(Window w, XWindowAttributes *wa);
65extern void unmanage(Client *c);
66extern Client *getclient(Window w);
67extern void focus(Client *c);
68extern void update_name(Client *c);
69extern void draw_client(Client *c);
70extern void resize(Client *c);
71extern void update_size(Client *c);
72extern Client *gettitle(Window w);
73extern void raise(Client *c);
74extern void lower(Client *c);
75extern void kill(void *aux);
76extern void sel(void *aux);
77extern void max(void *aux);
78extern void arrange(void *aux);
79extern void gravitate(Client *c, Bool invert);
80
81/* event.c */
82extern void discard_events(long even_mask);
83
84/* key.c */
85extern void update_keys();
86extern void keypress(XEvent *e);
87
88/* mouse.c */
89extern void mresize(Client *c);
90extern void mmove(Client *c);
91
92/* wm.c */
93extern int error_handler(Display *dpy, XErrorEvent *error);
94extern void send_message(Window w, Atom a, long value);
95extern int win_proto(Window w);
96extern void run(void *aux);
97extern void quit(void *aux);