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 32
7 #define B3FIXED 5
9 #define AllButtonMask (Button1Mask|Button2Mask|Button3Mask \
10 |Button4Mask|Button5Mask)
11 #define ButtonMask (ButtonPressMask|ButtonReleaseMask)
12 #define MenuMask (ButtonMask|ButtonMotionMask|ExposureMask)
13 #define MenuGrabMask (ButtonMask|ButtonMotionMask|StructureNotifyMask)
15 #ifdef Plan9
16 #define DEFSHELL "/bin/rc"
17 #else
18 #define DEFSHELL "/bin/sh"
19 #endif
21 typedef struct Client Client;
22 typedef struct Menu Menu;
23 typedef struct ScreenInfo ScreenInfo;
24 typedef enum BorderOrient BorderOrient;
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;
50 char *label;
51 char *instance;
52 char *class;
53 char *name;
54 char *iconname;
56 Colormap cmap;
57 int ncmapwins;
58 Window *cmapwins;
59 Colormap *wmcmaps;
60 ScreenInfo *screen;
61 };
63 #define hidden(c) ((c)->state == IconicState)
64 #define withdrawn(c) ((c)->state == WithdrawnState)
65 #define normal(c) ((c)->state == NormalState)
67 /* c->proto */
68 #define Pdelete 1
69 #define Ptakefocus 2
70 #define Plosefocus 4
72 struct Menu {
73 char **item;
74 char *(*gen)();
75 int lasthit;
76 };
78 enum BorderOrient {
79 BorderUnknown = 0, /* we depend on this!*/
80 BorderN,
81 BorderNNE,
82 BorderENE,
83 BorderE,
84 BorderESE,
85 BorderSSE,
86 BorderS,
87 BorderSSW,
88 BorderWSW,
89 BorderW,
90 BorderWNW,
91 BorderNNW,
92 NBorder,
93 };
95 struct ScreenInfo {
96 int num;
97 int depth;
98 Visual *vis;
99 int width;
100 int height;
101 Window root;
102 Window menuwin;
103 Window sweepwin;
104 Colormap def_cmap;
105 GC gc;
106 GC gccopy;
107 GC gcred;
108 GC gcsweep;
109 GC gcmenubg;
110 GC gcmenubgs;
111 GC gcmenufg;
112 GC gcmenufgs;
113 unsigned long black;
114 unsigned long white;
115 unsigned long activeholdborder;
116 unsigned long inactiveholdborder;
117 unsigned long activeborder;
118 unsigned long inactiveborder;
119 unsigned long red;
120 Pixmap bkup[2];
121 int min_cmaps;
122 Cursor target;
123 Cursor sweep0;
124 Cursor boxcurs;
125 Cursor arrow;
126 Cursor bordcurs[NBorder];
127 Pixmap root_pixmap;
128 char display[256]; /* arbitrary limit */
129 };
131 /* main.c */
132 extern Display *dpy;
133 extern ScreenInfo *screens;
134 extern int num_screens;
135 extern int initting;
136 extern XFontStruct *font;
137 extern int nostalgia;
138 extern char **myargv;
139 extern Bool shape;
140 extern char *termprog;
141 extern char *shell;
142 extern char *version[];
143 extern int _border;
144 extern int _corner;
145 extern int _inset;
146 extern int curtime;
147 extern int debug;
148 extern int solidsweep;
150 extern Atom exit_9wm;
151 extern Atom restart_9wm;
152 extern Atom wm_state;
153 extern Atom wm_change_state;
154 extern Atom _9wm_hold_mode;
155 extern Atom wm_protocols;
156 extern Atom wm_delete;
157 extern Atom wm_take_focus;
158 extern Atom wm_lose_focus;
159 extern Atom wm_colormaps;
161 /* client.c */
162 extern Client *clients;
163 extern Client *current;
165 /* menu.c */
166 extern Client *hiddenc[];
167 extern int numhidden;
168 extern char *b3items[];
169 extern Menu b3menu;
171 /* manage.c */
172 extern int isNew;
174 /* error.c */
175 extern int ignore_badwindow;