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;25 typedef enum BorderOrient BorderOrient;27 struct Client {28 Window window;29 Window parent;30 Window trans;31 Client *next;32 Client *revert;34 int x;35 int y;36 int dx;37 int dy;38 int border;40 XSizeHints size;41 int min_dx;42 int min_dy;44 int state;45 int init;46 int reparenting;47 int is9term;48 int hold;49 int proto;50 int virt;52 char *label;53 char *instance;54 char *class;55 char *name;56 char *iconname;58 Colormap cmap;59 int ncmapwins;60 Window *cmapwins;61 Colormap *wmcmaps;62 ScreenInfo *screen;63 };65 #define hidden(c) ((c)->state == IconicState)66 #define withdrawn(c) ((c)->state == WithdrawnState)67 #define normal(c) ((c)->state == NormalState)69 /* c->proto */70 #define Pdelete 171 #define Ptakefocus 272 #define Plosefocus 474 struct Menu {75 char **item;76 char *(*gen)();77 int lasthit;78 };80 enum BorderOrient {81 BorderUnknown = 0, /* we depend on this!*/82 BorderN,83 BorderNNE,84 BorderENE,85 BorderE,86 BorderESE,87 BorderSSE,88 BorderS,89 BorderSSW,90 BorderWSW,91 BorderW,92 BorderWNW,93 BorderNNW,94 NBorder,95 };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;154 extern Atom exit_rio;155 extern Atom restart_rio;156 extern Atom wm_state;157 extern Atom wm_change_state;158 extern Atom _rio_hold_mode;159 extern Atom wm_protocols;160 extern Atom wm_delete;161 extern Atom wm_take_focus;162 extern Atom wm_lose_focus;163 extern Atom wm_colormaps;165 /* client.c */166 extern Client *clients;167 extern Client *current;168 extern Client *currents[];170 /* menu.c */171 extern Client *hiddenc[];172 extern int numhidden;173 extern char *b2items[];174 extern Menu b2menu;175 extern char *b3items[];176 extern Menu b3menu;177 extern int virt;179 /* manage.c */180 extern int isNew;182 /* error.c */183 extern int ignore_badwindow;