all repos — dwm @ da2bbd371c522d63d737d43a127601a3fdbcb9d8

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];
 26	char *tags[TLast];
 27	int proto;
 28	int x, y, w, h;
 29	int tx, ty, tw, th;
 30	int basew, baseh, incw, inch, maxw, maxh, minw, minh;
 31	int grav;
 32	unsigned int border;
 33	long flags; 
 34	Window win;
 35	Window trans;
 36	Window title;
 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 Bool running, issel;
 53extern void (*handler[LASTEvent]) (XEvent *);
 54extern void (*arrange)(void *aux);
 55
 56extern int tsel, screen, sx, sy, sw, sh, bx, by, bw, bh;
 57extern char stext[1024], *tags[TLast];
 58
 59extern Brush brush;
 60extern Client *clients, *stack;
 61
 62/* bar.c */
 63extern void draw_bar();
 64
 65/* client.c */
 66extern void manage(Window w, XWindowAttributes *wa);
 67extern void unmanage(Client *c);
 68extern Client *getclient(Window w);
 69extern void focus(Client *c);
 70extern void update_name(Client *c);
 71extern void draw_client(Client *c);
 72extern void resize(Client *c);
 73extern void update_size(Client *c);
 74extern Client *gettitle(Window w);
 75extern void raise(Client *c);
 76extern void lower(Client *c);
 77extern void kill(void *aux);
 78extern void sel(void *aux);
 79extern void max(void *aux);
 80extern void floating(void *aux);
 81extern void grid(void *aux);
 82extern void gravitate(Client *c, Bool invert);
 83
 84/* event.c */
 85extern void discard_events(long even_mask);
 86
 87/* key.c */
 88extern void update_keys();
 89extern void keypress(XEvent *e);
 90
 91/* mouse.c */
 92extern void mresize(Client *c);
 93extern void mmove(Client *c);
 94
 95/* wm.c */
 96extern int error_handler(Display *dpy, XErrorEvent *error);
 97extern void send_message(Window w, Atom a, long value);
 98extern int win_proto(Window w);
 99extern void run(void *aux);
100extern void quit(void *aux);