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 038e9089 2004-03-21 devnull
26 038e9089 2004-03-21 devnull struct Client {
27 038e9089 2004-03-21 devnull Window window;
28 038e9089 2004-03-21 devnull Window parent;
29 038e9089 2004-03-21 devnull Window trans;
30 038e9089 2004-03-21 devnull Client *next;
31 038e9089 2004-03-21 devnull Client *revert;
32 038e9089 2004-03-21 devnull
33 038e9089 2004-03-21 devnull int x;
34 038e9089 2004-03-21 devnull int y;
35 038e9089 2004-03-21 devnull int dx;
36 038e9089 2004-03-21 devnull int dy;
37 038e9089 2004-03-21 devnull int border;
38 038e9089 2004-03-21 devnull
39 038e9089 2004-03-21 devnull XSizeHints size;
40 038e9089 2004-03-21 devnull int min_dx;
41 038e9089 2004-03-21 devnull int min_dy;
42 038e9089 2004-03-21 devnull
43 038e9089 2004-03-21 devnull int state;
44 038e9089 2004-03-21 devnull int init;
45 038e9089 2004-03-21 devnull int reparenting;
46 038e9089 2004-03-21 devnull int is9term;
47 038e9089 2004-03-21 devnull int hold;
48 038e9089 2004-03-21 devnull int proto;
49 3ddda821 2004-12-28 devnull int virt;
50 038e9089 2004-03-21 devnull
51 038e9089 2004-03-21 devnull char *label;
52 038e9089 2004-03-21 devnull char *instance;
53 038e9089 2004-03-21 devnull char *class;
54 038e9089 2004-03-21 devnull char *name;
55 038e9089 2004-03-21 devnull char *iconname;
56 038e9089 2004-03-21 devnull
57 038e9089 2004-03-21 devnull Colormap cmap;
58 038e9089 2004-03-21 devnull int ncmapwins;
59 038e9089 2004-03-21 devnull Window *cmapwins;
60 038e9089 2004-03-21 devnull Colormap *wmcmaps;
61 038e9089 2004-03-21 devnull ScreenInfo *screen;
62 038e9089 2004-03-21 devnull };
63 038e9089 2004-03-21 devnull
64 038e9089 2004-03-21 devnull #define hidden(c) ((c)->state == IconicState)
65 038e9089 2004-03-21 devnull #define withdrawn(c) ((c)->state == WithdrawnState)
66 038e9089 2004-03-21 devnull #define normal(c) ((c)->state == NormalState)
67 038e9089 2004-03-21 devnull
68 038e9089 2004-03-21 devnull /* c->proto */
69 038e9089 2004-03-21 devnull #define Pdelete 1
70 038e9089 2004-03-21 devnull #define Ptakefocus 2
71 c005568a 2004-03-30 devnull #define Plosefocus 4
72 038e9089 2004-03-21 devnull
73 038e9089 2004-03-21 devnull struct Menu {
74 038e9089 2004-03-21 devnull char **item;
75 038e9089 2004-03-21 devnull char *(*gen)();
76 038e9089 2004-03-21 devnull int lasthit;
77 038e9089 2004-03-21 devnull };
78 038e9089 2004-03-21 devnull
79 c005568a 2004-03-30 devnull enum BorderOrient {
80 c005568a 2004-03-30 devnull BorderUnknown = 0, /* we depend on this!*/
81 1cb3fa80 2004-03-29 devnull BorderN,
82 c005568a 2004-03-30 devnull BorderNNE,
83 c005568a 2004-03-30 devnull BorderENE,
84 1cb3fa80 2004-03-29 devnull BorderE,
85 c005568a 2004-03-30 devnull BorderESE,
86 c005568a 2004-03-30 devnull BorderSSE,
87 1cb3fa80 2004-03-29 devnull BorderS,
88 c005568a 2004-03-30 devnull BorderSSW,
89 c005568a 2004-03-30 devnull BorderWSW,
90 1cb3fa80 2004-03-29 devnull BorderW,
91 c005568a 2004-03-30 devnull BorderWNW,
92 c005568a 2004-03-30 devnull BorderNNW,
93 cbeb0b26 2006-04-01 devnull NBorder
94 1cb3fa80 2004-03-29 devnull };
95 cbeb0b26 2006-04-01 devnull typedef enum BorderOrient BorderOrient;
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 71f6d60f 2008-07-09 rsc extern Atom wm_state_fullscreen;
166 71f6d60f 2008-07-09 rsc extern Atom wm_state;
167 038e9089 2004-03-21 devnull /* client.c */
168 038e9089 2004-03-21 devnull extern Client *clients;
169 038e9089 2004-03-21 devnull extern Client *current;
170 3ddda821 2004-12-28 devnull extern Client *currents[];
171 038e9089 2004-03-21 devnull
172 038e9089 2004-03-21 devnull /* menu.c */
173 038e9089 2004-03-21 devnull extern Client *hiddenc[];
174 038e9089 2004-03-21 devnull extern int numhidden;
175 3ddda821 2004-12-28 devnull extern char *b2items[];
176 3ddda821 2004-12-28 devnull extern Menu b2menu;
177 038e9089 2004-03-21 devnull extern char *b3items[];
178 038e9089 2004-03-21 devnull extern Menu b3menu;
179 3ddda821 2004-12-28 devnull extern int virt;
180 038e9089 2004-03-21 devnull
181 e62ba5ec 2004-03-21 devnull /* manage.c */
182 e62ba5ec 2004-03-21 devnull extern int isNew;
183 e62ba5ec 2004-03-21 devnull
184 038e9089 2004-03-21 devnull /* error.c */
185 038e9089 2004-03-21 devnull extern int ignore_badwindow;