Blob


1 /* Copyright (c) 1994-1996 David Hogan, see README for licence details */
3 #define BORDER _border
4 #define CORNER _corner
5 #define INSET _inset
6 #define MAXHIDDEN 128
7 #define B3FIXED 5
8 #define NUMVIRTUALS 12
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)
16 #ifdef Plan9
17 #define DEFSHELL "/bin/rc"
18 #else
19 #define DEFSHELL "/bin/sh"
20 #endif
22 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 1
71 #define Ptakefocus 2
72 #define Plosefocus 4
74 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;
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;