Blame


1 038e9089 2004-03-21 devnull /* Copyright (c) 1994-1996 David Hogan, see README for licence details */
2 038e9089 2004-03-21 devnull
3 038e9089 2004-03-21 devnull #define BORDER _border
4 1cb3fa80 2004-03-29 devnull #define CORNER _corner
5 038e9089 2004-03-21 devnull #define INSET _inset
6 aa808685 2004-04-19 devnull #define MAXHIDDEN 128
7 038e9089 2004-03-21 devnull #define B3FIXED 5
8 3ddda821 2004-12-28 devnull #define NUMVIRTUALS 12
9 038e9089 2004-03-21 devnull
10 038e9089 2004-03-21 devnull #define AllButtonMask (Button1Mask|Button2Mask|Button3Mask \
11 038e9089 2004-03-21 devnull |Button4Mask|Button5Mask)
12 038e9089 2004-03-21 devnull #define ButtonMask (ButtonPressMask|ButtonReleaseMask)
13 038e9089 2004-03-21 devnull #define MenuMask (ButtonMask|ButtonMotionMask|ExposureMask)
14 038e9089 2004-03-21 devnull #define MenuGrabMask (ButtonMask|ButtonMotionMask|StructureNotifyMask)
15 038e9089 2004-03-21 devnull
16 038e9089 2004-03-21 devnull #ifdef Plan9
17 038e9089 2004-03-21 devnull #define DEFSHELL "/bin/rc"
18 038e9089 2004-03-21 devnull #else
19 038e9089 2004-03-21 devnull #define DEFSHELL "/bin/sh"
20 038e9089 2004-03-21 devnull #endif
21 038e9089 2004-03-21 devnull
22 038e9089 2004-03-21 devnull typedef struct Client Client;
23 038e9089 2004-03-21 devnull typedef struct Menu Menu;
24 038e9089 2004-03-21 devnull typedef struct ScreenInfo ScreenInfo;
25 c005568a 2004-03-30 devnull typedef enum BorderOrient BorderOrient;
26 038e9089 2004-03-21 devnull
27 038e9089 2004-03-21 devnull struct Client {
28 038e9089 2004-03-21 devnull Window window;
29 038e9089 2004-03-21 devnull Window parent;
30 038e9089 2004-03-21 devnull Window trans;
31 038e9089 2004-03-21 devnull Client *next;
32 038e9089 2004-03-21 devnull Client *revert;
33 038e9089 2004-03-21 devnull
34 038e9089 2004-03-21 devnull int x;
35 038e9089 2004-03-21 devnull int y;
36 038e9089 2004-03-21 devnull int dx;
37 038e9089 2004-03-21 devnull int dy;
38 038e9089 2004-03-21 devnull int border;
39 038e9089 2004-03-21 devnull
40 038e9089 2004-03-21 devnull XSizeHints size;
41 038e9089 2004-03-21 devnull int min_dx;
42 038e9089 2004-03-21 devnull int min_dy;
43 038e9089 2004-03-21 devnull
44 038e9089 2004-03-21 devnull int state;
45 038e9089 2004-03-21 devnull int init;
46 038e9089 2004-03-21 devnull int reparenting;
47 038e9089 2004-03-21 devnull int is9term;
48 038e9089 2004-03-21 devnull int hold;
49 038e9089 2004-03-21 devnull int proto;
50 3ddda821 2004-12-28 devnull int virt;
51 038e9089 2004-03-21 devnull
52 038e9089 2004-03-21 devnull char *label;
53 038e9089 2004-03-21 devnull char *instance;
54 038e9089 2004-03-21 devnull char *class;
55 038e9089 2004-03-21 devnull char *name;
56 038e9089 2004-03-21 devnull char *iconname;
57 038e9089 2004-03-21 devnull
58 038e9089 2004-03-21 devnull Colormap cmap;
59 038e9089 2004-03-21 devnull int ncmapwins;
60 038e9089 2004-03-21 devnull Window *cmapwins;
61 038e9089 2004-03-21 devnull Colormap *wmcmaps;
62 038e9089 2004-03-21 devnull ScreenInfo *screen;
63 038e9089 2004-03-21 devnull };
64 038e9089 2004-03-21 devnull
65 038e9089 2004-03-21 devnull #define hidden(c) ((c)->state == IconicState)
66 038e9089 2004-03-21 devnull #define withdrawn(c) ((c)->state == WithdrawnState)
67 038e9089 2004-03-21 devnull #define normal(c) ((c)->state == NormalState)
68 038e9089 2004-03-21 devnull
69 038e9089 2004-03-21 devnull /* c->proto */
70 038e9089 2004-03-21 devnull #define Pdelete 1
71 038e9089 2004-03-21 devnull #define Ptakefocus 2
72 c005568a 2004-03-30 devnull #define Plosefocus 4
73 038e9089 2004-03-21 devnull
74 038e9089 2004-03-21 devnull struct Menu {
75 038e9089 2004-03-21 devnull char **item;
76 038e9089 2004-03-21 devnull char *(*gen)();
77 038e9089 2004-03-21 devnull int lasthit;
78 038e9089 2004-03-21 devnull };
79 038e9089 2004-03-21 devnull
80 c005568a 2004-03-30 devnull enum BorderOrient {
81 c005568a 2004-03-30 devnull BorderUnknown = 0, /* we depend on this!*/
82 1cb3fa80 2004-03-29 devnull BorderN,
83 c005568a 2004-03-30 devnull BorderNNE,
84 c005568a 2004-03-30 devnull BorderENE,
85 1cb3fa80 2004-03-29 devnull BorderE,
86 c005568a 2004-03-30 devnull BorderESE,
87 c005568a 2004-03-30 devnull BorderSSE,
88 1cb3fa80 2004-03-29 devnull BorderS,
89 c005568a 2004-03-30 devnull BorderSSW,
90 c005568a 2004-03-30 devnull BorderWSW,
91 1cb3fa80 2004-03-29 devnull BorderW,
92 c005568a 2004-03-30 devnull BorderWNW,
93 c005568a 2004-03-30 devnull BorderNNW,
94 1cb3fa80 2004-03-29 devnull NBorder,
95 1cb3fa80 2004-03-29 devnull };
96 1cb3fa80 2004-03-29 devnull
97 038e9089 2004-03-21 devnull struct ScreenInfo {
98 038e9089 2004-03-21 devnull int num;
99 038e9089 2004-03-21 devnull int depth;
100 c005568a 2004-03-30 devnull Visual *vis;
101 038e9089 2004-03-21 devnull int width;
102 038e9089 2004-03-21 devnull int height;
103 038e9089 2004-03-21 devnull Window root;
104 038e9089 2004-03-21 devnull Window menuwin;
105 038e9089 2004-03-21 devnull Window sweepwin;
106 038e9089 2004-03-21 devnull Colormap def_cmap;
107 038e9089 2004-03-21 devnull GC gc;
108 038e9089 2004-03-21 devnull GC gccopy;
109 038e9089 2004-03-21 devnull GC gcred;
110 038e9089 2004-03-21 devnull GC gcsweep;
111 038e9089 2004-03-21 devnull GC gcmenubg;
112 038e9089 2004-03-21 devnull GC gcmenubgs;
113 038e9089 2004-03-21 devnull GC gcmenufg;
114 038e9089 2004-03-21 devnull GC gcmenufgs;
115 038e9089 2004-03-21 devnull unsigned long black;
116 038e9089 2004-03-21 devnull unsigned long white;
117 038e9089 2004-03-21 devnull unsigned long activeholdborder;
118 038e9089 2004-03-21 devnull unsigned long inactiveholdborder;
119 038e9089 2004-03-21 devnull unsigned long activeborder;
120 038e9089 2004-03-21 devnull unsigned long inactiveborder;
121 038e9089 2004-03-21 devnull unsigned long red;
122 038e9089 2004-03-21 devnull Pixmap bkup[2];
123 038e9089 2004-03-21 devnull int min_cmaps;
124 038e9089 2004-03-21 devnull Cursor target;
125 038e9089 2004-03-21 devnull Cursor sweep0;
126 038e9089 2004-03-21 devnull Cursor boxcurs;
127 038e9089 2004-03-21 devnull Cursor arrow;
128 1cb3fa80 2004-03-29 devnull Cursor bordcurs[NBorder];
129 038e9089 2004-03-21 devnull Pixmap root_pixmap;
130 038e9089 2004-03-21 devnull char display[256]; /* arbitrary limit */
131 038e9089 2004-03-21 devnull };
132 038e9089 2004-03-21 devnull
133 038e9089 2004-03-21 devnull /* main.c */
134 038e9089 2004-03-21 devnull extern Display *dpy;
135 038e9089 2004-03-21 devnull extern ScreenInfo *screens;
136 038e9089 2004-03-21 devnull extern int num_screens;
137 038e9089 2004-03-21 devnull extern int initting;
138 038e9089 2004-03-21 devnull extern XFontStruct *font;
139 038e9089 2004-03-21 devnull extern int nostalgia;
140 038e9089 2004-03-21 devnull extern char **myargv;
141 038e9089 2004-03-21 devnull extern Bool shape;
142 038e9089 2004-03-21 devnull extern char *termprog;
143 038e9089 2004-03-21 devnull extern char *shell;
144 038e9089 2004-03-21 devnull extern char *version[];
145 038e9089 2004-03-21 devnull extern int _border;
146 1cb3fa80 2004-03-29 devnull extern int _corner;
147 038e9089 2004-03-21 devnull extern int _inset;
148 038e9089 2004-03-21 devnull extern int curtime;
149 038e9089 2004-03-21 devnull extern int debug;
150 038e9089 2004-03-21 devnull extern int solidsweep;
151 3ddda821 2004-12-28 devnull extern int numvirtuals;
152 b253a743 2005-01-04 devnull extern int scrolling;
153 d52fb463 2005-08-11 devnull extern int ffm; /* focus follows mouse */
154 038e9089 2004-03-21 devnull
155 aa808685 2004-04-19 devnull extern Atom exit_rio;
156 aa808685 2004-04-19 devnull extern Atom restart_rio;
157 038e9089 2004-03-21 devnull extern Atom wm_state;
158 038e9089 2004-03-21 devnull extern Atom wm_change_state;
159 aa808685 2004-04-19 devnull extern Atom _rio_hold_mode;
160 038e9089 2004-03-21 devnull extern Atom wm_protocols;
161 038e9089 2004-03-21 devnull extern Atom wm_delete;
162 038e9089 2004-03-21 devnull extern Atom wm_take_focus;
163 c005568a 2004-03-30 devnull extern Atom wm_lose_focus;
164 038e9089 2004-03-21 devnull extern Atom wm_colormaps;
165 038e9089 2004-03-21 devnull
166 038e9089 2004-03-21 devnull /* client.c */
167 038e9089 2004-03-21 devnull extern Client *clients;
168 038e9089 2004-03-21 devnull extern Client *current;
169 3ddda821 2004-12-28 devnull extern Client *currents[];
170 038e9089 2004-03-21 devnull
171 038e9089 2004-03-21 devnull /* menu.c */
172 038e9089 2004-03-21 devnull extern Client *hiddenc[];
173 038e9089 2004-03-21 devnull extern int numhidden;
174 3ddda821 2004-12-28 devnull extern char *b2items[];
175 3ddda821 2004-12-28 devnull extern Menu b2menu;
176 038e9089 2004-03-21 devnull extern char *b3items[];
177 038e9089 2004-03-21 devnull extern Menu b3menu;
178 3ddda821 2004-12-28 devnull extern int virt;
179 038e9089 2004-03-21 devnull
180 e62ba5ec 2004-03-21 devnull /* manage.c */
181 e62ba5ec 2004-03-21 devnull extern int isNew;
182 e62ba5ec 2004-03-21 devnull
183 038e9089 2004-03-21 devnull /* error.c */
184 038e9089 2004-03-21 devnull extern int ignore_badwindow;