dat.h (3559B)
1 /* Copyright (c) 1994-1996 David Hogan, see README for licence details */ 2 3 #define BORDER _border 4 #define CORNER _corner 5 #define INSET _inset 6 #define MAXHIDDEN 128 7 #define B3FIXED 5 8 #define NUMVIRTUALS 12 9 10 #define AllButtonMask (Button1Mask|Button2Mask|Button3Mask \ 11 |Button4Mask|Button5Mask) 12 #define ButtonMask (ButtonPressMask|ButtonReleaseMask) 13 #define MenuMask (ButtonMask|ButtonMotionMask|ExposureMask) 14 #define MenuGrabMask (ButtonMask|ButtonMotionMask|StructureNotifyMask) 15 16 #ifdef Plan9 17 #define DEFSHELL "/bin/rc" 18 #else 19 #define DEFSHELL "/bin/sh" 20 #endif 21 22 typedef struct Client Client; 23 typedef struct Menu Menu; 24 typedef struct ScreenInfo ScreenInfo; 25 26 struct Client { 27 Window window; 28 Window parent; 29 Window trans; 30 Client *next; 31 Client *revert; 32 33 int x; 34 int y; 35 int dx; 36 int dy; 37 int border; 38 39 XSizeHints size; 40 int min_dx; 41 int min_dy; 42 43 int state; 44 int init; 45 int reparenting; 46 int is9term; 47 int hold; 48 int proto; 49 int virt; 50 51 char *label; 52 char *instance; 53 char *class; 54 char *name; 55 char *iconname; 56 57 Colormap cmap; 58 int ncmapwins; 59 Window *cmapwins; 60 Colormap *wmcmaps; 61 ScreenInfo *screen; 62 }; 63 64 #define hidden(c) ((c)->state == IconicState) 65 #define withdrawn(c) ((c)->state == WithdrawnState) 66 #define normal(c) ((c)->state == NormalState) 67 68 /* c->proto */ 69 #define Pdelete 1 70 #define Ptakefocus 2 71 #define Plosefocus 4 72 73 struct Menu { 74 char **item; 75 char *(*gen)(); 76 int lasthit; 77 }; 78 79 enum BorderOrient { 80 BorderUnknown = 0, /* we depend on this!*/ 81 BorderN, 82 BorderNNE, 83 BorderENE, 84 BorderE, 85 BorderESE, 86 BorderSSE, 87 BorderS, 88 BorderSSW, 89 BorderWSW, 90 BorderW, 91 BorderWNW, 92 BorderNNW, 93 NBorder 94 }; 95 typedef enum BorderOrient BorderOrient; 96 97 struct ScreenInfo { 98 int num; 99 int depth; 100 Visual *vis; 101 int width; 102 int height; 103 Window root; 104 Window menuwin; 105 Window sweepwin; 106 Colormap def_cmap; 107 GC gc; 108 GC gccopy; 109 GC gcred; 110 GC gcsweep; 111 GC gcmenubg; 112 GC gcmenubgs; 113 GC gcmenufg; 114 GC gcmenufgs; 115 unsigned long black; 116 unsigned long white; 117 unsigned long activeholdborder; 118 unsigned long inactiveholdborder; 119 unsigned long activeborder; 120 unsigned long inactiveborder; 121 unsigned long red; 122 Pixmap bkup[2]; 123 int min_cmaps; 124 Cursor target; 125 Cursor sweep0; 126 Cursor boxcurs; 127 Cursor arrow; 128 Cursor bordcurs[NBorder]; 129 Pixmap root_pixmap; 130 char display[256]; /* arbitrary limit */ 131 }; 132 133 /* main.c */ 134 extern Display *dpy; 135 extern ScreenInfo *screens; 136 extern int num_screens; 137 extern int initting; 138 extern XFontStruct *font; 139 extern int nostalgia; 140 extern char **myargv; 141 extern Bool shape; 142 extern char *termprog; 143 extern char *shell; 144 extern char *version[]; 145 extern int _border; 146 extern int _corner; 147 extern int _inset; 148 extern int curtime; 149 extern int debug; 150 extern int solidsweep; 151 extern int numvirtuals; 152 extern int scrolling; 153 extern int ffm; /* focus follows mouse */ 154 155 extern Atom exit_rio; 156 extern Atom restart_rio; 157 extern Atom wm_state; 158 extern Atom wm_change_state; 159 extern Atom _rio_hold_mode; 160 extern Atom wm_protocols; 161 extern Atom wm_delete; 162 extern Atom wm_take_focus; 163 extern Atom wm_lose_focus; 164 extern Atom wm_colormaps; 165 extern Atom wm_state_fullscreen; 166 extern Atom wm_state; 167 /* client.c */ 168 extern Client *clients; 169 extern Client *current; 170 extern Client *currents[]; 171 172 /* menu.c */ 173 extern Client *hiddenc[]; 174 extern int numhidden; 175 extern char *b2items[]; 176 extern Menu b2menu; 177 extern char *b3items[]; 178 extern Menu b3menu; 179 extern int virt; 180 181 /* manage.c */ 182 extern int isNew; 183 184 /* error.c */ 185 extern int ignore_badwindow;