/* Copyright (c) 1994-1996 David Hogan, see README for licence details */ #define MAXHIDDEN 32 #define B3FIXED 7 #define AllButtonMask (Button1Mask|Button2Mask|Button3Mask \ |Button4Mask|Button5Mask) #define ButtonMask (ButtonPressMask|ButtonReleaseMask) #define KeyMask (KeyPressMask|KeyReleaseMask) #define MenuMask (ButtonMask|PointerMotionMask|KeyMask|ExposureMask) #define MenuGrabMask (ButtonMask|PointerMotionMask|StructureNotifyMask) #ifdef Plan9 #define DEFSHELL "/bin/rc" #else #define DEFSHELL "/bin/sh" #endif typedef struct Client Client; typedef struct Menu Menu; typedef struct ScreenInfo ScreenInfo; struct Client { Window window; Window parent; Window trans; Client *next; Client *revert; int x; int y; int dx; int dy; int border; XSizeHints size; int min_dx; int min_dy; int state; int init; int reparenting; int is9term; int hold; int proto; char *label; char *instance; char *class; char *name; char *iconname; Colormap cmap; int ncmapwins; Window *cmapwins; Colormap *wmcmaps; ScreenInfo *screen; }; #define hidden(c) ((c)->state == IconicState) #define withdrawn(c) ((c)->state == WithdrawnState) #define normal(c) ((c)->state == NormalState) /* c->proto */ #define Pdelete 1 #define Ptakefocus 2 struct Menu { char **item; char *(*gen)(); int lasthit; }; struct ScreenInfo { int num; Window root; Window menuwin; Colormap def_cmap; GC gc; unsigned long black; unsigned long white; int min_cmaps; Cursor target; Cursor sweep0; Cursor boxcurs; Cursor arrow; char display[256]; /* arbitrary limit */ }; /* main.c */ extern Display *dpy; extern ScreenInfo *screens; extern int num_screens; extern int initting; extern XFontStruct *font; extern char **myargv; extern Bool shape; extern char *termprog; extern char *shell; extern char *version[]; extern int _inset; extern int curtime; extern int debug; extern Atom exit_9wm; extern Atom restart_9wm; extern Atom wm_state; extern Atom wm_change_state; extern Atom _9wm_hold_mode; extern Atom wm_protocols; extern Atom wm_delete; extern Atom wm_take_focus; extern Atom wm_colormaps; /* client.c */ extern Client *clients; extern Client *current; /* menu.c */ extern Client *hiddenc[]; extern int numhidden; extern char *b3items[]; extern Menu b3menu; /* error.c */ extern int ignore_badwindow;