~ctwm/ctwm/trunk

1 by Claude Lecommandeur
CTWM version 1.1
1
/*
554.1.6 by Matthew Fuller
Collapse away redundant license texts in most .h files. These are all
2
 * twm per-screen data include file
3
 *
4
 *
1 by Claude Lecommandeur
CTWM version 1.1
5
 * Copyright 1989 Massachusetts Institute of Technology
6
 *
7
 * $XConsortium: screen.h,v 1.62 91/05/01 17:33:09 keith Exp $
8
 *
304.1.2 by Matthew Fuller
Run 'make indent' to reindent the world.
9
 * 11-3-88 Dave Payne, Apple Computer                   File created
1 by Claude Lecommandeur
CTWM version 1.1
10
 *
554.1.6 by Matthew Fuller
Collapse away redundant license texts in most .h files. These are all
11
 * Copyright 1992 Claude Lecommandeur.
12
 */
1 by Claude Lecommandeur
CTWM version 1.1
13
484 by Matthew Fuller
Consistently rename all the include guards so they match the filename,
14
#ifndef _CTWM_SCREEN_H
15
#define _CTWM_SCREEN_H
1 by Claude Lecommandeur
CTWM version 1.1
16
600.1.34 by Matthew Fuller
Add some tweakery so the #ifdef's in the file get evaluated properly.
17
/* Needed for doxygen to get at the #define's for config (like EMWH) */
18
#ifdef DOXYGEN
19
# include "ctwm_config.h"
20
#endif
21
524.1.4 by Matthew Fuller
Mark up why menus.h needs to stay in screen.h, and remove direct
22
#include "menus.h"  // embedded MouseButton/Func{Button,Key}
524.1.2 by Matthew Fuller
Mark up why this include is pulled in.
23
#include "workspace_structs.h"  // embedded ScreenInfo.workSpaceMgr
1 by Claude Lecommandeur
CTWM version 1.1
24
600.1.38 by Matthew Fuller
Doc up IcStyle enum and a few #define's.
25
26
/**
27
 * Type for iconification styles.  Options correspond to the values in
28
 * IconifyStyle config var.  \sa ScreenInfo.IconifyStyle   \todo Maybe
29
 * should just be moved inline in ScreenInfo struct, since it's never
30
 * directly used elsewhere.
31
 */
497.1.4 by Matthew Fuller
enum-ify IconifyStyle. Move parsing the options into a helper
32
typedef enum {
33
	ICONIFY_NORMAL,
34
	ICONIFY_MOSAIC,
35
	ICONIFY_ZOOMIN,
36
	ICONIFY_ZOOMOUT,
37
	ICONIFY_FADE,
38
	ICONIFY_SWEEP,
39
} IcStyle;
21 by Richard Levitte
This constitutes all the changes Claude had done since version 3.6.
40
600.1.38 by Matthew Fuller
Doc up IcStyle enum and a few #define's.
41
600.1.13 by Matthew Fuller
doxygen-ify the next few substructures. I'm not doing a very good job
42
/**
43
 * Information about some XStandardColormap we're using.  See Xlib docs
44
 * for details.
45
 */
240.1.2 by Rhialto
3 - Selected a number of cleanups from Stefan Monnier
46
struct StdCmap {
304.1.2 by Matthew Fuller
Run 'make indent' to reindent the world.
47
	struct StdCmap *next;               /* next link in chain */
48
	Atom atom;                          /* property from which this came */
49
	int nmaps;                          /* number of maps below */
50
	XStandardColormap *maps;            /* the actual maps */
93 by Richard Levitte
- Convert all functions to use proper prototypes.
51
};
1 by Claude Lecommandeur
CTWM version 1.1
52
600.1.39 by Matthew Fuller
Whitespace
53
600.1.38 by Matthew Fuller
Doc up IcStyle enum and a few #define's.
54
/**
55
 * Internal padding in the size window.  \sa ScreenInfo.SizeWindow
56
 * \todo Possibly these should be in another header...
57
 */
1 by Claude Lecommandeur
CTWM version 1.1
58
#define SIZE_HINDENT 10
600.1.38 by Matthew Fuller
Doc up IcStyle enum and a few #define's.
59
#define SIZE_VINDENT 2  ///< \copydoc #SIZE_HINDENT
1 by Claude Lecommandeur
CTWM version 1.1
60
600.1.39 by Matthew Fuller
Whitespace
61
600.1.11 by Matthew Fuller
Doc the next chunk of fields.
62
/**
63
 * Stash for memoizing various pixmaps used in titlebars.
64
 * \sa the TBPM_* constants in image.h
65
 * \todo This probably doesn't need to live on its own, since it only
66
 * exists to define a member in the ScreenInfo struct.  Maybe it should
67
 * just be moved to being defined nested in there...
68
 */
240.1.2 by Rhialto
3 - Selected a number of cleanups from Stefan Monnier
69
struct TitlebarPixmaps {
600.1.11 by Matthew Fuller
Doc the next chunk of fields.
70
	Pixmap xlogo;    ///< #TBPM_XLOGO
71
	Pixmap resize;   ///< #TBPM_RESIZE
72
	Pixmap question; ///< #TBPM_QUESTION
73
	Pixmap menu;     ///< #TBPM_MENU
74
	Pixmap delete;   ///< #TBPM_DOT
93 by Richard Levitte
- Convert all functions to use proper prototypes.
75
};
1 by Claude Lecommandeur
CTWM version 1.1
76
600.1.1 by Matthew Fuller
Drop a heading comment on the ScreenInfo struct with a little doxygen
77
78
/**
79
 * Info and control for each X Screen we control.
80
 *
600.1.3 by Matthew Fuller
Slightly expand heading, and start documenting the elements in
81
 * We start up on an X Display (e.g., ":0"), and by default try to take
82
 * over each X Screen on that display (e.g, ":0.0", ":0.1", ...).  Each
83
 * of those Screens will have its own ScreenInfo.
84
 *
600.1.1 by Matthew Fuller
Drop a heading comment on the ScreenInfo struct with a little doxygen
85
 * This contains pure physical or X info (size, coordinates, color
86
 * depth), ctwm info (lists of windows on it, window rings, how it fits
87
 * with other Screens we control), most of the config file settings which
88
 * may differ from Screen to Screen, menus, special windows (Occupy,
89
 * Identify, etc), and piles of other stuff.
90
 *
91
 * \note
92
 * Possibly this should be broken up somewhat.  e.g., much of the
93
 * config-related bits pulled out into their own structure, which could
94
 * allow decoupling the config parsing from the X screens a bit.
95
 */
