Blob
1 /* Copyright (c) 1994-1996 David Hogan, see README for licence details */3 #define BORDER _border4 #define CORNER _corner5 #define INSET _inset6 #define MAXHIDDEN 1287 #define B3FIXED 58 #define NUMVIRTUALS 1210 #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)16 #ifdef Plan917 #define DEFSHELL "/bin/rc"18 #else19 #define DEFSHELL "/bin/sh"20 #endif22 typedef struct Client Client;23 typedef struct Menu Menu;24 typedef struct ScreenInfo ScreenInfo;26 struct Client {27 Window window;28 Window parent;29 Window trans;30 Client *next;31 Client *revert;33 int x;34 int y;35 int dx;36 int dy;37 int border;39 XSizeHints size;40 int min_dx;41 int min_dy;43 int state;44 int init;45 int reparenting;46 int is9term;47 int hold;48 int proto;49 int virt;51 char *label;52 char *instance;53 char *class;54 char *name;55 char *iconname;57 Colormap cmap;58 int ncmapwins;59 Window *cmapwins;60 Colormap *wmcmaps;61 ScreenInfo *screen;62 };64 #define hidden(c) ((c)->state == IconicState)65 #define withdrawn(c) ((c)->state == WithdrawnState)66 #define normal(c) ((c)->state == NormalState)68 /* c->proto */69 #define Pdelete 170 #define Ptakefocus 271 #define Plosefocus 473 struct Menu {74 char **item;75 char *(*gen)();76 int lasthit;77 };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 NBorder94 };95 typedef enum BorderOrient BorderOrient;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 };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 */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;166 /* client.c */167 extern Client *clients;168 extern Client *current;169 extern Client *currents[];171 /* menu.c */172 extern Client *hiddenc[];173 extern int numhidden;174 extern char *b2items[];175 extern Menu b2menu;176 extern char *b3items[];177 extern Menu b3menu;178 extern int virt;180 /* manage.c */181 extern int isNew;183 /* error.c */184 extern int ignore_badwindow;