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;
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 1
70 #define Ptakefocus 2
71 #define Plosefocus 4
73 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 NBorder
94 };
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;
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[];
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;
181 /* manage.c */
182 extern int isNew;
184 /* error.c */
185 extern int ignore_badwindow;