304.1.2 by Matthew Fuller
Run 'make indent' to reindent the world.
96
struct ScreenInfo {
600.1.3 by Matthew Fuller
Slightly expand heading, and start documenting the elements in
97
	int screen;       ///< Which screen (i.e., the x after the dot in ":0.x")
602.1.5 by Matthew Fuller
Our automatic indentation isn't going to let us get away with aligning
98
600.1.3 by Matthew Fuller
Slightly expand heading, and start documenting the elements in
99
	int d_depth;      ///< Copy of DefaultDepth(dpy, screen)
100
	Visual *d_visual; ///< Copy of DefaultVisual(dpy, screen)
101
	int Monochrome;   ///< Is the display monochrome?
102
103
	/**
600.1.40 by Matthew Fuller
Minor doc comment reorgs. Make most shorter and all trailing comments
104
	 * The x coordinate of the root window relative to RealRoot.  This is
105
	 * usually 0, except in the case of captive mode where it shows where
106
	 * we are on the real screen, or when we have VirtualScreens and are
107
	 * positioning our real Screens on a virtual RealRoot.
600.1.3 by Matthew Fuller
Slightly expand heading, and start documenting the elements in
108
	 */
109
	int rootx;
602.1.5 by Matthew Fuller
Our automatic indentation isn't going to let us get away with aligning
110
	/// The y coordinate of the root window relative to RealRoot.
111
	/// \copydetails rootx
112
	int rooty;
600.1.3 by Matthew Fuller
Slightly expand heading, and start documenting the elements in
113
114
	int rootw; ///< Copy of DisplayWidth(dpy, screen)
115
	int rooth; ///< Copy of DisplayHeight(dpy, screen)
116
644.2.23 by Matthew Fuller
Make m4_defs() work fine without a display connection. Several values
117
	int mm_w;  ///< Physical mm width of the root
118
	int mm_h;  ///< Physical mm height of the root
119
692.1.2 by Matthew Fuller
Wrap captive-related fields in command-line args and struct Screen in
120
#ifdef CAPTIVE
600.1.3 by Matthew Fuller
Slightly expand heading, and start documenting the elements in
121
	/**
122
	 * \defgroup scr_captive_bits Captive ctwm bits
123
	 * These are various fields related to running a captive ctwm (i.e.,
124
	 * with \--window).  They'll generally be empty for non-captive
125
	 * invocations, or describe our position inside the "outside" world
126
	 * if we are.
127
	 * @{
128
	 */
602.1.5 by Matthew Fuller
Our automatic indentation isn't going to let us get away with aligning
129
	/// The name of the captive root window if any.  Autogen'd or set
130
	/// with \--name
131
	char *captivename;
132
	/// The x coordinate of the captive root window if any.
133
	int crootx;
134
	/// The y coordinate of the captive root window if any.
135
	int crooty;
136
	/// Initially copy of DisplayWidth(dpy, screen).  See also
137
	/// ConfigureCaptiveRootWindow()
138
	int crootw;
139
	/// Initially copy of DisplayHeight(dpy, screen).
140
	/// \copydetails crootw
141
	int crooth;
600.1.3 by Matthew Fuller
Slightly expand heading, and start documenting the elements in
142
	/// @}
692.1.2 by Matthew Fuller
Wrap captive-related fields in command-line args and struct Screen in
143
#endif
304.1.2 by Matthew Fuller
Run 'make indent' to reindent the world.
144
600.1.4 by Matthew Fuller
Document a few more elements, including a group of the Root's.
145
	int MaxWindowWidth;   ///< Largest window width to allow
146
	int MaxWindowHeight;  ///< Largest window height to allow
147
600.1.40 by Matthew Fuller
Minor doc comment reorgs. Make most shorter and all trailing comments
148
	/// The head of the screen's twm window list.  This is used for
149
	/// places where we need to iterate over the TwmWindow's in a single
150
	/// Screen, by following the TwmWindow.next pointers.
600.1.4 by Matthew Fuller
Document a few more elements, including a group of the Root's.
151
	TwmWindow *FirstWindow;
152
153
	Colormaps RootColormaps;  ///< The colormaps of the root window
154
155
156
	/**
157
	 * \defgroup scr_roots Various root and pseudo-root Windows.
158
	 * These are the various forms of root and almost-root windows that
159
	 * things on this Screen reside in.  It's probable that there's a lot
160
	 * of confusion of these, and they get set, reset, and used
161
	 * incorrectly in a lot of places.  We mostly get away with it
162
	 * because in normal usage, they're often all identical.
163
	 *
164
	 * \verbatim
165
	 *
304.1.2 by Matthew Fuller
Run 'make indent' to reindent the world.
166
	 *  +--RealRoot-----------------------------------------------------------+
167
	 *  | the root of the display (most uses of this are probably incorrect!) |
168
	 *  |                                                                     |
169
	 *  |   +--CaptiveRoot--------------------------------------------------+ |
170
	 *  |   | when captive window is used (most uses are likely incorrect!) | |
171
	 *  |   |                                                               | |
172
	 *  |   | +--XineramaRoot---------------------------------------------+ | |
173
	 *  |   | | the root that encompasses all virtual screens             | | |
174
	 *  |   | |                                                           | | |
175
	 *  |   | | +--Root-----------+ +--Root--------+ +--Root------------+ | | |
176
	 *  |   | | | one or more     | | Most cases   | |                  | | | |
177
	 *  |   | | | virtual screens | | use Root.    | |                  | | | |
178
	 *  |   | | |                 | |              | |                  | | | |
179
	 *  |   | | |                 | |              | |                  | | | |
180
	 *  |   | | +-----------------+ +--------------+ +------------------+ | | |
181
	 *  |   | +-----------------------------------------------------------+ | |
182
	 *  |   +---------------------------------------------------------------+ |
183
	 *  +---------------------------------------------------------------------+
600.1.4 by Matthew Fuller
Document a few more elements, including a group of the Root's.
184
	 * \endverbatim
185
	 *
186
	 * @{
187
	 */
188
189
	/**
600.1.40 by Matthew Fuller
Minor doc comment reorgs. Make most shorter and all trailing comments
190
	 * Root window for the current vscreen.  Initially either the real X
191
	 * RootWindow(), or the existing or created Window for a captive
192
	 * ctwm.  Gets reset to a vscreen's window in InitVirtualScreens().
600.1.4 by Matthew Fuller
Document a few more elements, including a group of the Root's.
193
	 */
194
	Window Root;
195
196
	/**
197
	 * Root window holding our vscreens.  Initialized to the same value
600.1.6 by Matthew Fuller
Need to make this explicit for xref.
198
	 * as ScreenInfo.Root, and isn't changed afterward.
600.1.4 by Matthew Fuller
Document a few more elements, including a group of the Root's.
199
	 */
200
	Window XineramaRoot;
692.1.4 by Matthew Fuller
Catch one more captive bit with ifdef.
201
#ifdef CAPTIVE
602.1.5 by Matthew Fuller
Our automatic indentation isn't going to let us get away with aligning
202
	/// The captive root window, if any, or None
203
	Window CaptiveRoot;
692.1.4 by Matthew Fuller
Catch one more captive bit with ifdef.
204
#endif
602.1.5 by Matthew Fuller
Our automatic indentation isn't going to let us get away with aligning
205
	/// The actual X root window of the display.  This is always X's
206
	/// RootWindow().
207
	Window RealRoot;
600.1.4 by Matthew Fuller
Document a few more elements, including a group of the Root's.
208
	/// @}
209
614.1.130 by Matthew Fuller
Add docs for {Bordered,}Layout elements.
210
	/// Layout of our roow window and monitor(s).
614.1.1 by Maxime Soulé
First step of xrandr integration
211
	RLayout *Layout;
614.1.130 by Matthew Fuller
Add docs for {Bordered,}Layout elements.
212
	/// Layout taking into account Border{Top,Left,Right,Bottom} config
213
	/// params.
614.1.2 by Maxime Soulé
Menus are now clipped using layout
214
	RLayout *BorderedLayout;
304.1.2 by Matthew Fuller
Run 'make indent' to reindent the world.
215
600.1.5 by Matthew Fuller
Doc SizeWindow.
216
	/**
217
	 * Dimensions/coordinates window.  This is the small window (usually
218
	 * in the upper left of the screen, unless
219
	 * ScreenInfo.CenterFeedbackWindow is set) that shows
220
	 * dimensions/coordinates for resize/move operations.
221
	 */
222
	Window SizeWindow;
223
600.1.7 by Matthew Fuller
Doc the InfoWindow bit, along with some hackery to make doxygen happy
224
	/**
225
	 * Window info window.  This is the window that pops up with the
226
	 * various information when you f.identify a window, and also the
227
	 * truncated version of that that f.version pulls up.
228
	 */
229
	struct _InfoWindow {
230
		Window       win;          ///< Actual X window
231
		bool         mapped;       ///< Whether it's currently up
232
		int          lines;        ///< Current number of lines
233
		unsigned int width;        ///< Current size
234
		unsigned int height;       ///< Current size
235
	} InfoWindow; ///< \copydoc ScreenInfo::_InfoWindow
236
	/*
237
	 * Naming this struct type is pointless, but necessary for doxygen to
238
	 * not barf on it.  The copydoc is needed so the desc shows up in the
239
	 * ScreenInfo docs as well as the struct's own.
240
	 */
241
600.1.10 by Matthew Fuller
Turn these WindowMask related bits into a named gruop, so we can stuff
242
	/**
243
	 * \defgroup scr_maskwin Screen masking window stuff
244
	 * These are bits for a window that covers up everything on the
245
	 * screen during startup if we're showing the "Welcome window"
246
	 * splash screen.  That is, if ScreenInfo.ShowWelcomeWindow is true.
247
	 * @{
248
	 */
602.1.5 by Matthew Fuller
Our automatic indentation isn't going to let us get away with aligning
249
	/// Startup splash screen masking window if
250
	/// ScreenInfo.ShowWelcomeWindow
251
	Window WindowMask;
252
	/// Utility window for animated icons
253
	Window ShapeWindow;
254
	/// Image to show on ScreenInfo.WindowMask
255
	Image *WelcomeImage;
256
	/// GC for drawing ScreenInfo.WelcomeImage on ScreenInfo.WindowMask
257
	GC     WelcomeGC;
258
	/// Colormap for ScreenInfo.WindowMask
259
	Colormap WelcomeCmap;
600.1.10 by Matthew Fuller
Turn these WindowMask related bits into a named gruop, so we can stuff
260
	/// @}
304.1.2 by Matthew Fuller
Run 'make indent' to reindent the world.
261
600.1.11 by Matthew Fuller
Doc the next chunk of fields.
262
	name_list *ImageCache;  ///< Cached pixmaps used in image loading
263
	TitlebarPixmaps tbpm;   ///< Memoized titlebar pixmaps
264
	Image *UnknownImage;    ///< Fallback icon pixmap
265
	Pixmap siconifyPm;      ///< In-icon manager iconifed marker pixmap
266
	Pixmap pullPm;          ///< In-menu submenu item marker icon
267
	unsigned int pullW;     ///< Dimensions of ScreenInfo.pullPm
268
	unsigned int pullH;     ///< Dimensions of ScreenInfo.pullPm
269
270
	/**
271
	 * Name of titlebar focus hilite image if any.  This is an
272
	 * alternative to the builtin shading on the titlebar when a window
273
	 * has focus.  See Pixmaps config var.
274
	 */
275
	char *HighlightPixmapName;
276
600.1.40 by Matthew Fuller
Minor doc comment reorgs. Make most shorter and all trailing comments
277
	/// \defgroup scr_menu_bits Various menus
278
	/// These hold references to the various menus on the Screen.
279
	/// @{
600.1.11 by Matthew Fuller
Doc the next chunk of fields.
280
	MenuRoot *MenuList;    ///< Head of the menu list
281
	MenuRoot *LastMenu;    ///< Temp var used in creating the Screen's menus
282
	MenuRoot *Windows;     ///< f.menu TwmWindows
283
	MenuRoot *Icons;       ///< f.menu TwmIcons
284
	MenuRoot *Workspaces;  ///< f.menu TwmWorkspaces
285
	MenuRoot *AllWindows;  ///< f.menu TwmAllWindows
304.1.2 by Matthew Fuller
Run 'make indent' to reindent the world.
286
287
	/*Added by dl 2004 */
600.1.11 by Matthew Fuller
Doc the next chunk of fields.
288
	MenuRoot *AllIcons;    ///< f.menu TwmAllIcons
304.1.2 by Matthew Fuller
Run 'make indent' to reindent the world.
289
290
	/* Added by Dan Lilliehorn (dl@dl.nu) 2000-02-29)     */
600.1.11 by Matthew Fuller
Doc the next chunk of fields.
291
	MenuRoot *Keys;        ///< f.menu TwmKeys
292
	MenuRoot *Visible;     ///< f.menu TwmVisible
293
294
	/// @}
304.1.2 by Matthew Fuller
Run 'make indent' to reindent the world.
295
600.1.12 by Matthew Fuller
Some simple field docs.
296
	TwmWindow *Ring;       ///< One of the windows in the Screen's ring
297
	TwmWindow *RingLeader; ///< Current window in ring
304.1.2 by Matthew Fuller
Run 'make indent' to reindent the world.
298
600.1.12 by Matthew Fuller
Some simple field docs.
299
	MouseButton DefaultFunction;   ///< DefaultFunction config var
300
	MouseButton WindowFunction;    ///< WindowFunction config var
301
	MouseButton ChangeWorkspaceFunction; ///< ChangeWorkspaceFunction config var
302
	MouseButton DeIconifyFunction; ///< DeIconifyFunction config var
303
	MouseButton IconifyFunction;   ///< IconifyFunction config var
304.1.2 by Matthew Fuller
Run 'make indent' to reindent the world.
304
600.1.40 by Matthew Fuller
Minor doc comment reorgs. Make most shorter and all trailing comments
305
	/// Various colormaps used on the Screen.  These probably have little
306
	/// effect in a world where 24bpp is a baseline...
600.1.13 by Matthew Fuller
doxygen-ify the next few substructures. I'm not doing a very good job
307
	struct _cmapInfo {
308
		Colormaps *cmaps;  ///< Current list of colormap windows
309
		int maxCmaps;      ///< Maximum number of installed colormaps
602.1.5 by Matthew Fuller
Our automatic indentation isn't going to let us get away with aligning
310
		/// seq # for first XInstallColormap() req in pass thru loading a
311
		/// colortable list
312
		unsigned long first_req;
313
		/// current push level to install root colormap windows
314
		int root_pushes;
315
		/// saved colormaps to install when pushes drops to zero
316
		Colormaps *pushed_cmaps;
600.1.13 by Matthew Fuller
doxygen-ify the next few substructures. I'm not doing a very good job
317
	} cmapInfo; ///< \copydoc ScreenInfo::_cmapInfo
600.1.14 by Matthew Fuller
Actually, go ahead and add \todo's onto these, as they're more
318
	///< \todo Somebody needs to understand and document this better.
600.1.13 by Matthew Fuller
doxygen-ify the next few substructures. I'm not doing a very good job
319
	// x-ref trailing comment on InfoWindow above
320
321
	/**
322
	 * Various XStandardColormaps on the screen.  See Xlib documentation
323
	 * for XStandardColormaps (e.g.,
324
	 * <https://www.x.org/releases/X11R7.7/doc/libX11/libX11/libX11.html#Standard_Colormaps>)
325
	 * if you need to make sense of it.
326
	 */
327
	struct _StdCmapInfo {
328
		StdCmap *head;         ///< list of maps
329
		StdCmap *tail;         ///< list of maps
330
		StdCmap *mru;          ///< Most recently used in list
331
		int mruindex;          ///< index of mru in entry
332
	} StdCmapInfo; ///< \copydoc ScreenInfo::_StdCmapInfo
600.1.14 by Matthew Fuller
Actually, go ahead and add \todo's onto these, as they're more
333
	///< \todo Somebody needs to understand and document this better.
600.1.13 by Matthew Fuller
doxygen-ify the next few substructures. I'm not doing a very good job
334
	// x-ref trailing comment on InfoWindow above
335
336
	/**
337
	 * Various titlebar buttons that will be put in the window
338
	 * decorations for the screen.  This is setup by
339
	 * InitTitlebarButtons() and possibly added to via
340
	 * Left/RightTitleButton config vars.
341
	 * \sa CreateWindowTitlebarButtons() where this gets used to build
342
	 * the titlebar of an individual window.
343
	 */
344
	struct _TBInfo {
345
		int nleft;         ///< numbers of buttons on left side
346
		int nright;        ///< numbers of buttons on right side
347
		TitleButton *head; ///< start of list
348
		int border;        ///< button border
349
		int pad;           ///< button-padding
350
		int width;         ///< width of single button & border
351
		int leftx;         ///< start of left buttons
352
		int titlex;        ///< start of title
353
		int rightoff;      ///< offset back from right edge
354
		int titlew;        ///< width of title part
355
	} TBInfo; ///< \copydoc ScreenInfo::_TBInfo
356
	// x-ref trailing comment on InfoWindow above
357
600.1.15 by Matthew Fuller
Doxygen-ify the next few groups of config params.
358
	/**
359
	 * \defgroup scr_color_bits Various color definitions.
360
	 * These define various colors we use for things on the screen.
600.1.19 by Matthew Fuller
Add docs for the various name_list's of per-window specialized colors,
361
	 * They tend to come from things inside a Color {} section in the
362
	 * config.  There are often correspondences between the "simple"
363
	 * ColorPair or Pixel values (for the "normal" colors of each type)
364
	 * and a name_list (for per-window settings of that type).
600.1.15 by Matthew Fuller
Doxygen-ify the next few groups of config params.
365
	 * @{
366
	 */
600.1.19 by Matthew Fuller
Add docs for the various name_list's of per-window specialized colors,
367
	/// Border tile colors.  \sa ScreenInfo.BorderTileForegroundL
368
	/// \sa ScreenInfo.BorderTileBackgroundL
369
	ColorPair BorderTileC;
600.1.40 by Matthew Fuller
Minor doc comment reorgs. Make most shorter and all trailing comments
370
600.1.19 by Matthew Fuller
Add docs for the various name_list's of per-window specialized colors,
371
	/// Titlebar colors  \sa ScreenInfo.TitleForegroundL
372
	/// \sa ScreenInfo.TitleBackgroundL
373
	ColorPair TitleC;
600.1.40 by Matthew Fuller
Minor doc comment reorgs. Make most shorter and all trailing comments
374
375
	/// Menu colors
376
	ColorPair MenuC;
377
378
	/// Menu title colors
379
	ColorPair MenuTitleC;
380
600.1.19 by Matthew Fuller
Add docs for the various name_list's of per-window specialized colors,
381
	/// %Icon colors.  \sa ScreenInfo.IconForegroundL
382
	/// \sa ScreenInfo.IconBackgroundL
383
	ColorPair IconC;
600.1.40 by Matthew Fuller
Minor doc comment reorgs. Make most shorter and all trailing comments
384
600.1.19 by Matthew Fuller
Add docs for the various name_list's of per-window specialized colors,
385
	/// %Icon manager colors.  \sa ScreenInfo.IconManagerFL
386
	/// \sa ScreenInfo.IconManagerBL
387
	ColorPair IconManagerC;
600.1.40 by Matthew Fuller
Minor doc comment reorgs. Make most shorter and all trailing comments
388
389
	/// Default colors
390
	ColorPair DefaultC;
391
600.1.19 by Matthew Fuller
Add docs for the various name_list's of per-window specialized colors,
392
	/// Color of window borders.  \sa ScreenInfo.BorderColorL
393
	ColorPair BorderColorC;
600.1.40 by Matthew Fuller
Minor doc comment reorgs. Make most shorter and all trailing comments
394
604.1.17 by Matthew Fuller
Move some of these color bits together into a single block instead of
395
	/// Specialized border colors for windows.  From BorderColor config
396
	/// var.  \sa ScreenInfo.BorderColorC
397
	name_list *BorderColorL;
398
399
	/// Specialized border colors for icons.  From IconBorderColor config
400
	/// var.  \sa ScreenInfo.IconBorderColor
401
	name_list *IconBorderColorL;
402
403
	/// Specialized border coloring.  From BorderTileForeground config
404
	/// var.  \sa ScreenInfo.BorderTileC
405
	name_list *BorderTileForegroundL;
406
407
	/// \copydoc ScreenInfo::BorderTileForegroundL
408
	name_list *BorderTileBackgroundL;
409
410
	/// Specialized titlebar foreground coloring.  From TitleForeground
411
	/// config var.  \sa ScreenInfo.TitleC
412
	name_list *TitleForegroundL;
413
414
	/// Specialized titlebar background coloring.  From TitleBackground
415
	/// config var.  \sa ScreenInfo.TitleC
416
	name_list *TitleBackgroundL;
417
418
	/// Specialized icon foreground coloring.  From IconForeground
419
	/// config var.  \sa ScreenInfo.IconC
420
	name_list *IconForegroundL;
421
422
	/// Specialized icon background coloring.  From IconBackground
423
	/// config var.  \sa ScreenInfo.IconC
424
	name_list *IconBackgroundL;
425
426
	/// Specialized icon manager foreground coloring.  From
427
	/// IconManagerForeground config var.  \sa ScreenInfo.IconManagerC
428
	name_list *IconManagerFL;
429
430
	/// Specialized icon manager background coloring.  From
431
	/// IconManagerBackground config var.  \sa ScreenInfo.IconManagerC
432
	name_list *IconManagerBL;
433
434
	/// Color to highlight focused windows in icon manager.
435
	/// \sa ScreenInfo.IconManagerHighlight
436
	name_list *IconManagerHighlightL;
437
600.1.40 by Matthew Fuller
Minor doc comment reorgs. Make most shorter and all trailing comments
438
	/// Menu shadow color
439
	Pixel MenuShadowColor;
440
600.1.19 by Matthew Fuller
Add docs for the various name_list's of per-window specialized colors,
441
	/// %Icon border color.  \sa ScreenInfo.IconBorderColorL
442
	Pixel IconBorderColor;
600.1.40 by Matthew Fuller
Minor doc comment reorgs. Make most shorter and all trailing comments
443
600.1.20 by Matthew Fuller
Doxygenify and better doc this stack of name_list's.
444
	/// %Icon manager highlight color.
445
	/// \sa ScreenInfo.IconManagerHighlightL
446
	Pixel IconManagerHighlight;
600.1.40 by Matthew Fuller
Minor doc comment reorgs. Make most shorter and all trailing comments
447
448
	/// The contrast of the clear shadow
449
	short ClearShadowContrast;
450
451
	/// The contrast of the dark shadow
452
	short DarkShadowContrast;
600.1.15 by Matthew Fuller
Doxygen-ify the next few groups of config params.
453
	/// @}
454
455
	/**
456
	 * \defgroup scr_icon_bits Various icon control bits.
457
	 * Various configurations for how icons get displayed and laid out.
458
	 * @{
459
	 */
600.1.40 by Matthew Fuller
Minor doc comment reorgs. Make most shorter and all trailing comments
460
	/// How icon images/titles are aligned.  From IconJustification
461
	/// config var.  X-ref IconRegion.TitleJustification.
496.1.16 by Matthew Fuller
Convert TitleJustification elements to their own enum type, and fixup
462
	TitleJust IconJustification;
600.1.44 by Matthew Fuller
Minor whitespace tweaking for readability.
463
600.1.40 by Matthew Fuller
Minor doc comment reorgs. Make most shorter and all trailing comments
464
	/// How icons are laid out horizontally inside a region.  From
465
	/// IconRegionJustificationconfig var.
496.1.17 by Matthew Fuller
Convert IconRegion Justification to its own enum type too. This is
466
	IRJust IconRegionJustification;
600.1.44 by Matthew Fuller
Minor whitespace tweaking for readability.
467
600.1.40 by Matthew Fuller
Minor doc comment reorgs. Make most shorter and all trailing comments
468
	/// How icons are laid out vertically inside a region.  From
469
	/// IconRegionAlignement config var.
496.1.14 by Matthew Fuller
Create an enum for the IconRegion Alignement (misspelling preserved
470
	IRAlignement IconRegionAlignement;
604.1.14 by Matthew Fuller
Slightly reorder these fields so we just have a group in one block,
471
472
	/// How to animate window iconification, if any.  From IconifyStyle
473
	/// config var.
474
	IcStyle IconifyStyle;       /* ICONIFY_* */
475
	/// Limit on icon title size.  From MaxIconTitleWidth config var.
476
	int MaxIconTitleWidth;
477
#ifdef EWMH
478
	int PreferredIconWidth;     ///< Width from IconSize config var
479
	int PreferredIconHeight;    ///< Height from IconSize config var
480
#endif
600.1.40 by Matthew Fuller
Minor doc comment reorgs. Make most shorter and all trailing comments
481
	/// @}
482
483
	/// How title text is aligned in window titlebars.  From
600.1.41 by Matthew Fuller
Move this plain comment into the doc comment.
484
	/// TitleJustification config var.  \note Despite the naming
485
	/// similarity, this is *not* related to
486
	/// IconRegion.TitleJustification.  That comes instead from
487
	/// ScreenInfo.IconJustification.
496.1.16 by Matthew Fuller
Convert TitleJustification elements to their own enum type, and fixup
488
	TitleJust TitleJustification;
600.1.40 by Matthew Fuller
Minor doc comment reorgs. Make most shorter and all trailing comments
489
490
	/// \defgroup scr_cursors Various cursors used on the screen.
491
	/// These all come from the Cursors config var, or defaults.
492
	/// @{
600.1.15 by Matthew Fuller
Doxygen-ify the next few groups of config params.
493
	Cursor TitleCursor;    ///< title bar cursor
494
	Cursor FrameCursor;    ///< frame cursor
495
	Cursor IconCursor;     ///< icon cursor
496
	Cursor IconMgrCursor;  ///< icon manager cursor
497
	Cursor ButtonCursor;   ///< title bar button cursor
498
	Cursor MoveCursor;     ///< move cursor
499
	Cursor ResizeCursor;   ///< resize cursor
500
	Cursor WaitCursor;     ///< wait a while cursor
501
	Cursor MenuCursor;     ///< menu cursor
502
	Cursor SelectCursor;   ///< dot cursor for f.move, etc. from menus
503
	Cursor DestroyCursor;  ///< skull and cross bones, f.destroy
504
	Cursor AlterCursor;    ///< cursor for alternate keymaps
505
	/// @}
304.1.2 by Matthew Fuller
Run 'make indent' to reindent the world.
506
600.1.16 by Matthew Fuller
Doc up the next few vars, including marking an unused one.
507
	/// Info about the WorkSpaceManager (and Occupy window) for the screen.
304.1.2 by Matthew Fuller
Run 'make indent' to reindent the world.
508
	WorkSpaceMgr workSpaceMgr;
600.1.16 by Matthew Fuller
Doc up the next few vars, including marking an unused one.
509
	bool workSpaceManagerActive; ///< Whether the WSM is being shown
510
600.1.40 by Matthew Fuller
Minor doc comment reorgs. Make most shorter and all trailing comments
511
	/// \defgroup scr_vscreen_bits VScreen bits
512
	/// @{
600.1.16 by Matthew Fuller
Doc up the next few vars, including marking an unused one.
513
	VirtualScreen *vScreenList;    ///< Linked list of per-VS info
514
	VirtualScreen *currentvs;      ///< Currently active VS
696.1.7 by Matthew Fuller
Screen.VirtualScreens is just the config bits, not running data, so
515
#ifdef VSCREEN
600.1.16 by Matthew Fuller
Doc up the next few vars, including marking an unused one.
516
	name_list     *VirtualScreens; ///< List of defined VS's
517
	int           numVscreens;     ///< Number of defined VS's
696.1.16 by Matthew Fuller
Conditionalize initing numVscreens, which means all uses of it are now
518
#endif
600.1.16 by Matthew Fuller
Doc up the next few vars, including marking an unused one.
519
	/// @}
520
521
	name_list   *OccupyAll;       ///< OccupyAll config var
522
	name_list   *UnmapByMovingFarAway; ///< UnmapByMovingFarAway config var
523
	name_list   *DontSetInactive; ///< DontSetInactive config var
524
	name_list   *AutoSqueeze;     ///< AutoSqueeze config var
525
	name_list   *StartSqueezed;   ///< StartSqueezed config var
600.1.42 by Matthew Fuller
Adjust some whitespace between the type and name specifiers. A lot of
526
527
	bool  use3Dmenus;        ///< UseThreeDMenus config var
528
	bool  use3Dtitles;       ///< UseThreeDTitles config var
529
	bool  use3Diconmanagers; ///< UseThreeDIconManagers config var
530
	bool  use3Dborders;      ///< UseThreeDBorders config var
531
	bool  use3Dwmap;         ///< UseThreeDWMap config var
532
	bool  SunkFocusWindowTitle;  ///< SunkFocusWindowTitle config var
533
	short WMgrVertButtonIndent;  ///< WMgrVertButtonIndent config var
534
	short WMgrHorizButtonIndent; ///< WMgrHorizButtonIndent config var
535
	short WMgrButtonShadowDepth; ///< WMgrButtonShadowDepth config var
536
	bool  BeNiceToColormap; ///< BeNiceToColormap config var
537
	bool  BorderCursors;    ///< BorderResizeCursors config var
602.1.5 by Matthew Fuller
Our automatic indentation isn't going to let us get away with aligning
538
	/// AutoPopup config flag.  \sa ScreenInfo.AutoPopupL
539
	bool  AutoPopup;
600.1.42 by Matthew Fuller
Adjust some whitespace between the type and name specifiers. A lot of
540
	short BorderShadowDepth;      ///< BorderShadowDepth config var
541
	short TitleButtonShadowDepth; ///< TitleButtonShadowDepth config var
542
	short TitleShadowDepth;       ///< TitleShadowDepth config var
543
	short MenuShadowDepth;        ///< MenuShadowDepth config var
544
	short IconManagerShadowDepth; ///< IconManagerShadowDepth config var
600.1.17 by Matthew Fuller
Next stack of trivial var docs.
545
	/// ReallyMoveInWorkspaceManager config var
600.1.42 by Matthew Fuller
Adjust some whitespace between the type and name specifiers. A lot of
546
	bool  ReallyMoveInWorkspaceManager;
600.1.17 by Matthew Fuller
Next stack of trivial var docs.
547
	/// AlwaysShowWindowWhenMovingFromWorkspaceManager config var
600.1.42 by Matthew Fuller
Adjust some whitespace between the type and name specifiers. A lot of
548
	bool  ShowWinWhenMovingInWmgr;
549
	bool  ReverseCurrentWorkspace; ///< ReverseCurrentWorkspace config var
550
	bool  DontWarpCursorInWMap;  ///< DontWarpCursorInWMap config var
551
	short XMoveGrid;             ///< XMoveGrid config var
552
	short YMoveGrid;             ///< YMoveGrid config var
553
	bool  CenterFeedbackWindow;  ///< CenterFeedbackWindow config var
554
	bool  ShrinkIconTitles;      ///< ShrinkIconTitles config var
555
	bool  AutoRaiseIcons;        ///< AutoRaiseIcons config var
556
	bool  AutoFocusToTransients; ///< AutoFocusToTransients config var
557
	bool  PackNewWindows;        ///< PackNewWindows config var
304.1.2 by Matthew Fuller
Run 'make indent' to reindent the world.
558
600.1.40 by Matthew Fuller
Minor doc comment reorgs. Make most shorter and all trailing comments
559
	/// Stash of various OTP info about the windows on the screen.  This
560
	/// is only used internally in various otp.c code; nothing else
561
	/// currently references it.
304.1.2 by Matthew Fuller
Run 'make indent' to reindent the world.
562
	struct OtpPreferences *OTP;
602.1.5 by Matthew Fuller
Our automatic indentation isn't going to let us get away with aligning
563
	/// Stash of OTP info about icons on the screen. \copydetails OTP
564
	struct OtpPreferences *IconOTP;
607.1.1 by Matthew Fuller
Move the bottomOwl pointer into the ScreenInfo struct. If we have
565
	/// Pointer to the start of the OTP winlists for the screen.
566
	struct OtpWinList *bottomOwl;
304.1.2 by Matthew Fuller
Run 'make indent' to reindent the world.
567
600.1.23 by Matthew Fuller
Doc up the next few pointers into linked lists of control structs.
568
	/// From IconManagers config var.  This is a mapping from the window
569
	/// name pattern to the IconMgr structure it should go in.  All the
570
	/// IM's for the screen wind up in the iconmgr element.
571
	/// \sa ScreenInfo.iconmgr
304.1.2 by Matthew Fuller
Run 'make indent' to reindent the world.
572
	name_list *IconMgrs;
600.1.20 by Matthew Fuller
Doxygenify and better doc this stack of name_list's.
573
574
	/// AutoPopup config var (list).  Windows that popup when changed.
575
	/// \sa ScreenInfo.AutoPopup
576
	name_list *AutoPopupL;
577
578
	/// NoBorder config var.  Windows without borders.
579
	name_list *NoBorder;
580
581
	/// NoIconTitle config var (list).  Windows to not show a title on
582
	/// the icons for.  \sa ScreenInfo.NoIconTitlebar
583
	name_list *NoIconTitle;
584
585
	/// NoTitle config var (list).  Windows to not put a titlebar on.
586
	/// \sa ScreenInfo.NoTitlebar
587
	name_list *NoTitle;
588
589
	/// MakeTitle config var.  Windows to pup a titlebar on when general
590
	/// NoTitle is set.  \sa ScreenInfo.NoTitlebar \sa ScreenInfo.NoTitle
591
	name_list *MakeTitle;
592
593
	/// AutoRaise config var (list).  Windows to automatically raise when
594
	/// pointed to (possible after a delay).
595
	/// \sa ScreenInfo.AutoRaiseDefault \sa ScreenInfo.RaiseDelay
596
	name_list *AutoRaise;
597
598
	/// WarpOnDeIconify config var.  Windows to occupy over to current
599
	/// workspace on deiconification.  \note Minor nomenclature issue;
600
	/// 'Warp' in name suggests we move to the win, but it actually means
601
	/// move the win to us.
602
	name_list *WarpOnDeIconify;
603
604
	/// AutoLower config var (list).  Windows to automatically lower when
605
	/// pointed away from.  \sa ScreenInfo.AutoLowerDefault
606
	name_list *AutoLower;
607
608
	/// Icons config var.  Manually specified icons for particular
609
	/// windows.
610
	name_list *IconNames;
611
612
	/// NoHightlight config var (list).  Windows to not highlight border
613
	/// of when focused.  \sa ScreenInfo.Highlight
614
	name_list *NoHighlight;
615
616
	/// NoStackMode config var (list).  Windows to ignore
617
	/// application-initiated restacking requests from.
618
	/// \sa ScreenInfo.StackMode
619
	name_list *NoStackModeL;
620
621
	/// NoTitleHighlight config var (list).  Windows to not highlight in
622
	/// titlevar when focused.  \sa ScreenInfo.TitleHighlight
623
	name_list *NoTitleHighlight;
624
625
	/// DontIconifyByUnmapping config var.  Windows to iconify by making
626
	/// an icon for, overriding IconifyByUnmapping setting.
627
	name_list *DontIconify;
628
629
	/// IconManagerDontShow config var (list).
630
	/// \sa ScreenInfo.IconManagerDontShow
631
	name_list *IconMgrNoShow;
632
633
	/// IconManagerShow config var.  Windows to show in icon manager even
634
	/// if global IconManagerDontShow is set.
635
	name_list *IconMgrShow;
636
637
	/// IconifyByUnmapping config var (list).  \sa ScreenInfo.IconifyByUnmapping
638
	name_list *IconifyByUn;
639
640
	/// StartIconified config var.
641
	name_list *StartIconified;
642
643
	/// SqueezeTitle config var (list).  \sa ScreenInfo.SqueezeTitle
644
	name_list *SqueezeTitleL;
645
646
	/// DontSqueezeTitle config var (list).  \sa ScreenInfo.SqueezeTitle
647
	name_list *DontSqueezeTitleL;
648
649
	/// AlwaysSqueezeToGravity config var (list).
650
	/// \sa ScreenInfo.AlwaysSqueezeToGravity
651
	name_list *AlwaysSqueezeToGravityL;
652
653
	/// WindowRing config var (list).  Windows to put in warp ring.
654
	/// \sa ScreenInfo.WindowRingAll
655
	name_list *WindowRingL;
656
657
	/// WindowRingExclude config var.  Windows to exclude from warp ring.
658
	name_list *WindowRingExcludeL;
659
660
	/// WarpCursor config var (list).  Windows to warp to on deiconify.
661
	/// \sa ScreenInfo.WarpCursor
662
	name_list *WarpCursorL;
663
664
	/// DontSave config var.  Windows to not save info in session manager.
304.1.2 by Matthew Fuller
Run 'make indent' to reindent the world.
665
	name_list *DontSave;
600.1.20 by Matthew Fuller
Doxygenify and better doc this stack of name_list's.
666
667
	/// WindowGeometries config var.  Default geometries for windows.
304.1.2 by Matthew Fuller
Run 'make indent' to reindent the world.
668
	name_list *WindowGeometries;
600.1.20 by Matthew Fuller
Doxygenify and better doc this stack of name_list's.
669
670
	/// IgnoreTransient config var.  Windows that we should pretend
671
	/// aren't transient even if they are.
304.1.2 by Matthew Fuller
Run 'make indent' to reindent the world.
672
	name_list *IgnoreTransientL;
673
600.1.20 by Matthew Fuller
Doxygenify and better doc this stack of name_list's.
674
	/// OpaqueMove config var (list).  Windows to move opaquely rather
675
	/// than in outline.  \sa ScreenInfo.DoOpaqueMove
304.1.2 by Matthew Fuller
Run 'make indent' to reindent the world.
676
	name_list *OpaqueMoveList;
600.1.20 by Matthew Fuller
Doxygenify and better doc this stack of name_list's.
677
678
	/// NoOpaqueMove config var (list).  Windows to not move opaquely.
679
	/// \sa ScreenInfo.DoOpaqueMove
304.1.2 by Matthew Fuller
Run 'make indent' to reindent the world.
680
	name_list *NoOpaqueMoveList;
600.1.20 by Matthew Fuller
Doxygenify and better doc this stack of name_list's.
681
682
	/// OpaqueResize config var (list).  Windows to resize opaquely
683
	/// rather than in outline.  \sa ScreenInfo.DoOpaqueResize
304.1.2 by Matthew Fuller
Run 'make indent' to reindent the world.
684
	name_list *OpaqueResizeList;
600.1.20 by Matthew Fuller
Doxygenify and better doc this stack of name_list's.
685
686
	/// NoOpaqueResize config var (list).  Windows to not resize
687
	/// opaquely.  \sa ScreenInfo.DoOpaqueResize
304.1.2 by Matthew Fuller
Run 'make indent' to reindent the world.
688
	name_list *NoOpaqueResizeList;
600.1.20 by Matthew Fuller
Doxygenify and better doc this stack of name_list's.
689
690
	/// IconMenuDontShow config var.  Windows whose icons to not list in
691
	/// TwmIcons menu.
304.1.2 by Matthew Fuller
Run 'make indent' to reindent the world.
692
	name_list *IconMenuDontShow;
693
600.1.21 by Matthew Fuller
Make a group and doxygenify these GC bits.
694
695
	/**
696
	 * \defgroup scr_gc_bits Various graphics contexts
697
	 * These are X Graphics Contexts, which are used for various sorts of
698
	 * drawing in X.  Stuff that needs to draw lines, or write out text,
699
	 * all needs to use a GC.  X-ref
700
	 * <https://www.x.org/releases/X11R7.7/doc/libX11/libX11/libX11.html#Graphics_Context_Functions>
701
	 * for upstream details.
702
	 * @{
703
	 */
704
	GC NormalGC; ///< normal GC for everything
705
	GC MenuGC;   ///< GC for menus
706
	GC DrawGC;   ///< GC to draw lines for move and resize
707
	GC BorderGC; ///< GC for drawing 3D borders
708
	GC rootGC;   ///< GC for internal pixmaps in image.c / image_bitmap.c
709
	/// @}
304.1.2 by Matthew Fuller
Run 'make indent' to reindent the world.
710
604.1.6 by Matthew Fuller
Now that these docs are short, collapse 'em to ///< at EOL to save a
711
	Pixel Black; ///< Stash of "Black" X color for the screen
712
	Pixel White; ///< Stash of "White" X color for the screen
600.1.22 by Matthew Fuller
Doc a few colors and our fonts.
713
	unsigned long XORvalue;  ///< XorValue config var, or default
714
715
	/// \defgroup scr_font_bits Various font settings
716
	/// Definitions of various fonts to use on the Screen.
717
	/// @{
718
	MyFont TitleBarFont;     ///< TitleFont config var
719
	MyFont MenuFont;         ///< MenuFont config var
720
	MyFont IconFont;         ///< IconFont config var
721
	MyFont SizeFont;         ///< SizeFont config var
722
	MyFont IconManagerFont;  ///< IconManagerFont config var
723
	MyFont DefaultFont;      ///< Hardcoded fallback font
724
	/// @}
725
600.1.23 by Matthew Fuller
Doc up the next few pointers into linked lists of control structs.
726
	/// Head of linked list of Screen's icon managers.  The head is also
727
	/// the default icon manager for the screen.  \sa ScreenInfo.IconMgrs
728
	IconMgr *iconmgr;
729
730
	/// Head of the list of IconRegion structs on the Screen.  Built out
731
	/// from %IconRegion config var.
732
	struct IconRegion *FirstRegion;
733
734
	/// Tail of the list of IconRegion structs on the Screen.  Used as an
735
	/// optimization in configuring the list on startup.  \todo Is this
736
	/// actually necessary?  Does the order matter?
737
	struct IconRegion *LastRegion;
738
739
	/// Pointer to head of list of window regions on screen.  Built from
740
	/// %WindowRegion config var.
741
	struct WindowRegion *FirstWindowRegion;
742
700.1.10 by Matthew Fuller
Now that all the config etc for windowboxes is gone, we don't need the
743
#ifdef WINBOX
600.1.23 by Matthew Fuller
Doc up the next few pointers into linked lists of control structs.
744
	/// Pointer to head of list of windowboxes on screen.  Built from
745
	/// %WindowBox config var.
600.1.24 by Matthew Fuller
Doc up and xref another stack of vars.
746
	WindowBox *FirstWindowBox;
700.1.10 by Matthew Fuller
Now that all the config etc for windowboxes is gone, we don't need the
747
#endif
600.1.24 by Matthew Fuller
Doc up and xref another stack of vars.
748
749
	char *IconDirectory;    ///< IconDirectory config var
750
	char *PixmapDirectory;  ///< PixmapDirectory config var
751
752
	int SizeStringOffset;   ///< X offset in size window for drawing
753
	int SizeStringWidth;    ///< Minimum width of size window
754
755
	int BorderWidth;        ///< BorderWidth config var
756
	int BorderLeft;         ///< BorderLeft config var
757
	int BorderRight;        ///< BorderRight config var
758
	int BorderTop;          ///< BorderTop config var
759
	int BorderBottom;       ///< BorderBottom config var
760
	int ThreeDBorderWidth;  ///< ThreeDBorderWidth config var
761
	int IconBorderWidth;    ///< IconBorderWidth config var
762
763
	/// Height of the title bar window.  Calculated from font height and
764
	/// padding.  \todo Maybe this should be in ScreenInfo.TBInfo above?
765
	/// Same can be said for a number of following fields that are
766
	/// titlebar related...
767
	int TitleHeight;
768
769
	TwmWindow *Focus;    ///< The twm window that has focus.
770
	int EntryHeight;     ///< Menu entry height.  Calc'd from font height.
771
602.1.5 by Matthew Fuller
Our automatic indentation isn't going to let us get away with aligning
772
	/// FramePadding config var.  Distance between titlebar contents and
773
	/// frame.
774
	int FramePadding;
775
	/// TitlePadding config var.  Distance between items in titlebar.
776
	int TitlePadding;
600.1.24 by Matthew Fuller
Doc up and xref another stack of vars.
777
602.1.5 by Matthew Fuller
Our automatic indentation isn't going to let us get away with aligning
778
	/// ButtonIndent config var.  Amount to shrink titlebar buttons.
779
	int ButtonIndent;
600.1.24 by Matthew Fuller
Doc up and xref another stack of vars.
780
	int NumAutoRaises;   ///< Number of autoraise windows on screen
781
	int NumAutoLowers;   ///< Number of autolower windows on screen
782
	int TransientOnTop;  ///< TransientOnTop config var
783
784
	/// AutoRaise config flag.  \sa ScreenInfo.AutoRaise
600.1.42 by Matthew Fuller
Adjust some whitespace between the type and name specifiers. A lot of
785
	bool AutoRaiseDefault;
600.1.24 by Matthew Fuller
Doc up and xref another stack of vars.
786
787
	/// AutoLower config flag.  \sa ScreenInfo.AutoLower
600.1.42 by Matthew Fuller
Adjust some whitespace between the type and name specifiers. A lot of
788
	bool AutoLowerDefault;
600.1.24 by Matthew Fuller
Doc up and xref another stack of vars.
789
600.1.42 by Matthew Fuller
Adjust some whitespace between the type and name specifiers. A lot of
790
	bool NoDefaults;    ///< NoDefaults config var
600.1.24 by Matthew Fuller
Doc up and xref another stack of vars.
791
	UsePPoss UsePPosition;     ///< UsePPosition config var
600.1.42 by Matthew Fuller
Adjust some whitespace between the type and name specifiers. A lot of
792
	bool UseSunkTitlePixmap;  ///< UseSunkTitlePixmap config var
793
	bool AutoRelativeResize;  ///< AutoRelativeResize config var
600.1.26 by Matthew Fuller
Update FocusRoot docs, now that I've had to dig into a code and
794
795
	/// Whether focus is allowed to move.  At one point this allegedly
796
	/// meant something like "is the input focus on the root?".  In
797
	/// current use, however, it's used as a flag for whether to
798
	/// auto-move focus to a new window; it's set to false in the
799
	/// ClickToFocus case, as well as when f.focus is called on a window,
800
	/// and then prevents Enter notifications from setting focus on new
801
	/// windows.
600.1.27 by Matthew Fuller
Drop a todo to rename this.
802
	/// \todo Rename to something better fitting.
600.1.26 by Matthew Fuller
Update FocusRoot docs, now that I've had to dig into a code and
803
	bool  FocusRoot;
804
600.1.42 by Matthew Fuller
Adjust some whitespace between the type and name specifiers. A lot of
805
	bool WarpCursor;    ///< WarpCursor config var.  \sa ScreenInfo.WarpCursorL
806
	bool ForceIcon;     ///< ForceIcons config var
807
	bool NoGrabServer;  ///< NoGrabServer config var
808
	bool NoRaiseMove;   ///< NoRaiseOnMove config var
809
	bool NoRaiseResize; ///< NoRaiseOnResize config var
810
	bool NoRaiseDeicon; ///< NoRaiseOnDeiconify config var
811
	bool RaiseOnWarp;   ///< NoRaiseOnWarp config var (inverse)
812
	bool DontMoveOff;   ///< DontMoveOff config var
600.1.24 by Matthew Fuller
Doc up and xref another stack of vars.
813
	int MoveOffResistance;  ///< MoveOffResistence config var
814
	int MovePackResistance; ///< MovePackResistence config var
600.1.25 by Matthew Fuller
Another block of doc/xref.
815
816
	/// Whether we're animating [de]iconification zooms.  From Zoom
817
	/// config var.  \sa ScreenInfo.ZoomCount
600.1.42 by Matthew Fuller
Adjust some whitespace between the type and name specifiers. A lot of
818
	bool DoZoom;
600.1.25 by Matthew Fuller
Another block of doc/xref.
819
600.1.42 by Matthew Fuller
Adjust some whitespace between the type and name specifiers. A lot of
820
	bool TitleFocus;       ///< NoTitleFocus config var (inverse)
821
	bool IconManagerFocus; ///< NoIconManagerFocus config var (inverse)
600.1.25 by Matthew Fuller
Another block of doc/xref.
822
823
	/// NoIconTitle config var.  \sa ScreenInfo.NoIconTitle
600.1.42 by Matthew Fuller
Adjust some whitespace between the type and name specifiers. A lot of
824
	bool NoIconTitlebar;
600.1.25 by Matthew Fuller
Another block of doc/xref.
825
826
	/// NoTitle config var.  \sa ScreenInfo.NoTitle
600.1.42 by Matthew Fuller
Adjust some whitespace between the type and name specifiers. A lot of
827
	bool NoTitlebar;
600.1.25 by Matthew Fuller
Another block of doc/xref.
828
600.1.42 by Matthew Fuller
Adjust some whitespace between the type and name specifiers. A lot of
829
	bool DecorateTransients; ///< DecorateTransients config var
600.1.25 by Matthew Fuller
Another block of doc/xref.
830
831
	/// IconifyByUnmapping config var.  \sa ScreenInfo.IconifyByUn
600.1.42 by Matthew Fuller
Adjust some whitespace between the type and name specifiers. A lot of
832
	bool IconifyByUnmapping;
600.1.25 by Matthew Fuller
Another block of doc/xref.
833
600.1.42 by Matthew Fuller
Adjust some whitespace between the type and name specifiers. A lot of
834
	bool ShowIconManager; ///< ShowIconManager config var
835
	bool ShowWorkspaceManager; ///< ShowWorkSpaceManager config var
600.1.25 by Matthew Fuller
Another block of doc/xref.
836
837
	/// IconManagerDontShow config var.  \sa ScreenInfo.IconMgrNoShow
600.1.42 by Matthew Fuller
Adjust some whitespace between the type and name specifiers. A lot of
838
	bool IconManagerDontShow;
600.1.25 by Matthew Fuller
Another block of doc/xref.
839
600.1.42 by Matthew Fuller
Adjust some whitespace between the type and name specifiers. A lot of
840
	bool AutoOccupy;   ///< AutoOccupy config var
841
	bool AutoPriority; ///< AutoPriority config var
842
	bool TransientHasOccupation; ///< TransientHasOccupation config var
843
	bool DontPaintRootWindow;    ///< DontPaintRootWindow config var
844
	bool BackingStore; ///< BackingStore config var
845
	bool SaveUnder;    ///< NoSaveUnders config var (inverse)
600.1.25 by Matthew Fuller
Another block of doc/xref.
846
	RandPlac RandomPlacement;  ///< RandomPlacement config var (1st arg)
847
	short RandomDisplacementX; ///< RandomPlacement config var (2nd arg)
848
	short RandomDisplacementY; ///< RandomPlacement config var (2nd arg)
849
850
	/// Whether we're doing a window opaque move.  This is set at runtime
851
	/// for each particular move we start doing, acting as a "what are we
852
	/// in the middle of" flag.  It will get figured based on various
853
	/// things, like TwmWindow.OpaqueMove and
854
	/// ScreenInfo.OpaqueMoveThreshold.
600.1.42 by Matthew Fuller
Adjust some whitespace between the type and name specifiers. A lot of
855
	bool OpaqueMove;
600.1.25 by Matthew Fuller
Another block of doc/xref.
856
857
	/// OpaqueMove config var.  \sa ScreenInfo.OpaqueMoveList
600.1.42 by Matthew Fuller
Adjust some whitespace between the type and name specifiers. A lot of
858
	bool DoOpaqueMove;
600.1.25 by Matthew Fuller
Another block of doc/xref.
859
860
	unsigned short OpaqueMoveThreshold;  ///< OpaqueMoveThreshold config var
861
600.1.28 by Matthew Fuller
Doc up the OpaqueResize bits.
862
	/// OpaqueResize config var.  \sa ScreenInfo.OpaqueResizeList
600.1.29 by Matthew Fuller
Doc up the next block of mostly bool vars.
863
	bool DoOpaqueResize;
600.1.28 by Matthew Fuller
Doc up the OpaqueResize bits.
864
865
	/// Whether we're in the midst of an opaque resizing.  Transiently
866
	/// set at runtime based on things like TwmWindow.OpaqueResize and
867
	/// ScreenInfo.OpaqueResizeThreshold.  X-ref ScreenInfo.OpaqueMove
868
	/// for its counterpart in the window-moving department.
600.1.29 by Matthew Fuller
Doc up the next block of mostly bool vars.
869
	bool OpaqueResize;
600.1.28 by Matthew Fuller
Doc up the OpaqueResize bits.
870
871
	unsigned short OpaqueResizeThreshold; ///< OpaqueResizeThreshold config var
872
600.1.29 by Matthew Fuller
Doc up the next block of mostly bool vars.
873
	/// NoHighlight config var (inverse).  \sa ScreenInfo.NoHighlight
874
	bool Highlight;
875
876
	/// NoStackMode config var (inverse).  \sa ScreenInfo.NoStackModeL
877
	bool StackMode;
878
879
	/// NoTitleHighlight config var (inverse).  \sa ScreenInfo.NoTitleHighlight
880
	bool TitleHighlight;
881
882
	/// MoveDelta config var.  Number of pixels before f.move starts
883
	short MoveDelta;
884
885
	/// Zoom config var.  Number of animated steps in [de]iconifying.
886
	short ZoomCount;
887
888
	bool SortIconMgr;  ///< SortIconManager config var
889
	bool Shadow;       ///< NoMenuShadows config var (inverse)
890
	bool InterpolateMenuColors;  ///< InterpolateMenuColors config var
891
	bool StayUpMenus;  ///< StayUpMenus config var
892
	bool WarpToDefaultMenuEntry; ///< WarpToDefaultMenuEntry config var
893
	bool ClickToFocus; ///< ClickToFocus config var
894
	bool SloppyFocus;  ///< SloppyFocus config var
895
	bool SaveWorkspaceFocus; ///< SaveWorkspaceFocus config var
896
	bool NoIconManagers;     ///< NoIconManagers config var
897
	bool ClientBorderWidth;  ///< ClientBorderWidth config var
898
899
	/// SqueezeTitle and/or DontSqueezeTitle config vars.
900
	/// \sa ScreenInfo.SqueezeTitleL  \sa ScreenInfo.DontSqueezeTitleL
901
	bool SqueezeTitle;
902
600.1.30 by Matthew Fuller
Doc up next block, including marking a questionable var.
903
	/// AlwaysSqueezeToGravity config var.
904
	/// \sa ScreenInfo.AlwaysSqueezeToGravityL
905
	bool AlwaysSqueezeToGravity;
906
907
	/// Whether fonts have been loaded yet in the startup process
908
	bool HaveFonts;
909
910
	/// Some sort of attempt to determine whether this is the first
641.1.9 by Matthew Fuller
Do a bunch more commenting and a few minor moves of the loop for
911
	/// config file we've parsed for this screen (which is bogus, since
912
	/// we only parse one file for each screen!), but also used in some
913
	/// color getting for obscure reasons.  This needs careful
914
	/// consideration and auditing; it may be just bogus.  X-ref work
915
	/// vtwm did in adjusting its use in GetColor() to avoid all the
916
	/// save/restore dances on calls around it, and the \#ifdef inside
917
	/// GetColor().  \todo Evaulate to determine whether it should exist.
600.1.30 by Matthew Fuller
Doc up next block, including marking a questionable var.
918
	bool FirstTime;
919
920
	bool  CaseSensitive; ///< NoCaseSensitive config var (inverse)
921
	bool  WarpUnmapped;  ///< WarpUnmapped config var
922
	bool  WindowRingAll; ///< WindowRing config var.  \sa ScreenInfo.WindowRingL
923
	bool  WarpRingAnyWhere;       ///< WarpRingOnScreen config var (inverse)
924
	bool  ShortAllWindowsMenus;   ///< ShortAllWindowsMenus config var
925
	short OpenWindowTimeout;      ///< OpenWindowTimeout config var
926
	bool  RaiseWhenAutoUnSqueeze; ///< RaiseWhenAutoUnSqueeze config var
927
	bool  RaiseOnClick;           ///< RaiseOnClick config var
928
	short RaiseOnClickButton;     ///< RaiseOnClickButton config var
929
	unsigned int IgnoreModifier;  ///< IgnoreModifier config var
930
	bool IgnoreCaseInMenuSelection;  ///< IgnoreCaseInMenuSelection config var
931
	bool NoWarpToMenuTitle;          ///< NoWarpToMenuTitle config var
932
	bool NoImagesInWorkSpaceManager; ///< NoImagesInWorkSpaceManager config var
933
934
	/// DontToggleWorkspaceManagerState config var
935
	bool DontToggleWorkspaceManagerState;
600.1.10 by Matthew Fuller
Turn these WindowMask related bits into a named gruop, so we can stuff
936
600.1.40 by Matthew Fuller
Minor doc comment reorgs. Make most shorter and all trailing comments
937
	/// Whether to show the welcome window.  Related to the
938
	/// DontShowWelcomeWindow config var or the \--nowelcome command-line
939
	/// arg.  \ingroup scr_maskwin
600.1.42 by Matthew Fuller
Adjust some whitespace between the type and name specifiers. A lot of
940
	bool ShowWelcomeWindow;
304.1.2 by Matthew Fuller
Run 'make indent' to reindent the world.
941
602.1.1 by Matthew Fuller
Add DontNameDecorations config var.
942
	bool NameDecorations;  ///< DontNameDecorations config var (inverse)
943
615.1.21 by Matthew Fuller
Add StrictWinNameEncoding config var, to allow restoring historical
944
	/// Whether to be strict about what encoding of window naming
945
	/// properties (WM_NAME etc) we accept.  From StrictWinNameEncoding
946
	/// config var.
947
	bool StrictWinNameEncoding;
948
600.1.31 by Matthew Fuller
Doc up a few more easy bits.
949
	/// ForceFocus config var.  Forcing focus-setting on windows.
602.1.5 by Matthew Fuller
Our automatic indentation isn't going to let us get away with aligning
950
	/// \sa ScreenInfo.ForceFocusL
951
	bool      ForceFocus;
952
	/// \copybrief ForceFocus \sa ScreenInfo.ForceFocus
953
	name_list *ForceFocusL;
567.2.3 by Matthew Fuller
Add ForceFocus config param.
954
600.1.32 by Matthew Fuller
Doc the last few fields outside the #ifdef, which doxygen isn't
955
	FuncKey FuncKeyRoot;       ///< Key bindings
956
	FuncButton FuncButtonRoot; ///< Mouse click bindings
22 by Richard Levitte
Some last-minute Gnome-related corrections that Claude sent me.
957
302.1.3 by Olaf 'Rhialto' Seibert
Implement the --replace option and the WM_S<n> selection protocol
958
#ifdef EWMH
600.1.36 by Matthew Fuller
Doc up these last bits of EWMH stuff in ScreenInfo.
959
	/// Special-purpose window for WM_S<screennum> window selection.  See
960
	/// ICCCM sections 4.3, 2.8.
961
	Window icccm_Window;
962
963
	/// List of known client windows.  Stashed in _NET_CLIENT_LIST
964
	/// property.
302.1.36 by Olaf 'Rhialto' Seibert
Add _NET_CLIENT_LIST.
965
	long *ewmh_CLIENT_LIST;
600.1.36 by Matthew Fuller
Doc up these last bits of EWMH stuff in ScreenInfo.
966
	int ewmh_CLIENT_LIST_size; ///< Allocated ScreenInfo.ewmh_CLIENT_LIST memory
967
	int ewmh_CLIENT_LIST_used; ///< Used ScreenInfo.ewmh_CLIENT_LIST slots
968
969
	/// List of EWMH struts.  From _NET_WM_STRUT properties.  EWMH config
970
	/// for windows that reserve spaces at the sides of a screen (e.g.,
971
	/// taskbars, panels, etc).
972
	EwmhStrut *ewmhStruts;
973
974
	name_list *EWMHIgnore; ///< EWMHIgnore config var.  Messages to ignore.
302.1.3 by Olaf 'Rhialto' Seibert
Implement the --replace option and the WM_S<n> selection protocol
975
#endif /* EWMH */
473.1.6 by Matthew Fuller
Add a config entry to hold bits for ignoring MWM hints.
976
600.1.32 by Matthew Fuller
Doc the last few fields outside the #ifdef, which doxygen isn't
977
	name_list *MWMIgnore; ///< Motif WM messages to ignore
93 by Richard Levitte
- Convert all functions to use proper prototypes.
978
};
1 by Claude Lecommandeur
CTWM version 1.1
979
600.1.37 by Matthew Fuller
Doc up these last few vars.
980
981
982
/*
983
 * A few global vars that talk about Screen stuff
984
 */
985
extern int NumScreens;  ///< How many Screens are on our display
986
extern ScreenInfo **ScreenList; ///< List of ScreenInfo structs for each Screen
987
extern ScreenInfo *Scr; ///< The ScreenInfo struct for the current Screen
1 by Claude Lecommandeur
CTWM version 1.1
988
989
484 by Matthew Fuller
Consistently rename all the include guards so they match the filename,
990
#endif /* _CTWM_SCREEN_H */