1 /* Copyright (c) 1994 David Hogan, 2000 Benjamin Drieu, see README for licence details */ 2 3 #define BORDER _border 4 #define MAXHIDDEN 32 5 #define B3FIXED 5 6 #define NUMVIRTUALS 12 7 8 #define AllButtonMask (Button1Mask|Button2Mask|Button3Mask \ 9 |Button4Mask|Button5Mask) 10 #define ButtonMask (ButtonPressMask|ButtonReleaseMask) 11 #define MenuMask (ButtonMask|ButtonMotionMask|ExposureMask) 12 #define MenuGrabMask (ButtonMask|ButtonMotionMask|StructureNotifyMask) 13 14 #ifdef Plan9 15 #define DEFSHELL "/bin/rc" 16 #else 17 #define DEFSHELL "/bin/sh" 18 #endif 19 20 typedef struct Client Client; 21 typedef struct Menu Menu; 22 23 struct Client { 24 Window window; 25 Window parent; 26 Window trans; 27 Client *next; 28 Client *revert; 29 30 int x; 31 int y; 32 int dx; 33 int dy; 34 int border; 35 36 XSizeHints size; 37 int min_dx; 38 int min_dy; 39 40 int state; 41 int init; 42 int reparenting; 43 int is9term; 44 int hold; 45 int proto; 46 47 char *label; 48 char *instance; 49 char *class; 50 char *name; 51 char *iconname; 52 53 Colormap cmap; 54 int ncmapwins; 55 Window *cmapwins; 56 Colormap *wmcmaps; 57 58 /* benj: virtual screen */ 59 int virtual; 60 }; 61 62 #define hidden(c) ((c)->state == IconicState) 63 #define withdrawn(c) ((c)->state == WithdrawnState) 64 #define normal(c) ((c)->state == NormalState) 65 66 /* c->proto */ 67 #define Pdelete 1 68 #define Ptakefocus 2 69 70 struct Menu { 71 char **item; 72 char *(*gen)(); 73 int lasthit; 74 }; 75 76 /* 9wm.c */ 77 extern Display *dpy; 78 extern int screen; 79 extern Window root; 80 extern Window menuwin; 81 extern Colormap def_cmap; 82 extern int initting; 83 extern GC gc; 84 extern XFontStruct *font; 85 extern int nostalgia; 86 extern Atom exit_9wm; 87 extern Atom restart_9wm; 88 extern Atom wm_state; 89 extern Atom _9wm_hold_mode; 90 extern Atom wm_protocols; 91 extern Atom wm_delete; 92 extern Atom wm_take_focus; 93 extern Atom wm_colormaps; 94 extern unsigned long black; 95 extern unsigned long white; 96 extern Bool shape; 97 extern char *termprog; 98 extern char *shell; 99 extern char *version[]; 100 extern int _border; 101 extern int min_cmaps; 102 extern int curtime; 103 extern int debug; 104 extern int click_passes; 105 extern int use_keys; 106 /* client.c */ 107 extern Client *clients; 108 extern Client *current; 109 110 /* menu.c */ 111 extern Client *hiddenc[]; 112 extern int numhidden; 113 extern char *b3items[]; 114 extern Menu b3menu; 115 extern int virtual; 116 extern Client * currents[]; 117 extern Menu progs; 118 extern char * progsnames[]; 119 120 /* cursor.c */ 121 extern Cursor target; 122 extern Cursor sweep0; 123 extern Cursor boxcurs; 124 extern Cursor arrow; 125 extern Pixmap root_pixmap; 126 127 /* error.c */ 128 extern int ignore_badwindow; 129 130