garbeam@0: /* garbeam@0: * (C)opyright MMVI Anselm R. Garbe garbeam@0: * See LICENSE file for license details. garbeam@0: */ garbeam@0: garbeam@3: #include "config.h" garbeam@2: #include "draw.h" garbeam@2: #include "util.h" garbeam@2: garbeam@0: #include garbeam@0: garbeam@5: /* atoms */ garbeam@0: enum { WMState, WMProtocols, WMDelete, WMLast }; garbeam@0: enum { NetSupported, NetWMName, NetLast }; garbeam@0: garbeam@5: /* cursor */ garbeam@0: enum { CurNormal, CurResize, CurMove, CurInput, CurLast }; garbeam@0: garbeam@5: /* rects */ garbeam@0: enum { RFloat, RGrid, RLast }; garbeam@0: garbeam@0: typedef struct Client Client; garbeam@0: typedef struct Tag Tag; garbeam@0: garbeam@0: struct Client { garbeam@0: Tag *tag; garbeam@0: char name[256]; garbeam@0: int proto; garbeam@5: unsigned int border; garbeam@5: Bool fixedsize; garbeam@0: Window win; garbeam@0: Window trans; garbeam@0: Window title; garbeam@0: XSizeHints size; garbeam@0: XRectangle r[RLast]; garbeam@0: Client *next; garbeam@5: Client *snext; garbeam@0: }; garbeam@0: garbeam@0: struct Tag { garbeam@0: char name[256]; garbeam@5: Client *stack; garbeam@0: XRectangle r; garbeam@5: Tag *next; garbeam@5: Tag *cnext; garbeam@0: }; garbeam@0: garbeam@0: extern Display *dpy; garbeam@5: extern Window root, barwin; garbeam@5: extern Atom wm_atom[WMLast], net_atom[NetLast]; garbeam@0: extern Cursor cursor[CurLast]; garbeam@5: extern XRectangle rect, barrect; garbeam@5: extern Bool running; garbeam@5: extern void (*handler[LASTEvent]) (XEvent *); garbeam@0: garbeam@3: extern int screen, sel_screen; garbeam@5: extern unsigned int lock_mask, numlock_mask; garbeam@5: extern char *bartext, *shell; garbeam@3: garbeam@3: extern Brush brush; garbeam@3: garbeam@5: /* bar.c */ garbeam@5: extern void draw_bar(); garbeam@5: garbeam@5: /* client.c */ garbeam@5: extern Client *create_client(Window w, XWindowAttributes *wa); garbeam@5: extern void manage(Client *c); garbeam@5: garbeam@0: /* wm.c */ garbeam@5: extern int win_proto(Window w);