Convert over to use GetOpt::Long and introduce -f and -h.
[fvwm.git] / libs / defaults.h
blobb1e5bc0b869b50f48c913262f8fd4fe24b0269d4
1 /* -*-c-*- */
3 /* File: defaults.h
5 * Description:
6 * #defines for default values shall go into this file as well as tunable
7 * parameters.
8 */
10 #ifndef _DEFAULTS_
11 #define _DEFAULTS_
13 /*** event handling ***/
14 #define CLOCK_SKEW_MS 30000 /* ms */
16 /*** grabbing the pointer ***/
17 #define NUMBER_OF_GRAB_ATTEMPTS 100
18 #define TIME_BETWEEN_GRAB_ATTEMPTS 10 /* ms */
20 /*** bindings and mouse buttons ***/
21 /* Fvwm needs at least 3 buttons. X currently supports up to 5 buttons, so you
22 * can use 3, 4 or 5 here. Do not set this to values higher than 5! Use the
23 * next macro for that. */
24 #define NUMBER_OF_MOUSE_BUTTONS 5
25 /* The "extended" buttons do not provide the full functionality because X has
26 * no bit mask value for them. Things like dragging windows don't work with
27 * them. */
28 #define NUMBER_OF_EXTENDED_MOUSE_BUTTONS 9
29 #if NUMBER_OF_EXTENDED_MOUSE_BUTTONS > 31
30 #error No more than 31 mouse buttons can be supported on 32 bit platforms
31 #endif
32 #define DEFAULT_ALL_BUTTONS_MASK \
33 ((Button1Mask * ((1 << NUMBER_OF_MOUSE_BUTTONS) - 1)))
34 #define DEFAULT_ALL_BUTTONS_MOTION_MASK \
35 ((Button1MotionMask * ((1 << NUMBER_OF_MOUSE_BUTTONS) - 1)))
36 #define DEFAULT_MODS_UNUSED LockMask
40 * These values may be adjusted to fine tune the menu looks.
42 /* The first option of the default menu style must be fvwm/win/mwm/....
43 * fvwm may crash if not. */
44 #define DEFAULT_MENU_STYLE \
45 "MenuStyle * fvwm, Foreground black, Background grey, " \
46 "Greyed slategrey, MenuColorset, ActiveColorset, GreyedColorset"
47 #define DEFAULT_CLICKTIME 150 /* ms */
48 #define DEFAULT_POPUP_DELAY 15 /* ms*10 */
49 #define DEFAULT_POPDOWN_DELAY 15 /* ms*10 */
50 #define DEFAULT_MENU_CLICKTIME (3*DEFAULT_CLICKTIME)
51 #define DEFAULT_MOVE_THRESHOLD 3 /* pixels */
52 #define MAX_MENU_COPIES 10 /* menu copies */
53 #define MAX_MENU_ITEM_LABELS 3 /* labels (max. 15) */
54 #define MAX_MENU_ITEM_MINI_ICONS 2 /* mini icons (max. 15) */
55 #define DEFAULT_MENU_BORDER_WIDTH 2 /* pixels */
56 #define MAX_MENU_BORDER_WIDTH 50 /* pixels */
57 #define MAX_MENU_ITEM_RELIEF_THICKNESS 50 /* pixels */
58 #define PARENT_MENU_FORCE_VISIBLE_WIDTH 20 /* pixels */
59 #define DEFAULT_MENU_POPUP_NOW_RATIO 75 /* % of item width */
60 /* default item formats for left and right submenus. */
61 #define DEFAULT_MENU_ITEM_FORMAT "%s%.1|%.5i%.5l%.5l%.5r%.5i%2.3>%1|"
62 #define DEFAULT_LEFT_MENU_ITEM_FORMAT "%.1|%3.2<%5i%5l%5l%5r%5i%1|%s"
63 /* size of the submenu triangle. */
64 #define MENU_TRIANGLE_WIDTH 5 /* pixels */
65 #define MENU_TRIANGLE_HEIGHT 9 /* pixels */
66 /* menu underline parameters */
67 #define MENU_UNDERLINE_THICKNESS 1 /* pixels */
68 #define MENU_UNDERLINE_GAP 1 /* pixels */
69 #define MENU_UNDERLINE_HEIGHT (MENU_UNDERLINE_THICKNESS + MENU_UNDERLINE_GAP)
70 /* menu separator parameters */
71 #define MENU_SEPARATOR_SHORT_X_OFFSET 5 /* pixels */
72 #define MENU_SEPARATOR_Y_OFFSET 2 /* pixels */
73 #define MENU_SEPARATOR_HEIGHT 2 /* pixels */
74 #define MENU_SEPARATOR_TOTAL_HEIGHT \
75 (MENU_SEPARATOR_HEIGHT + MENU_SEPARATOR_Y_OFFSET)
76 /* menu tear off bar parameters */
77 #define MENU_TEAR_OFF_BAR_X_OFFSET 1 /* pixels */
78 #define MENU_TEAR_OFF_BAR_Y_OFFSET 1 /* pixels */
79 #define MENU_TEAR_OFF_BAR_HEIGHT 4 /* pixels */
80 #define MENU_TEAR_OFF_BAR_DASH_WIDTH 5 /* pixels */
81 /* gap above item text */
82 #define DEFAULT_MENU_ITEM_TEXT_Y_OFFSET 1 /* pixels */
83 /* gap below item text */
84 #define DEFAULT_MENU_ITEM_TEXT_Y_OFFSET2 2 /* pixels */
85 /* same for titles */
86 #define DEFAULT_MENU_TITLE_TEXT_Y_OFFSET (DEFAULT_MENU_ITEM_TEXT_Y_OFFSET)
87 #define DEFAULT_MENU_TITLE_TEXT_Y_OFFSET2 (DEFAULT_MENU_ITEM_TEXT_Y_OFFSET2)
88 /* minimum for above value */
89 #define MIN_VERTICAL_SPACING -100 /* pixels */
90 /* maximum for above value */
91 #define MAX_VERTICAL_SPACING 100 /* pixels */
92 /* maximum for above value */
93 #define MAX_MENU_MARGIN 50 /* pixels */
94 /* width of a tab in the item format of a menu */
95 #define MENU_TAB_WIDTH 8 /* spaces */
96 /* This is the tile width or height for V and H gradients. I guess this should
97 * better be a power of two. A value of 5 definitely causes XFree 3.3.3.1 to
98 * screw up the V_GRADIENT on an 8 bit display, but 4, 6, 7 etc. work well. */
99 #define DEFAULT_MENU_GRADIENT_PIXMAP_THICKNESS 4
101 /*** colours ***/
102 #define DEFAULT_FORE_COLOR "black"
103 #define DEFAULT_BACK_COLOR "gray"
104 #define DEFAULT_HILIGHT_COLOR "white"
105 #define DEFAULT_SHADOW_COLOR "black"
106 #define DEFAULT_CURSOR_FORE_COLOR "black"
107 #define DEFAULT_CURSOR_BACK_COLOR "white"
109 /*** pager ***/
110 #define DEFAULT_MOVE_THRESHOLD 3 /* pixels */
111 #define DEFAULT_PAGER_WINDOW_BORDER_WIDTH 1 /* pixels */
113 /*** fonts ***/
114 #define EXTRA_TITLE_FONT_HEIGHT 3 /* pixels */
115 #define EXTRA_TITLE_FONT_WIDTH 3 /* pixels */
116 #define MIN_FONT_HEIGHT (EXTRA_TITLE_FONT_HEIGHT + 2)
117 #define MAX_FONT_HEIGHT 256 /* pixels */
119 /*** Flocale ***/
120 /* adding the good number of "*" speed-up font loading with certain X
121 * server */
122 #define FLOCALE_MB_FALLBACK_FONT \
123 "-*-fixed-medium-r-semicondensed-*-13-*-*-*-*-*-*-*," \
124 "-*-fixed-medium-r-normal-*-14-*-*-*-*-*-*-*," \
125 "-*-*-medium-r-normal-*-16-*-*-*-*-*-*-*"
126 /* rationale: -*-fixed-medium-r-semicondensed-*-13-* should gives "fixed" in
127 most non multibyte charset (?).
128 -*-fixed-medium-r-normal-*-14-* is ok for jsx
129 -*-medium-r-normal-*-16-* is for gb
130 Of course this is for XFree. Any help for other X server basic font set
131 is welcome.
133 #define FLOCALE_FALLBACK_FONT "fixed"
134 #define FLOCALE_FFT_FALLBACK_FONT "MonoSpace"
136 #define FLOCALE_NUMBER_MISS_CSET_ERR_MSG 5
138 /*** window geometry ***/
139 #define DEFAULT_MIN_MAX_WINDOW_WIDTH 100 /* pixels */
140 #define DEFAULT_MIN_MAX_WINDOW_HEIGHT 100 /* pixels */
141 #define DEFAULT_MAX_MAX_WINDOW_WIDTH 32767 /* pixels */
142 #define DEFAULT_MAX_MAX_WINDOW_HEIGHT 32767 /* pixels */
144 /*** icon geometry ***/
145 #define UNSPECIFIED_ICON_DIMENSION -1
146 #define MIN_ALLOWABLE_ICON_DIMENSION 0 /* pixels */
147 #define MAX_ALLOWABLE_ICON_DIMENSION 255 /* pixels */
149 /* this value is used in a bugfix */
150 #define WINDOW_FREAKED_OUT_SIZE 65500 /* pixels */
151 /* Used in Workaround for broken min and max size hints vs a size request */
152 #define BROKEN_MAXSIZE_LIMIT 1
153 #define BROKEN_MINSIZE_LIMIT 30000
155 /* geometry window */
156 #define GEOMETRY_WINDOW_BW 2 /* pixels */
157 #define GEOMETRY_WINDOW_STRING " +8888 x +8888 "
158 #define GEOMETRY_WINDOW_POS_STRING " %+-4d %+-4d "
159 #define GEOMETRY_WINDOW_SIZE_STRING " %4d x %-4d "
162 * window title layout
164 /* the title buttons are shrunk if the title would become smaller than this
165 * number of pixels */
166 #define MIN_WINDOW_TITLE_LENGTH 10 /* pixels */
167 /* title bar buttons that get smaller than this size are hidden */
168 #define MIN_WINDOW_TITLEBUTTON_LENGTH 2 /* pixels */
169 /* height of stick lines */
170 #define WINDOW_TITLE_STICK_HEIGHT 1 /* pixels */
171 /* vertical distance between stick lines */
172 #define WINDOW_TITLE_STICK_VERT_DIST 4 /* pixels */
173 /* minimum width of stick lines */
174 #define WINDOW_TITLE_STICK_MIN_WIDTH 1 /* pixels */
175 /* gap between border of title window and stick lines */
176 #define WINDOW_TITLE_STICK_OFFSET 4 /* pixels */
177 /* gap between title and stick lines */
178 #define WINDOW_TITLE_TO_STICK_GAP 4 /* pixels */
179 /* gap between border of title window and text */
180 #define WINDOW_TITLE_TEXT_OFFSET 10 /* pixels */
181 /* minimal gap between border of title window and text */
182 #define MIN_WINDOW_TITLE_TEXT_OFFSET 2 /* pixels */
183 /* left and right padding for the text into under text area (MultiPixmap)*/
184 #define TBMP_TITLE_PADDING 5
185 /* minimal left and right area vs left/right of text/end (MultiPixmap) */
186 #define TBMP_MIN_RL_TITLE_LENGTH 7
187 /* maximum number of segemnts in a vector button */
188 #define MAX_TITLE_BUTTON_VECTOR_LINES 10000
190 /*** window placement ***/
191 /** MinOverlap(Percent)Placement **/
192 /** Now these values are configurable by using styles **/
193 /* The following factors represent the amount of area that these types of
194 * windows are counted as. For example, by default the area of ONTOP windows
195 * is counted 5 times as much as normal windows. So CleverPlacement will
196 * cover 5 times as much area of another window before it will cover an ONTOP
197 * window. To treat ONTOP windows the same as other windows, set this to 1.
198 * To really, really avoid putting windows under ONTOP windows, set this to a
199 * high value, say 1000. A value of 5 will try to avoid ONTOP windows if
200 * practical, but if it saves a reasonable amount of area elsewhere, it will
201 * place one there. The same rules apply for the other "AVOID" factors. */
202 /* With the advent of layers, the meaning of ONTOP in the following
203 explanation has changed to mean any window in a higher layer. */
204 #define PLACEMENT_AVOID_BELOW 0.05
205 #define PLACEMENT_AVOID_STICKY 1.0
206 #define PLACEMENT_AVOID_ONTOP 5
207 #define PLACEMENT_AVOID_ICON 10
208 #define PLACEMENT_AVOID_EWMH_STRUT 50
209 /* used in MinOverlap*Placement to forbid complete covering (99%, 95%
210 85% and 75%) of windows */
211 #define PLACEMENT_AVOID_COVER_99 12
212 #define PLACEMENT_AVOID_COVER_95 6
213 #define PLACEMENT_AVOID_COVER_85 4
214 #define PLACEMENT_AVOID_COVER_75 1
215 #define PLACEMENT_FALLBACK_CASCADE_STEP 20
216 /** Other placement related values **/
217 /* default string for position placement */
218 #define DEFAULT_PLACEMENT_POSITION_STRING "0 0"
219 #define DEFAULT_PLACEMENT_POS_CENTER_STRING "50-50w 50-50w"
220 #define DEFAULT_PLACEMENT_POS_MOUSE_STRING "m-50w m-50w"
222 /*** icon layout ***/
223 /* width of the relief around the icon and icon title */
224 #define ICON_RELIEF_WIDTH 2 /* pixels */
225 /* height of stick lines */
226 #define ICON_TITLE_STICK_HEIGHT WINDOW_TITLE_STICK_HEIGHT
227 /* vertical distance between stick lines */
228 #define ICON_TITLE_STICK_VERT_DIST WINDOW_TITLE_STICK_VERT_DIST
229 /* vertical offset for icon title */
230 #define ICON_TITLE_VERT_TEXT_OFFSET -3 /* pixels */
231 /* minimum width of stick lines */
232 #define ICON_TITLE_STICK_MIN_WIDTH 3 /* pixels */
233 /* number of blank pixels before and after a collapsed title */
234 #define ICON_TITLE_TEXT_GAP_COLLAPSED 1 /* pixels */
235 /* number of blank pixels before and after an expanded title */
236 #define ICON_TITLE_TEXT_GAP_EXPANDED 4 /* pixels */
237 /* extra blank pixels if the icon is sticky */
238 #define ICON_TITLE_TO_STICK_EXTRA_GAP 1 /* pixels */
239 /* minimum distance of icons in icon box */
240 #define MIN_ICON_BOX_DIST 3 /* pixels */
241 /* padding for the icon into its background */
242 #define ICON_BACKGROUND_PADDING 0 /* pixels */
244 /*** general keyboard shortcuts used in move, resize, ... ***/
245 #define DEFAULT_KDB_SHORTCUT_MOVE_DISTANCE 5 /* pixels */
246 #define KDB_SHORTCUT_MOVE_DISTANCE_SMALL 1 /* pixels */
247 #define KDB_SHORTCUT_MOVE_DISTANCE_BIG 100 /* pixels */
249 /*** movement ***/
250 #define DEFAULT_OPAQUE_MOVE_SIZE 5 /* percent of window area */
251 #define DEFAULT_SNAP_ATTRACTION 0 /* snap nothing */
252 #define DEFAULT_SNAP_ATTRACTION_MODE 0x3 /* snap all */
253 #define DEFAULT_SNAP_GRID_X 1 /* pixels */
254 #define DEFAULT_SNAP_GRID_Y 1 /* pixels */
256 /*** paging ***/
257 #define DEFAULT_EDGE_SCROLL 100 /* % of screen width/height */
258 /* Don't page if the pointer has moved for more than this many pixels between
259 * two samples */
260 #define MAX_PAGING_MOVE_DISTANCE 5 /* pixels */
261 #define DEFAULT_MOVE_DELAY 0 /* ms */
262 #define DEFAULT_RESIZE_DELAY -1 /* pixels */
263 #define DEFAULT_SCROLL_DELAY 0 /* ms */
265 /*** layers ***/
266 #define DEFAULT_BOTTOM_LAYER 2
267 #define DEFAULT_DEFAULT_LAYER 4
268 #define DEFAULT_TOP_LAYER 6
269 #define DEFAULT_ROOT_WINDOW_LAYER -1
271 /*** decorations ***/
272 /* The number of left and right buttons must be equal. A maximum of 32 buttons
273 * can be handled (16 left and 16 right). */
274 #define NR_LEFT_BUTTONS 5
275 #define NR_RIGHT_BUTTONS NR_LEFT_BUTTONS
276 #define NUMBER_OF_TITLE_BUTTONS (NR_LEFT_BUTTONS + NR_RIGHT_BUTTONS)
278 /*** window borders ***/
279 #define DEFAULT_BORDER_WIDTH 1 /* pixels */
280 #define DEFAULT_HANDLE_WIDTH 7 /* pixels */
281 #define MAX_BORDER_WIDTH 500 /* pixels */
282 #define MAX_HANDLE_WIDTH (MAX_BORDER_WIDTH)
284 /*** module configuration ***/
285 #define MAX_MODULE_ALIAS_LEN 250 /* bytes */
286 #define DEFAULT_MODULE_TIMEOUT 30 /* seconds */
287 #define MAX_MODULE_INPUT_TEXT_LEN 1000 /* bytes */
289 /*** FvwmConsole configuration */
290 /* Maximum time FvwmConsole waits for the client to connect. */
291 #define FVWMCONSOLE_CONNECTION_TO_SECS 60 /* seconds */
294 /*** misc ***/
295 #define DEFAULT_EMULATE_MWM False
296 #define DEFAULT_EMULATE_WIN False
298 #define DEFAULT_USE_ACTIVE_DOWN_BUTTONS True
299 #define DEFAULT_USE_INACTIVE_BUTTONS True
300 #define DEFAULT_USE_INACTIVE_DOWN_BUTTONS True
302 /*** Gradients ***/
303 #define MAX_GRADIENT_SEGMENTS 1000
304 #define MAX_GRADIENT_COLORS 10000
306 /*** Xinerama ***/
307 #define DEFAULT_XINERAMA_ENABLED True /* Xinerama on by default */
308 #define XINERAMA_CONFIG_STRING "XineramaConfig"
309 /* Replace with -1 to switch off "primary screen" concept by default */
310 #define DEFAULT_PRIMARY_SCREEN 0
312 /*** Very long window names (600000 characters or more) seem to hang the X
313 *** server. ***/
314 #define MAX_WINDOW_NAME_LEN 200 /* characters */
315 #define MAX_ICON_NAME_LEN 200 /* characters */
316 /* not tested if this hangs the server too */
317 #define MAX_RESOURCE_LEN 200 /* characters */
318 #define MAX_CLASS_LEN 200 /* characters */
320 /*** numbered window names ***/
321 #define MAX_WINDOW_NAME_NUMBER 999
322 #define MAX_WINDOW_NAME_NUMBER_DIGITS 3 /* number/digits of above number */
324 /* focus policy style defaults */
325 #define DEF_FP_FOCUS_ENTER 1
326 #define DEF_FP_UNFOCUS_LEAVE 1
327 #define DEF_FP_FOCUS_CLICK_CLIENT 0
328 #define DEF_FP_FOCUS_CLICK_DECOR 0
329 #define DEF_FP_FOCUS_BY_PROGRAM 1
330 #define DEF_FP_FOCUS_BY_FUNCTION 1
331 #define DEF_FP_WARP_POINTER_ON_FOCUS_FUNC 0
332 #define DEF_FP_LENIENT 0
333 #define DEF_FP_RAISE_FOCUSED_CLIENT_CLICK 0
334 #define DEF_FP_RAISE_UNFOCUSED_CLIENT_CLICK 1
335 #define DEF_FP_RAISE_FOCUSED_DECOR_CLICK 0
336 #define DEF_FP_RAISE_UNFOCUSED_DECOR_CLICK 0
337 #define DEF_FP_RAISE_FOCUSED_ICON_CLICK 0
338 #define DEF_FP_RAISE_UNFOCUSED_ICON_CLICK 0
339 /* use first three buttons by default */
340 #define DEF_FP_MOUSE_BUTTONS ( \
341 ((1 << 0) | (1 << 1) | (1 << 2)) & \
342 ((1 << NUMBER_OF_MOUSE_BUTTONS) - 1))
343 #define DEF_FP_MODIFIERS 0
344 #define DEF_FP_PASS_FOCUS_CLICK 1
345 #define DEF_FP_PASS_RAISE_CLICK 1
346 #define DEF_FP_IGNORE_FOCUS_CLICK_MOTION 0
347 #define DEF_FP_IGNORE_RAISE_CLICK_MOTION 0
348 #define DEF_FP_ALLOW_FUNC_FOCUS_CLICK 1
349 #define DEF_FP_ALLOW_FUNC_RAISE_CLICK 1
350 #define DEF_FP_GRAB_FOCUS 0
351 #define DEF_FP_GRAB_FOCUS_TRANSIENT 1
352 #define DEF_FP_OVERRIDE_GRAB_FOCUS 0
353 #define DEF_FP_RELEASE_FOCUS 0
354 #define DEF_FP_RELEASE_FOCUS_TRANSIENT 1
355 #define DEF_FP_OVERRIDE_RELEASE_FOCUS 0
356 #define DEF_FP_SORT_WINDOWLIST_BY 0
358 /* Function execution */
359 #define MAX_FUNCTION_DEPTH 512
361 /* Tips */
362 #define FTIPS_DEFAULT_PLACEMENT FTIPS_PLACEMENT_AUTO_UPDOWN
363 #define FTIPS_DEFAULT_JUSTIFICATION FTIPS_JUSTIFICATION_LEFT_UP
365 #define FTIPS_DEFAULT_PLACEMENT_OFFSET 3
366 #define FTIPS_DEFAULT_JUSTIFICATION_OFFSET 2
368 #define FTIPS_DEFAULT_BORDER_WIDTH 1
370 #endif /* _DEFAULTS_ */