Minor grammatical improvements to the documentation.
[fvwm.git] / doc / commands / Style.xml
blob264b3572ce02c610fc93c23ce6fb62cb9600a3e4
1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!-- $Id: Style.xml,v 1.13 2010/01/03 02:39:32 tadam Exp $ -->
3 <!DOCTYPE part PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
4   "../docbook-xml/docbookx.dtd"
6 <!ENTITY % myents SYSTEM "../fvwm.ent" >
7 %myents;
8 ]>
11 <section id='Style'>
12 <title>Style</title>
14 <cmdsynopsis>
15         <command>Style</command
16         ><arg choice='plain'
17                 ><replaceable>stylename</replaceable
18         ></arg
19         ><arg choice='plain' rep='repeat'
20                 ><replaceable>options</replaceable
21         ></arg>
22 </cmdsynopsis>
24 <para>The
25 <emphasis remap='B'>Style</emphasis>
26 command is used to set attributes of a window to values other than
27 the default or to set the window manager default styles.</para>
29 <para><replaceable>stylename</replaceable>
30 can be a window's name, class, visible name, or resource string.  It may contain
31 the wildcards '*' and '?', which are matched in the usual Unix
32 filename manner.  Multiple style options in a single
33 <emphasis remap='B'>Style</emphasis>
34 command are read from left to right as if they were issued one
35 after each other in separate commands.  A given style always
36 overrides all conflicting styles that have been issued earlier (or
37 further left on the same style line).</para>
39 <para>Note: windows that have no name (WM_NAME) are given a name of
40 "Untitled", and windows that do not have a class (WM_CLASS,
41 res_class) are given class "NoClass" and those that do not have a
42 resource (WM_CLASS, res_name) are given resource "NoResource".</para>
44 <para>If a window has the resource "fvwmstyle" set, the value of that
45 resource is used in addition to any window names when
46 selecting the style.</para>
48 <para><replaceable>options</replaceable>
49 is a comma separated list containing one or more of the
50 following keywords.  Each group of style names is separated by
51 slashes ('/').  The last style in these groups is the default.
52 <emphasis remap='I'>BorderWidth</emphasis>, <emphasis remap='I'>HandleWidth</emphasis>,
53 <emphasis remap='I'>!Icon</emphasis> / <emphasis remap='I'>Icon</emphasis>, <emphasis remap='I'>MiniIcon</emphasis>,
54 <emphasis remap='I'>IconBox</emphasis>, <emphasis remap='I'>IconGrid</emphasis>, <emphasis remap='I'>IconFill</emphasis>, <emphasis remap='I'>IconSize</emphasis>,
55 <emphasis remap='I'>!Title</emphasis> / <emphasis remap='I'>Title</emphasis>,
56 <emphasis remap='I'>TitleAtBottom</emphasis> / <emphasis remap='I'>TitleAtLeft</emphasis> / <emphasis remap='I'>TitleAtRight</emphasis> / <emphasis remap='I'>TitleAtTop</emphasis>,
57 <emphasis remap='I'>LeftTitleRotatedCW</emphasis> / <emphasis remap='I'>LeftTitleRotatedCCW</emphasis>,
58 <emphasis remap='I'>RightTitleRotatedCCW</emphasis> / <emphasis remap='I'>RightTitleRotatedCW</emphasis>,
59 <emphasis remap='I'>TopTitleRotated</emphasis> / <emphasis remap='I'>TopTitleNotRotated</emphasis>,
60 <emphasis remap='I'>BottomTitleRotated</emphasis> / <emphasis remap='I'>BottomTitleNotRotated</emphasis>,
61 <emphasis remap='I'>!UseTitleDecorRotation</emphasis> / <emphasis remap='I'>UseTitleDecorRotation</emphasis>,
62 <emphasis remap='I'>StippledTitle</emphasis> / <emphasis remap='I'>!StippledTitle</emphasis>,
63 <emphasis remap='I'>StippledIconTitle</emphasis> / <emphasis remap='I'>!StippledIconTitle</emphasis>,
64 <emphasis remap='I'>IndexedWindowName</emphasis> / <emphasis remap='I'>ExactWindowName</emphasis>,
65 <emphasis remap='I'>IndexedIconName</emphasis> / <emphasis remap='I'>ExactIconName</emphasis>,
66 <emphasis remap='I'>!Borders</emphasis> / <emphasis remap='I'>Borders</emphasis>,
67 <emphasis remap='I'>!Handles</emphasis> / <emphasis remap='I'>Handles</emphasis>,
68 <emphasis remap='I'>WindowListSkip</emphasis> / <emphasis remap='I'>WindowListHit</emphasis>,
69 <emphasis remap='I'>CirculateSkip</emphasis> / <emphasis remap='I'>CirculateHit</emphasis>,
70 <emphasis remap='I'>CirculateSkipShaded</emphasis> / <emphasis remap='I'>CirculateHitShaded</emphasis>,
71 <emphasis remap='I'>CirculateSkipIcon</emphasis> / <emphasis remap='I'>CirculateHitIcon</emphasis>,
72 <emphasis remap='I'>Layer</emphasis>,
73 <emphasis remap='I'>StaysOnTop</emphasis> / <emphasis remap='I'>StaysOnBottom</emphasis> / <emphasis remap='I'>StaysPut</emphasis>,
74 <emphasis remap='I'>Sticky</emphasis> / <emphasis remap='I'>Slippery</emphasis>,
75 <emphasis remap='I'>StickyAcrossPages</emphasis> / <emphasis remap='I'>!StickyAcrossPages</emphasis>,
76 <emphasis remap='I'>StickyAcrossDesks</emphasis> / <emphasis remap='I'>!StickyAcrossDesks</emphasis>,
77 <emphasis remap='I'>!StickyStippledTitle</emphasis> / <emphasis remap='I'>StickyStippledTitle</emphasis>,
78 <emphasis remap='I'>!StickyStippledIconTitle</emphasis> / <emphasis remap='I'>StickyStippledIconTitle</emphasis>,
79 <emphasis remap='I'>StartIconic</emphasis> / <emphasis remap='I'>StartNormal</emphasis>,
80 <emphasis remap='I'>Color</emphasis>, <emphasis remap='I'>ForeColor</emphasis>, <emphasis remap='I'>BackColor</emphasis>, <emphasis remap='I'>Colorset</emphasis>,
81 <emphasis remap='I'>HilightFore</emphasis>, <emphasis remap='I'>HilightBack</emphasis>, <emphasis remap='I'>HilightColorset</emphasis>,
82 <emphasis remap='I'>BorderColorset</emphasis>, <emphasis remap='I'>HilightBorderColorset</emphasis>,
83 <emphasis remap='I'>IconTitleColorset</emphasis>, <emphasis remap='I'>HilightIconTitleColorset</emphasis>,
84 <emphasis remap='I'>IconBackgroundColorset</emphasis>,
85 <emphasis remap='I'>IconTitleRelief</emphasis>, <emphasis remap='I'>IconBackgroundRelief</emphasis>, <emphasis remap='I'>IconBackgroundPadding</emphasis>,
86 <emphasis remap='I'>Font</emphasis>,
87 <emphasis remap='I'>IconFont</emphasis>,
88 <emphasis remap='I'>StartsOnDesk</emphasis> / <emphasis remap='I'>StartsOnPage</emphasis> / <emphasis remap='I'>StartsAnyWhere</emphasis>,
89 <emphasis remap='I'>StartsOnScreen</emphasis>,
90 <emphasis remap='I'>StartShaded</emphasis> / <emphasis remap='I'>!StartShaded</emphasis>,
91 <emphasis remap='I'>ManualPlacementHonorsStartsOnPage</emphasis> / <emphasis remap='I'>ManualPlacementIgnoresStartsOnPage</emphasis>,
92 <emphasis remap='I'>CaptureHonorsStartsOnPage</emphasis> / <emphasis remap='I'>CaptureIgnoresStartsOnPage</emphasis>,
93 <emphasis remap='I'>RecaptureHonorsStartsOnPage</emphasis> / <emphasis remap='I'>RecaptureIgnoresStartsOnPage</emphasis>,
94 <emphasis remap='I'>StartsOnPageIncludesTransients</emphasis> / <emphasis remap='I'>StartsOnPageIgnoresTransients</emphasis>,
95 <emphasis remap='I'>IconTitle</emphasis> / <emphasis remap='I'>!IconTitle</emphasis>,
96 <emphasis remap='I'>MwmButtons</emphasis> / <emphasis remap='I'>FvwmButtons</emphasis>,
97 <emphasis remap='I'>MwmBorder</emphasis> / <emphasis remap='I'>FvwmBorder</emphasis>,
98 <emphasis remap='I'>MwmDecor</emphasis> / <emphasis remap='I'>!MwmDecor</emphasis>,
99 <emphasis remap='I'>MwmFunctions</emphasis> / <emphasis remap='I'>!MwmFunctions</emphasis>,
100 <emphasis remap='I'>HintOverride</emphasis> / <emphasis remap='I'>!HintOverride</emphasis>,
101 <emphasis remap='I'>!Button</emphasis> / <emphasis remap='I'>Button</emphasis>,
102 <emphasis remap='I'>ResizeHintOverride</emphasis> / <emphasis remap='I'>!ResizeHintOverride</emphasis>,
103 <emphasis remap='I'>OLDecor</emphasis> / <emphasis remap='I'>!OLDecor</emphasis>,
104 <emphasis remap='I'>GNOMEUseHints</emphasis> / <emphasis remap='I'>GNOMEIgnoreHints</emphasis>,
105 <emphasis remap='I'>StickyIcon</emphasis> / <emphasis remap='I'>SlipperyIcon</emphasis>,
106 <emphasis remap='I'>StickyAcrossPagesIcon</emphasis> / <emphasis remap='I'>!StickyAcrossPagesIcon</emphasis>,
107 <emphasis remap='I'>StickyAcrossDesksIcon</emphasis> / <emphasis remap='I'>!StickyAcrossDesksIcon</emphasis>,
108 <emphasis remap='I'>ManualPlacement</emphasis> / <emphasis remap='I'>CascadePlacement</emphasis> / <emphasis remap='I'>MinOverlapPlacement</emphasis> /
109 <emphasis remap='I'>MinOverlapPercentPlacement</emphasis> / <emphasis remap='I'>TileManualPlacement</emphasis> /
110 <emphasis remap='I'>TileCascadePlacement</emphasis> / <emphasis remap='I'>PositionPlacement</emphasis>,
111 <emphasis remap='I'>MinOverlapPlacementPenalties</emphasis>,
112 <emphasis remap='I'>MinOverlapPercentPlacementPenalties</emphasis>,
113 <emphasis remap='I'>DecorateTransient</emphasis> / <emphasis remap='I'>NakedTransient</emphasis>,
114 <emphasis remap='I'>DontRaiseTransient</emphasis> / <emphasis remap='I'>RaiseTransient</emphasis>,
115 <emphasis remap='I'>DontLowerTransient</emphasis> / <emphasis remap='I'>LowerTransient</emphasis>,
116 <emphasis remap='I'>DontStackTransientParent</emphasis> / <emphasis remap='I'>StackTransientParent</emphasis>,
117 <emphasis remap='I'>SkipMapping</emphasis> / <emphasis remap='I'>ShowMapping</emphasis>,
118 <emphasis remap='I'>ScatterWindowGroups</emphasis> / <emphasis remap='I'>KeepWindowGroupsOnDesk</emphasis>,
119 <emphasis remap='I'>UseDecor</emphasis>,
120 <emphasis remap='I'>UseStyle</emphasis>,
121 <emphasis remap='I'>!UsePPosition</emphasis> / <emphasis remap='I'>NoPPosition</emphasis> / <emphasis remap='I'>UsePPosition</emphasis>,
122 <emphasis remap='I'>!UseUSPosition</emphasis>, <emphasis remap='I'>NoUSPosition</emphasis> / <emphasis remap='I'>UseUSPosition</emphasis>,
123 <emphasis remap='I'>!UseTransientPPosition</emphasis>, <emphasis remap='I'>NoTransientPPosition</emphasis> / <emphasis remap='I'>UseTransientPPosition</emphasis>,
124 <emphasis remap='I'>!UseTransientUSPosition</emphasis> / <emphasis remap='I'>NoTransientUSPosition</emphasis> / <emphasis remap='I'>UseTransientUSPosition</emphasis>,
125 <emphasis remap='I'>!UseIconPosition</emphasis> / <emphasis remap='I'>NoIconPosition</emphasis> / <emphasis remap='I'>UseIconPosition</emphasis>,
126 <emphasis remap='I'>Lenience</emphasis> / <emphasis remap='I'>!Lenience</emphasis>,
127 <emphasis remap='I'>ClickToFocus</emphasis> / <emphasis remap='I'>SloppyFocus</emphasis> /
128 <emphasis remap='I'>MouseFocus</emphasis>|<emphasis remap='I'>FocusFollowsMouse</emphasis> / <emphasis remap='I'>NeverFocus</emphasis>,
129 <emphasis remap='I'>ClickToFocusPassesClickOff</emphasis> / <emphasis remap='I'>ClickToFocusPassesClick</emphasis>,
130 <emphasis remap='I'>ClickToFocusRaisesOff</emphasis> / <emphasis remap='I'>ClickToFocusRaises</emphasis>,
131 <emphasis remap='I'>MouseFocusClickRaises</emphasis> / <emphasis remap='I'>MouseFocusClickRaisesOff</emphasis>,
132 <emphasis remap='I'>GrabFocus</emphasis> / <emphasis remap='I'>GrabFocusOff</emphasis>,
133 <emphasis remap='I'>GrabFocusTransientOff</emphasis> / <emphasis remap='I'>GrabFocusTransient</emphasis>,
134 <emphasis remap='I'>FPFocusClickButtons</emphasis>,
135 <emphasis remap='I'>FPFocusClickModifiers</emphasis>,
136 <emphasis remap='I'>!FPSortWindowlistByFocus</emphasis> / <emphasis remap='I'>FPSortWindowlistByFocus</emphasis>,
137 <emphasis remap='I'>FPClickRaisesFocused</emphasis> / <emphasis remap='I'>!FPClickRaisesFocused</emphasis>,
138 <emphasis remap='I'>FPClickDecorRaisesFocused</emphasis> / <emphasis remap='I'>!FPClickDecorRaisesFocused</emphasis>,
139 <emphasis remap='I'>FPClickIconRaisesFocused</emphasis> / <emphasis remap='I'>!FPClickIconRaisesFocused</emphasis>,
140 <emphasis remap='I'>!FPClickRaisesUnfocused</emphasis> / <emphasis remap='I'>FPClickRaisesUnfocused</emphasis>,
141 <emphasis remap='I'>FPClickDecorRaisesUnfocused</emphasis> / <emphasis remap='I'>!FPClickDecorRaisesUnfocused</emphasis>,
142 <emphasis remap='I'>FPClickIconRaisesUnfocused</emphasis> / <emphasis remap='I'>!FPClickIconRaisesUnfocused</emphasis>,
143 <emphasis remap='I'>FPClickToFocus</emphasis> / <emphasis remap='I'>!FPClickToFocus</emphasis>,
144 <emphasis remap='I'>FPClickDecorToFocus</emphasis> / <emphasis remap='I'>!FPClickDecorToFocus</emphasis>,
145 <emphasis remap='I'>FPClickIconToFocus</emphasis> / <emphasis remap='I'>!FPClickIconToFocus</emphasis>,
146 <emphasis remap='I'>!FPEnterToFocus</emphasis> / <emphasis remap='I'>FPEnterToFocus</emphasis>,
147 <emphasis remap='I'>!FPLeaveToUnfocus</emphasis> / <emphasis remap='I'>FPLeaveToUnfocus</emphasis>,
148 <emphasis remap='I'>!FPFocusByProgram</emphasis> / <emphasis remap='I'>FPFocusByProgram</emphasis>,
149 <emphasis remap='I'>!FPFocusByFunction</emphasis> / <emphasis remap='I'>FPFocusByFunction</emphasis>,
150 <emphasis remap='I'>FPFocusByFunctionWarpPointer</emphasis> / <emphasis remap='I'>!FPFocusByFunctionWarpPointer</emphasis>,
151 <emphasis remap='I'>FPLenient</emphasis> / <emphasis remap='I'>!FPLenient</emphasis>,
152 <emphasis remap='I'>!FPPassFocusClick</emphasis> / <emphasis remap='I'>FPPassFocusClick</emphasis>,
153 <emphasis remap='I'>!FPPassRaiseClick</emphasis> / <emphasis remap='I'>FPPassRaiseClick</emphasis>,
154 <emphasis remap='I'>FPIgnoreFocusClickMotion</emphasis> / <emphasis remap='I'>!FPIgnoreFocusClickMotion</emphasis>,
155 <emphasis remap='I'>FPIgnoreRaiseClickMotion</emphasis> / <emphasis remap='I'>!FPIgnoreRaiseClickMotion</emphasis>,
156 <emphasis remap='I'>!FPAllowFocusClickFunction</emphasis> / <emphasis remap='I'>FPAllowFocusClickFunction</emphasis>,
157 <emphasis remap='I'>!FPAllowRaiseClickFunction</emphasis> / <emphasis remap='I'>FPAllowRaiseClickFunction</emphasis>,
158 <emphasis remap='I'>FPGrabFocus</emphasis> / <emphasis remap='I'>!FPGrabFocus</emphasis>,
159 <emphasis remap='I'>!FPGrabFocusTransient</emphasis> / <emphasis remap='I'>FPGrabFocusTransient</emphasis>,
160 <emphasis remap='I'>FPOverrideGrabFocus</emphasis> / <emphasis remap='I'>!FPOverrideGrabFocus</emphasis>,
161 <emphasis remap='I'>FPReleaseFocus</emphasis> / <emphasis remap='I'>!FPReleaseFocus</emphasis>,
162 <emphasis remap='I'>!FPReleaseFocusTransient</emphasis> / <emphasis remap='I'>FPReleaseFocusTransient</emphasis>,
163 <emphasis remap='I'>FPOverrideReleaseFocus</emphasis> / <emphasis remap='I'>!FPOverrideReleaseFocus</emphasis>,
164 <emphasis remap='I'>StartsLowered</emphasis> / <emphasis remap='I'>StartsRaised</emphasis>,
165 <emphasis remap='I'>IgnoreRestack</emphasis> / <emphasis remap='I'>AllowRestack</emphasis>,
166 <emphasis remap='I'>FixedPosition</emphasis> / <emphasis remap='I'>VariablePosition</emphasis>,
167 <emphasis remap='I'>FixedUSPosition</emphasis> / <emphasis remap='I'>VariableUSPosition</emphasis>,
168 <emphasis remap='I'>FixedPPosition</emphasis> / <emphasis remap='I'>VariablePPosition</emphasis>,
169 <emphasis remap='I'>FixedSize</emphasis> / <emphasis remap='I'>VariableSize</emphasis>,
170 <emphasis remap='I'>FixedUSSize</emphasis> / <emphasis remap='I'>VariableUSSize</emphasis>,
171 <emphasis remap='I'>FixedPSize</emphasis> / <emphasis remap='I'>VariablePSize</emphasis>,
172 <emphasis remap='I'>!Closable</emphasis> / <emphasis remap='I'>Closable</emphasis>,
173 <emphasis remap='I'>!Iconifiable</emphasis> / <emphasis remap='I'>Iconifiable</emphasis>,
174 <emphasis remap='I'>!Maximizable</emphasis> / <emphasis remap='I'>Maximizable</emphasis>,
175 <emphasis remap='I'>!AllowMaximizeFixedSize</emphasis> / <emphasis remap='I'>AllowMaximizeFixedSize</emphasis>,
176 <emphasis remap='I'>IconOverride</emphasis> / <emphasis remap='I'>NoIconOverride</emphasis> / <emphasis remap='I'>NoActiveIconOverride</emphasis>,
177 <emphasis remap='I'>DepressableBorder</emphasis> / <emphasis remap='I'>FirmBorder</emphasis>,
178 <emphasis remap='I'>MinWindowSize</emphasis>,
179 <emphasis remap='I'>MaxWindowSize</emphasis>,
180 <emphasis remap='I'>IconifyWindowGroups</emphasis> / <emphasis remap='I'>IconifyWindowGroupsOff</emphasis>,
181 <emphasis remap='I'>ResizeOpaque</emphasis> / <emphasis remap='I'>ResizeOutline</emphasis>,
182 <emphasis remap='I'>BackingStore</emphasis> / <emphasis remap='I'>BackingStoreOff</emphasis> / <emphasis remap='I'>BackingStoreWindowDefault</emphasis>,
183 <emphasis remap='I'>Opacity</emphasis> / <emphasis remap='I'>ParentalRelativity</emphasis>,
184 <emphasis remap='I'>SaveUnder</emphasis> / <emphasis remap='I'>SaveUnderOff</emphasis>,
185 <emphasis remap='I'>WindowShadeShrinks</emphasis> / <emphasis remap='I'>WindowShadeScrolls</emphasis>,
186 <emphasis remap='I'>WindowShadeSteps</emphasis>,
187 <emphasis remap='I'>WindowShadeAlwaysLazy</emphasis> / <emphasis remap='I'>WindowShadeBusy</emphasis> / <emphasis remap='I'>WindowShadeLazy,</emphasis>
188 <emphasis remap='I'>EWMHDonateIcon</emphasis> / <emphasis remap='I'>EWMHDontDonateIcon</emphasis>,
189 <emphasis remap='I'>EWMHDonateMiniIcon</emphasis> / <emphasis remap='I'>EWMHDontDonateMiniIcon</emphasis>,
190 <emphasis remap='I'>EWMHMiniIconOverride</emphasis> / <emphasis remap='I'>EWMHNoMiniIconOverride</emphasis>,
191 <emphasis remap='I'>EWMHUseStackingOrderHints</emphasis> / <emphasis remap='I'>EWMHIgnoreStackingOrderHints</emphasis>,
192 <emphasis remap='I'>EWMHIgnoreStateHints</emphasis> / <emphasis remap='I'>EWMHUseStateHints</emphasis>,
193 <emphasis remap='I'>EWMHIgnoreStrutHints</emphasis> / <emphasis remap='I'>EWMHUseStrutHints</emphasis>,
194 <emphasis remap='I'>EWMHIgnoreWindowType</emphasis> / <emphasis remap='I'>!EWMHIgnoreWindowType</emphasis>,
195 <emphasis remap='I'>EWMHMaximizeIgnoreWorkingArea</emphasis> / <emphasis remap='I'>EWMHMaximizeUseWorkingArea</emphasis> /
196 <emphasis remap='I'>EWMHMaximizeUseDynamicWorkingArea</emphasis>,
197 <emphasis remap='I'>EWMHPlacementIgnoreWorkingArea</emphasis> / <emphasis remap='I'>EWMHPlacementUseWorkingArea</emphasis> /
198 <emphasis remap='I'>EWMHPlacementUseDynamicWorkingArea</emphasis>,
199 <emphasis remap='I'>MoveByProgramMethod</emphasis>,
200 <emphasis remap='I'>Unmanaged</emphasis>,
201 <emphasis remap='I'>State</emphasis>,
202 <emphasis remap='I'>SnapGrid</emphasis>,
203 <emphasis remap='I'>SnapAttraction</emphasis>,
204 <emphasis remap='I'>EdgeMoveDelay</emphasis>,
205 <emphasis remap='I'>EdgeResizeDelay</emphasis>.
206 <emphasis remap='I'>EdgeMoveResistance</emphasis>,
207 <emphasis remap='I'>InitialMapCommand</emphasis>
208 </para>
211 <!--  +++++++++++++++ general notes -->
212 <para>In the above list some options are listed as
213 style-option/opposite-style-option.  The opposite-style-option for
214 entries that have them describes the fvwm default behavior and can
215 be used if you want to change the fvwm default behavior.</para>
217 <!--  +++++++++++++++ focus policy -->
218 <section id="focus_policy">
219 <title>Focus policy</title>
221 <para><fvwmopt cmd="Style" opt="ClickToFocus"/>
222 instructs fvwm to give the focus to a window when it is clicked
223 in.  The default
224 <fvwmopt cmd="Style" opt="MouseFocus"/>
225 (or its alias
226 <fvwmopt cmd="Style" opt="FocusFollowsMouse"/>)
227 tells fvwm to give a window the focus as soon as the pointer
228 enters the window, and take it away when the pointer leaves the
229 window.
230 <fvwmopt cmd="Style" opt="SloppyFocus"/>
231 is similar, but doesn't give up the focus if the pointer leaves
232 the window to pass over the root window or a ClickToFocus window
233 (unless you click on it, that is), which makes it possible to move
234 the mouse out of the way without losing focus.  A window with the
235 style
236 <fvwmopt cmd="Style" opt="NeverFocus"/>
237 never receives the focus.  This is useful for modules like
238 <fvwmref mod="FvwmButtons"/>.
239 for example.
240 Note:  Once any of the "FP..." styles has been used, the defaults
241 that come with the basic focus policies are not restored when the
242 latter are used again.  For example, once !FPGrabFocus has been
243 used, using ClickToFocus does not restore FPGrabFocus.</para>
245 <para>The focus model can be augmented with several additional options.
246 In fvwm-2.5.3 and later, there are a large number of advanced
247 options beginning with "FP" or "!FP".  These options shall replace
248 the older options one day and are described first.  Using any of
249 these new options may limit compatibility with older releases.  In
250 general, options beginning with "FP" turn a feature on, while
251 those beginning with "!FP" turn it off.</para>
253 </section>
261 <section id="window_focus">
262 <title>Focusing the window</title>
264 <para>With
265 <fvwmopt cmd="Style" opt="FPEnterToFocus"/>,
266 when the pointer enters a window it receives focus.</para>
268 <para>With
269 <fvwmopt cmd="Style" opt="FPLeaveToUnfocus"/>
270 a window loses focus when the pointer leaves it.</para>
272 <para>With
273 <fvwmopt cmd="Style" opt="FPClickToFocus"/>,
274 <fvwmopt cmd="Style" opt="FPClickDecorToFocus"/> or
275 <fvwmopt cmd="Style" opt="FPClickIconToFocus"/>,
276 a window receives focus when the inside of the window or the
277 decorations or its icon is clicked.</para>
279 <para>The
280 <fvwmopt cmd="Style" opt="FPFocusByProgram"/>
281 style allows windows to take the focus themselves.</para>
283 <para>The
284 !<fvwmopt cmd="Style" opt="FPFocusByFunction"/>
285 style forbids that a window receives the focus via the
286 <fvwmref cmd="Focus"/> and <fvwmref cmd="FlipFocus"/>
287 commands.</para>
289 <para>The
290 <fvwmopt cmd="Style" opt="FPFocusByFunctionWarpPointer"/>
291 style controls if the pointer is warped to a selected window
292 when the
293 <fvwmref cmd="Focus"/>
294 command is used.</para>
296 <para><fvwmopt cmd="Style" opt="FPLenient"/>
297 allows focus on windows that do not want it, like
298 <fvwmref mod="FvwmPager"/>
299 or xclock.</para>
301 <para>The
302 <fvwmopt cmd="Style" opt="FPFocusClickButtons"/>
303 style takes a list of mouse buttons that can be clicked to focus
304 or raise a window when the appropriate style is used.  The default
305 is to use the first three buttons ("123").</para>
307 <para>The
308 <fvwmopt cmd="Style" opt="FPFocusClickModifiers"/>
309 style takes a list of modifier keys just like the
310 <fvwmref cmd="Key"/>
311 command.  The exact combination of modifier keys must be pressed
312 for the click to focus or raise a window to work.  The default is
313 to use no modifiers ("N").</para>
315 <para>With the
316 <fvwmopt cmd="Style" opt="FPPassFocusClick"/>
317 style, the click that was used to focus a window is passed to
318 the application.</para>
320 <para>With the
321 <fvwmopt cmd="Style" opt="FPAllowFocusClickFunction"/>
322 style, the click that was used to focus a window can also
323 trigger a normal action that was bound to the window with the
324 <fvwmref cmd="Mouse"/>
325 command).</para>
327 <para>If the
328 <fvwmopt cmd="Style" opt="FPIgnoreFocusClickMotion"/>
329 style is used, clicking in a window and then dragging the pointer
330 with the button held down does not count as the click to focus the
331 window.  Instead, the application processes these events
332 normally.  This is useful to select text in a terminal window with
333 the mouse without raising the window.  However, mouse bindings on
334 the client window are not guaranteed to work anymore (see
335 <fvwmref cmd="Mouse"/>
336 command).  This style forces the initial click to be
337 passed to the application.  The distance that the pointer must be
338 moved to trigger this is controlled by the
339 <fvwmref cmd="MoveThreshold"/>
340 command.</para>
342 <para>The
343 <fvwmopt cmd="Style" opt="FPSortWindowlistByFocus"/> and !<fvwmopt cmd="Style" opt="FPSortWindowlistByFocus"/>
344 styles control whether the internal window list is sorted in the
345 order the windows were focused or in the order they were created.
346 The latter is the default for
347 <emphasis remap='I'>ClickToFocus</emphasis> and <emphasis remap='I'>SloppyFocus</emphasis>.</para>
350 <para><emphasis remap='B'>Clicking the window to raise</emphasis></para>
352 <para>The styles
353 <fvwmopt cmd="Style" opt="FPClickRaisesFocused"/>, <fvwmopt cmd="Style" opt="FPClickDecorRaisesFocused"/> and
354 <fvwmopt cmd="Style" opt="FPClickIconRaisesFocused"/>
355 allow to raise the window when the interior or the decorations or
356 the icon of the window is clicked while the window is already
357 focused.</para>
359 <para>The styles
360 <fvwmopt cmd="Style" opt="FPClickRaisesUnfocused"/>, <fvwmopt cmd="Style" opt="FPClickDecorRaisesUnfocused"/> and
361 <fvwmopt cmd="Style" opt="FPClickIconRaisesUnfocused"/>
362 allow to raise the window when the interior or the decorations or
363 the icon of the window is clicked while the window is not yet
364 focused.</para>
366 <para>With the
367 <fvwmopt cmd="Style" opt="FPPassRaiseClick"/>
368 style, the click that was used to raise the window is passed to
369 the application.</para>
371 <para>With the
372 <fvwmopt cmd="Style" opt="FPAllowRaiseClickFunction"/>
373 style, the click that was used to raise the window can also
374 trigger a normal action that was bound to the window with the
375 <fvwmref cmd="Mouse"/>
376 command.</para>
378 <para>If the
379 <fvwmopt cmd="Style" opt="FPIgnoreRaiseClickMotion"/>
380 style is used, clicking in a window and then dragging the pointer
381 with the button held down does not count as the click to raise the
382 window.  Instead, the application processes these events
383 normally.  This is useful to select text in a terminal window with
384 the mouse without raising the window.  However, mouse bindings on
385 the client window are not guaranteed to work anymore (see
386 <fvwmref cmd="Mouse"/>
387 command.  Note that this style forces that the initial click is
388 passed to the application.  The distance that the pointer must be
389 moved to trigger this is controlled by the
390 <fvwmref cmd="MoveThreshold"/>
391 command.</para>
393 <para><emphasis remap='B'>Grabbing the focus when a new window is created</emphasis></para>
395 <para>New normal or transient windows with the
396 <fvwmopt cmd="Style" opt="FPGrabFocus"/> or <fvwmopt cmd="Style" opt="FPGrabFocusTransient"/>
397 style automatically receive the focus when they are created.
398 <fvwmopt cmd="Style" opt="FPGrabFocus"/>
399 is the default for windows with the
400 <emphasis remap='I'>ClickToFocus</emphasis>
401 style.  Note that even if these styles are disabled, the
402 application may take the focus itself.  Fvwm can not prevent this.</para>
404 <para>The
405 <fvwmopt cmd="Style" opt="OverrideGrabFocus"/>
406 style instructs fvwm to never take away the focus from such a
407 window via the
408 <fvwmopt cmd="Style" opt="GrabFocus"/> or <fvwmopt cmd="Style" opt="GrabFocusTransient"/>
409 styles.  This can be useful if you like to have transient windows
410 receive the focus immediately, for example in a web browser, but
411 not while you are working in a terminal window or a text
412 processor.</para>
414 <para>The above three styles are accompanied by
415 <fvwmopt cmd="Style" opt="FPReleaseFocus"/>, <fvwmopt cmd="Style" opt="FPReleaseFocusTransient"/> and
416 <fvwmopt cmd="Style" opt="FPOverrideReleaseFocus"/>.
417 These control if the focus is returned to another window when the
418 window is closed.  Otherwise no window or the window under the
419 pointer receives the focus.</para>
421 <para><fvwmopt cmd="Style" opt="ClickToFocusPassesClickOff"/> and <fvwmopt cmd="Style" opt="ClickToFocusPassesClick"/>
422 controls whether a mouse click to focus a window is sent to the
423 application or not.  Similarly,
424 <fvwmopt cmd="Style" opt="ClickToFocusRaisesOff"/>/<fvwmopt cmd="Style" opt="MouseFocusClickRaisesOff"/>
426 <fvwmopt cmd="Style" opt="ClickToFocusRaises"/>/<fvwmopt cmd="Style" opt="MouseFocusClickRaises"/>
427 control if the window is raised (but depending on the focus
428 model).</para>
430 <para>Note: in fvwm versions prior to
431 2.5.3, the "Click..." options applied only to windows with
432 <emphasis remap='I'>ClickToFocus</emphasis>
433 while the "Mouse..." options applied to windows with a different
434 focus policy.  This is no longer the case.</para>
436 <para>The old
437 <fvwmopt cmd="Style" opt="GrabFocus"/>
438 style is equivalent to using
439 <emphasis remap='I'>FPGrabFocus</emphasis> + <emphasis remap='I'>FPReleaseFocus</emphasis>.</para>
441 <para>The old
442 <fvwmopt cmd="Style" opt="GrabFocusTransient"/>
443 style is equivalent to using
444 <fvwmopt cmd="Style" opt="FPGrabFocusTransient"/> + <fvwmopt cmd="Style" opt="FPReleaseFocusTransient"/>.</para>
446 <para><fvwmopt cmd="Style" opt="Lenience"/>
447 is equivalent to the new style
448 <emphasis remap='I'>FPLenient</emphasis>.</para>
450 </section>
453 <!--  +++++++++++++++ styles affecting the window title -->
455 <section id="window_title">
456 <title>Window title</title>
458 <para>The
459 <fvwmopt cmd="Style" opt="Title"/> and !Title
460 options determine if the window has a title-bar or not.  By
461 default all windows have a title-bar.
462 <fvwmopt cmd="Style" opt="NoTitle"/>
463 is equivalent to
464 <emphasis remap='I'>!Title</emphasis>
465 but is deprecated.</para>
467 <para>Windows with the
468 <fvwmopt cmd="Style" opt="TitleAtBottom"/>, <fvwmopt cmd="Style" opt="TitleAtLeft"/> or <fvwmopt cmd="Style" opt="TitleAtRight"/>
469 style have a title-bar below, to the left or to the right of the
470 window instead of above as usual.  The
471 <fvwmopt cmd="Style" opt="TitleAtTop"/>
472 style restores the default placement.  Even if the window has the
473 <emphasis remap='I'>!Title</emphasis>
474 style set, this affects the
475 <fvwmref cmd="WindowShade"/>
476 command.  Please check the
477 <fvwmref cmd="WindowShade"/>
478 command for interactions between that command and these styles.
479 Titles on the left or right side of the windows are augmented by
480 the following styles:</para>
482 <para>Normally, the text in titles on the left side of a window is
483 rotated counterclockwise by 90 degrees from the normal upright
484 position and 90 degrees clockwise for titles on the right side.
485 It can also be rotated in the opposite directions with
486 <fvwmopt cmd="Style" opt="LeftTitleRotatedCW"/> if <fvwmopt cmd="Style" opt="TitleAtLeft"/>
487 is used, and with
488 <fvwmopt cmd="Style" opt="RightTitleRotatedCCW"/> if <fvwmopt cmd="Style" opt="TitleAtRight"/>
489 is used.  The defaults can be restored with
490 <fvwmopt cmd="Style" opt="LeftTitleRotatedCCW"/> and <fvwmopt cmd="Style" opt="RightTitleRotatedCW"/>.
491 A normal horizontal text may be rotated as well with
492 <fvwmopt cmd="Style" opt="TopTitleRotated"/> if <emphasis remap='I'>TitleAtTop</emphasis>
493 is used, and with
494 <fvwmopt cmd="Style" opt="BottomTitleRotated"/> if <fvwmopt cmd="Style" opt="TitleAtBottom"/>
495 is used.  The defaults can be restored with
496 <fvwmopt cmd="Style" opt="TopTitleNotRotated"/> and <fvwmopt cmd="Style" opt="BottomTitleNotRotated"/>.</para>
498 <para>By default the title bar decoration defined using the
499 <fvwmref cmd="TitleStyle"/>
500 command is rotated following the title text rotation (see the
501 previous paragraph). This can be disabled by using the
502 !<fvwmopt cmd="Style" opt="UseTitleDecorRotation"/>
503 style.
504 <emphasis remap='I'>UseTitleDecorRotation</emphasis>
505 reverts back to the default.</para>
507 <para>With the
508 <fvwmopt cmd="Style" opt="StippledTitle"/>
509 style, titles are drawn with the same effect that is usually
510 reserved for windows with the
511 <fvwmopt cmd="Style" opt="Sticky"/>, <fvwmopt cmd="Style" opt="StickyAcrossPages"/> or <fvwmopt cmd="Style" opt="StickyAcrossDesks"/>
512 style.
513 <emphasis remap='I'>!StippledTitle</emphasis>
514 reverts back to normal titles.
515 <fvwmopt cmd="Style" opt="StippledTitleOff"/>
516 is equivalent to
517 <emphasis remap='I'>!StippledTitle</emphasis>
518 but is deprecated.</para>
520 <para><fvwmopt cmd="Style" opt="Color"/>
521 takes two arguments.  The first is the window-label text color and
522 the second is the window decorations normal background color. The
523 two colors are separated with a slash.  If the use of a slash
524 causes problems then the separate
525 <fvwmopt cmd="Style" opt="ForeColor"/> and <fvwmopt cmd="Style" opt="BackColor"/>
526 options can be used.</para>
528 <para><fvwmref cmd="Colorset"/>
529 takes the colorset number as its sole argument and overrides the
530 colors set by
531 <emphasis remap='I'>Color</emphasis>.
532 Instead, the corresponding colors from the given colorset are
533 used.  Note that all other features of a colorset are not used.
534 Use the
535 <fvwmref cmd="Colorset"/>
536 decoration style in the
537 <fvwmref cmd="TitleStyle"/> and <fvwmopt cmd="Style" opt="ButtonStyle"/>
538 command for that.
539 To stop using the colorset, the colorset number is omitted.</para>
541 <para>The
542 <fvwmopt cmd="Style" opt="HilightFore"/>, <fvwmopt cmd="Style" opt="HilightBack"/> and <fvwmopt cmd="Style" opt="HilightColorset"/>
543 style options work exactly like
544 <fvwmopt cmd="Style" opt="ForeColor"/>, <fvwmopt cmd="Style" opt="BackColor"/> and <emphasis remap='I'>Colorset</emphasis>
545 but are used only if the window has the focus.  These styles
546 replace the old commands
547 <fvwmref cmd="HilightColor"/> and <fvwmopt cmd="Style" opt="HilightColorset"/>.</para>
549 <para><fvwmopt cmd="Style" opt="BorderColorset"/>
550 takes the colorset number as its sole argument and overrides the
551 colors set by
552 <emphasis remap='I'>Color</emphasis> or <emphasis remap='I'>Colorset</emphasis>.
553 for the window border.  To stop using a colorset, the argument is
554 omitted.</para>
556 <para>The
557 <fvwmopt cmd="Style" opt="HilightBorderColorset"/>
558 style option works similarly to
559 <emphasis remap='I'>BorderColorset</emphasis>
560 but is used when the window has the focus.</para>
562 <para>!<fvwmopt cmd="Style" opt="IconTitle"/>
563 disables displaying icon labels while the opposite style
564 <emphasis remap='I'>IconTitle</emphasis>
565 enables icon labels (default behaviour).
566 <fvwmopt cmd="Style" opt="NoIconTitle"/>
567 is equivalent to
568 <emphasis remap='I'>!IconTitle</emphasis>
569 but is deprecated.</para>
571 <para><fvwmopt cmd="Style" opt="IconTitleColorset"/>
572 takes the colorset number as its sole argument and overrides the
573 colors set by
574 <emphasis remap='I'>Color</emphasis> or <emphasis remap='I'>Colorset</emphasis>.
575 To stop using this colorset, the argument is omitted.</para>
577 <para><fvwmopt cmd="Style" opt="HilightIconTitleColorset"/>
578 takes the colorset number as its sole argument and overrides the
579 colors set by
580 <fvwmref cmd="HilightColor"/> or <emphasis remap='I'>HilightColorset</emphasis>.
581 To stop using this colorset, the argument is omitted.</para>
583 <para><fvwmopt cmd="Style" opt="IconBackgroundColorset"/>
584 takes the colorset number as its sole argument and uses it to set
585 a background for the icon picture. By default the icon picture is
586 not drawn onto a background image. To restore the default, the
587 argument is omitted.</para>
589 <para><fvwmopt cmd="Style" opt="IconTitleRelief"/>
590 takes one numeric argument that may be between -50 and +50 pixels
591 and defines the thickness of the 3D relief drawn around the icon
592 title. With negative values the icon title gets a pressed in
593 look. The default is 2 and it is restored if the argument is
594 omitted.</para>
596 <para><fvwmopt cmd="Style" opt="IconBackgroundRelief"/>
597 takes one numeric argument that may be between -50 and +50 pixels
598 and defines the thickness of the 3D relief drawn around the icon
599 picture background (if any). With negative values the icon
600 background gets a pressed in look.  The default is 2 and it is
601 restored if the argument is omitted.</para>
603 <para><fvwmopt cmd="Style" opt="IconBackgroundPadding"/>
604 takes one numeric argument that may be between 0 and 50 pixels and
605 defines the amount of free space between the relief of the icon
606 background picture (if any) and the icon picture. The default is 2
607 and it is restored if the argument is omitted.</para>
609 <para>The
610 <fvwmopt cmd="Style" opt="Font"/> and <fvwmopt cmd="Style" opt="IconFont"/>
611 options take the name of a font as their sole argument. This font
612 is used in the window or icon title.  By default the font given in
614 <fvwmref cmd="DefaultFont"/>
615 command is used.  To revert back to the default, use the style
616 without the name argument.  These styles replace the older
617 <fvwmref cmd="WindowFont"/> and <fvwmopt cmd="Style" opt="IconFont"/>
618 commands.</para>
620 <para>The
621 <fvwmopt cmd="Style" opt="IndexedWindowName"/>
622 style causes fvwm to use window titles in the form</para>
624 <programlisting>
625 name (i)
626 </programlisting>
628 <para>where
629 <fvwmopt cmd="Style" opt="name"/>
630 is the exact window name and
631 <fvwmopt cmd="Style" opt="i"/>
632 is an integer which represents the
633 <emphasis remap='I'>i th</emphasis>
634 window with
635 <emphasis remap='I'>name</emphasis>
636 as window name.
637 <fvwmopt cmd="Style" opt="ExactWindowName"/>
638 restores the default which is to use the exact window name.
639 <fvwmopt cmd="Style" opt="IndexedIconName"/>
641 <fvwmopt cmd="Style" opt="ExactIconName"/>
642 work the same as
643 <emphasis remap='I'>IndexedWindowName</emphasis>
645 <emphasis remap='I'>ExactWindowName</emphasis>
646 styles but for the icon titles.</para>
648 </section>
652 <!--  +++++++++++++++ styles affecting title buttons -->
654 <section id="title_buttons">
655 <title>Title buttons</title>
657 <para><fvwmopt cmd="Style" opt="Button"/> and !<fvwmopt cmd="Style" opt="Button"/>
658 take a numeric argument which is the number of the title-bar
659 button which is to be shown or omitted.
660 <fvwmopt cmd="Style" opt="NoButton"/>
661 is equivalent to
662 <emphasis remap='I'>!Button</emphasis>
663 but is deprecated.</para>
665 <para><fvwmopt cmd="Style" opt="MwmButtons"/>
666 makes the
667 <fvwmref cmd="Maximize"/>
668 button look pressed-in when the window is maximized.  See the
669 <fvwmref cmd="ButtonStyle" opt="MwmDecorMax"/>
670 flag in
671 <fvwmref cmd="ButtonStyle"/>
672 for more information.  To switch this style off again, use the
673 <fvwmref mod="FvwmButtons"/>
674 style.</para>
676 </section>
680 <!--  +++++++++++++++ styles affecting borders -->
682 <section id="borders">
683 <title>Borders</title>
685 <para>!<fvwmopt cmd="Style" opt="Borders"/>
686 suppresses the window border (but not the title) completely.  The
687 <emphasis remap='I'>Borders</emphasis>
688 style enables them again.  Without borders, all other styles
689 affecting window borders are meaningless.</para>
691 <para><fvwmopt cmd="Style" opt="MwmBorder"/>
692 makes the 3D bevel more closely match Mwm's.
693 <fvwmopt cmd="Style" opt="FvwmBorder"/>
694 turns off the previous option.</para>
696 <para>With the
697 !<fvwmopt cmd="Style" opt="Handles"/>
698 style, the window does not get the handles in the window corners
699 that are commonly used to resize it.  With
700 <emphasis remap='I'>!Handles</emphasis>,
701 the width from the
702 <emphasis>BorderWidth</emphasis>
703 style is used.  By default, or if
704 <emphasis remap='I'>Handles</emphasis>
705 is specified, the width from the
706 <emphasis>HandleWidth</emphasis>
707 style is used.
708 <fvwmopt cmd="Style" opt="NoHandles"/>
709 is equivalent to
710 <emphasis remap='I'>!Handles</emphasis>
711 but is deprecated.</para>
713 <para>
714 <fvwmopt cmd="Style" opt="HandleWidth"/>
715 takes a numeric argument which is the width of the border to place
716 the window if it does have resize-handles. Using HandleWidth
717 without an argument restores the default.</para>
719 <para>
720 <fvwmopt cmd="Style" opt="BorderWidth"/>
721 takes a numeric argument which is the width of the border to place
722 the window if it does not have resize-handles.  It is used only if
724 <emphasis remap='I'>!Handles</emphasis>
725 style is specified too. Using BorderWidth
726 without an argument restores the default.</para>
728 <para><fvwmopt cmd="Style" opt="DepressableBorder"/>
729 makes the border parts of the window decoration look sunken in
730 when a button is pressed over them.  This can be disabled again
731 with the
732 <fvwmopt cmd="Style" opt="FirmBorder"/>
733 style.</para>
735 </section>
739 <!--  +++++++++++++++ icons, shading, maximizing, movement, resizing -->
741 <section id="icons_shading_maximising_movement_resizing">
742 <title>Icons, shading, maximizing, movement, resizing</title>
744 <para><fvwmopt cmd="Style" opt="Icon"/>
745 takes an (optional) unquoted string argument which is the icon
746 bitmap or pixmap to use. Icons specified this way override pixmap
747 icons, but not icon windows or the ewmh icon, provided by the
748 client in the application (with the WM_HINTS property or with the
749 ewmh _NET_WM_ICON property).  The
750 <fvwmopt cmd="Style" opt="IconOverride"/>
751 style changes the behavior to override any client-provided icons;
753 <fvwmopt cmd="Style" opt="NoIconOverride"/>
754 style changes the behavior to not override any client-provided
755 icons; the default overriding behavior can be activated with the
756 <fvwmopt cmd="Style" opt="NoActiveIconOverride"/>
757 style.  With this style, fvwm uses application provided icons if
758 the icon is changed but uses the icon provided in the
759 configuration file until then.</para>
761 <para>There is one exception to these rules, namely</para>
763 <programlisting>
764 Style * Icon unknown.xpm
765 </programlisting>
767 <para>doesn't force the unknown.xpm icon on every window, it just sets
768 the default icon like the DefaultIcon command. If you really want
769 all windows to have the same icon, you can use</para>
771 <programlisting>
772 Style ** Icon unknown.xpm
773 </programlisting>
775 <para>If the
776 <fvwmopt cmd="Style" opt="NoIcon"/>
777 attribute is set then the specified window simply disappears when
778 it is iconified.  The window can be recovered through the
779 window-list.  If
780 <emphasis remap='I'>Icon</emphasis>
781 is set without an argument then the
782 <emphasis remap='I'>NoIcon</emphasis>
783 attribute is cleared but no icon is specified.  An example which
784 allows only the
785 <emphasis remap='B'>FvwmPager</emphasis>
786 module icon to exist:</para>
788 <programlisting>
789 Style * NoIcon
790 Style FvwmPager Icon
791 </programlisting>
794 <para><fvwmopt cmd="Style" opt="IconBox"/>
795 takes no argument, four numeric arguments (plus optionally a
796 screen specification), an X11 geometry string or the string
797 "none":</para>
799 <programlisting>
800 IconBox<emphasis remap='I'> [</emphasis>screen scr-spec<emphasis remap='I'>] </emphasis>l t r b
801 </programlisting>
803 <para>or</para>
805 <programlisting>
806 IconBox geometry
807 </programlisting>
809 <para>Where
810 <fvwmopt cmd="Style" opt="l"/>
811 is the left coordinate,
812 <fvwmopt cmd="Style" opt="t"/>
813 is the top,
814 <fvwmopt cmd="Style" opt="r"/>
815 is right and
816 <fvwmopt cmd="Style" opt="b"/>
817 is bottom.  Negative coordinates indicate distance from the right
818 or bottom of the screen.
819 If the first argument is the word
820 <fvwmopt cmd="Style" opt="screen"/>,
822 <fvwmopt cmd="Style" opt="scr-spec"/>
823 argument specifies the Xinerama screen on which the IconBox is
824 defined.  It can be the usual screen Xinerama specification, 'p',
825 &acute;c', 'g', a screen number or the additional 'w' for the screen
826 where the window center is located.  This is only useful with
827 multiple Xinerama screens.
828 The "l t r b" specification is more flexible than an X11 geometry.
829 For example:</para>
831 <programlisting>
832 IconBox -80 240 -1 -1
833 </programlisting>
835 <para>defines a box that is 80 pixels wide from the right edge,
836 240 pixels down from the top, and continues to the bottom of
837 the screen.</para>
839 <para>Perhaps it is easier to use is an X11
840 geometry string though:</para>
842 <programlisting>
843 IconBox 1000x70-1-1
844 </programlisting>
846 <para>places an 1000 by 70 pixel icon box on the bottom of the screen
847 starting in the lower right  hand corner of the screen.
848 One way to figure out a geometry like this is to use a window
849 that resizes in pixel increments, for example, xv.
850 Then resize and place the xv window where you want the iconbox.
851 Then use FvwmIdent to read the windows geometry.
852 The icon box is a region of the screen
853 where fvwm attempts to put icons for any matching window, as long
854 as they do not overlap other icons.
855 Multiple icon boxes can be
856 defined as overflow areas.  When the first icon box is full, the
857 second one is filled.  All the icon boxes for one style must be
858 defined in one
859 <emphasis remap='B'>Style</emphasis>
860 command.  For example:</para>
862 <programlisting>
863 Style * IconBox -80 240 -1 -1, \
864         IconBox 1000x70-1-1
865 </programlisting>
867 <para>A Style command with the IconBox option replaces any icon box
868 defined previously by another Style command for the same style.
869 Thats why the backslash in the previous example is required.</para>
871 <para>Note: The geometry for the icon box command takes the additional
872 screen specifier "@w" in case a Xinerama setup is used.  This
873 designates the screen where the window center is located.  The
874 additional screen specifier is not allowed anywhere else.</para>
876 <para>If you never define an icon box, or you fill all the icon boxes,
877 fvwm has a default icon box that covers the screen, it fills top
878 to bottom, then left to right, and has an 80x80 pixel grid.  To
879 disable all but the default icon box you can use IconBox without
880 arguments in a separate
881 <emphasis remap='B'>Style</emphasis>
882 command.  To disable all icon boxes including the default icon
883 box, the argument "none" can be specified.</para>
885 <para>Hint: You can auto arrange your icons in the icon box with a
886 simple fvwm function.  Put the "DeiconifyAndRearrange" function
887 below in your configuration file:</para>
889 <programlisting>
890 <fvwmref cmd="AddToFunc"/> DeiconifyAndRearrange
891  + C <fvwmref cmd="Iconify"/> off
892  + C <fvwmref cmd="All"/> (CurrentPage, Iconic) <fvwmref cmd="PlaceAgain"/> Icon
893 </programlisting>
895 <para>And then replace all places where you call the
896 <fvwmref cmd="Iconify"/>
897 command to de-iconify an icon with a call to the new
898 function.  For example replace</para>
900 <programlisting>
901 <fvwmref cmd="AddToFunc"/> IconFunc
902  + C <fvwmref cmd="Iconify"/> off
903  + M <fvwmref cmd="Raise"/>
904  + M <fvwmref cmd="Move"/>
905  + D <fvwmref cmd="Iconify"/> off
907 <fvwmref cmd="Mouse"/> 1 I A <fvwmref cmd="Iconify"/> off
908 </programlisting>
910 <para>with</para>
912 <programlisting>
913 <fvwmref cmd="AddToFunc"/> IconFunc
914  + C DeiconifyAndRearrange
915  + M <fvwmref cmd="Raise"/>
916  + M <fvwmref cmd="Move"/>
917  + D DeiconifyAndRearrange
919 <fvwmref cmd="Mouse"/> 1 I A DeiconifyAndRearrange
920 </programlisting>
922 <para><fvwmopt cmd="Style" opt="IconGrid"/>
923 takes 2 numeric arguments greater than zero.</para>
925 <programlisting>
926 <emphasis remap='I'>IconGrid x y</emphasis>
927 </programlisting>
929 <para>Icons are placed in an icon box by stepping through the icon box
930 using the
931 <fvwmopt cmd="Style" opt="x"/> and <fvwmopt cmd="Style" opt="y"/>
932 values for the icon grid, looking for a free space. The default
933 grid is 3 by 3 pixels which gives a tightly packed appearance. To
934 get a more regular appearance use a grid larger than your largest
935 icon. Use the
936 <emphasis>IconSize</emphasis>
937 definition to clip an icon to a maximum size. An
938 <emphasis remap='I'>IconGrid</emphasis>
939 definition must follow the
940 <emphasis remap='B'>IconBox</emphasis>
941 definition that it applies to:</para>
943 <programlisting>
944 Style * IconBox -80x240-1-1, IconGrid 90 90
945 </programlisting>
947 <para><fvwmopt cmd="Style" opt="IconFill"/>
948 takes 2 arguments.</para>
950 <programlisting>
951 IconFill <emphasis remap='I'>Bottom Right</emphasis>
952 </programlisting>
954 <para>Icons are placed in an icon box by stepping through the icon box
955 using these arguments to control the direction the box is filled
956 in. By default the direction is left to right, then top to bottom.
957 This would be expressed as:</para>
959 <programlisting>
960 IconFill left top
961 </programlisting>
963 <para>To fill an icon box in columns instead of rows, specify the
964 vertical direction (top or bottom) first. The directions can be
965 abbreviated or spelled out as follows: "t", "top", "b", "bot",
966 "bottom", "l", "lft", "left", "r", "rgt", "right". An
967 <emphasis remap='B'>IconFill</emphasis>
968 definition must follow the
969 <emphasis remap='B'>IconBox</emphasis>
970 definition that it applies to:</para>
972 <programlisting>
973 Style * IconBox -80x240-1-1, IconFill b r
974 </programlisting>
976 <para>
977 <fvwmopt cmd="Style" opt="IconSize"/>
978 sets limits on the size of an icon image.  Both user-provided
979 and application-provided icon images are affected.</para>
981 <programlisting>
982 IconSize<emphasis remap='I'> [ </emphasis>width<emphasis remap='I'> </emphasis>height<emphasis remap='I'> [ </emphasis>maxwidth<emphasis remap='I'> </emphasis>maxheight<emphasis remap='I'> ] ]</emphasis>
983 </programlisting>
985 <para>All arguments are measured in pixels.  When all four arguments are
986 passed to
987 <emphasis>IconSize,</emphasis>
988 <emphasis>width</emphasis>
990 <emphasis>height</emphasis>
991 represent the minimum size of an icon, and
992 <emphasis>maxwidth</emphasis>
994 <emphasis>maxheight</emphasis>
995 represent the maximum size of an icon.  Icon images that are smaller
996 than the minimum size are padded.  Icon images that are bigger than
997 the maximum size are clipped.</para>
999 <para>If only two arguments are passed to
1000 <emphasis remap='I'>IconSize,</emphasis>
1001 <emphasis remap='I'>width</emphasis>
1003 <emphasis remap='I'>height</emphasis>
1004 represent the absolute size of an icon.  Icons covered by this style
1005 are padded or clipped to achieve the given size.</para>
1007 <para>If no arguments are specified, the default values are used for each
1008 dimension.  This effectively places no limits on the size of an icon.</para>
1010 <para>The value of "-1" can be used in place of any of the arguments to
1011 specify the default value for that dimension.</para>
1013 <para>Note that application-provided icon windows are not affected.</para>
1015 <para><fvwmopt cmd="Style" opt="MiniIcon"/>
1016 specifies a pixmap to use as the miniature icon for the
1017 window. This miniature icon can be drawn in a title-bar button
1018 (see
1019 <fvwmref cmd="ButtonStyle"/>),
1020 and can be used by various fvwm modules
1021 (<fvwmref mod="FvwmWinList"/>, <fvwmref mod="FvwmIconMan"/> and <fvwmref mod="FvwmTaskBar"/>).
1022 It takes the name of a pixmap as an argument.</para>
1024 <para><fvwmopt cmd="Style" opt="WindowShadeShrinks"/> and <fvwmopt cmd="Style" opt="WindowShadeScrolls"/>
1025 control if the contents of a window that is being shaded with the
1026 <fvwmref cmd="WindowShade"/>
1027 command are scrolled (default) or if they stay in place.  The
1028 shrinking mode is a bit faster</para>
1030 <para>The
1031 <fvwmopt cmd="Style" opt="WindowShadeSteps"/>
1032 option selects the number of steps for animation when shading a
1033 window with
1034 <fvwmref cmd="WindowShade"/>.
1035 It takes one number as its argument.  If the number has a trailing
1036 '<fvwmopt cmd="Style" opt="p"/>'
1037 it sets the number of pixels to use as the step size instead of
1038 a fixed number of steps.  0 disables the animation.  This happens
1039 too if the argument is omitted or invalid.</para>
1041 <para>The
1042 <fvwmref cmd="WindowShade"/>
1043 command has two modes of operation: busy and lazy shading.  Busy
1044 shading can be 50% slower than lazy shading, but the latter can
1045 look strange under some conditions, for example, if the window
1046 borders, buttons or the title are filled with a tiled pixmap.
1047 Also, the window handles are not drawn in lazy mode and the border
1048 relief may only be drawn partially right before the window reaches
1049 the shaded state or tight after leaves the unshaded state. By
1050 default, fvwm uses lazy mode if there are no bad visual effects
1051 (not counting the window handles) and busy mode otherwise.  Use
1053 <emphasis remap='I'>WindowShadeAlwaysLazy  or  WindowShadeBusy</emphasis>
1054 to force using the lazy or busy mode.  The default setting is
1055 restored with
1056 <fvwmopt cmd="Style" opt="WindowShadeLazy"/>.</para>
1058 <para><fvwmopt cmd="Style" opt="ResizeOpaque"/>
1059 instructs fvwm to resize the corresponding windows with their
1060 contents visible instead of using an outline.  Since this causes
1061 the application to redraw frequently it can be quite slow and make
1062 the window flicker excessively, depending on the amount of
1063 graphics the application redraws.  The
1064 <fvwmopt cmd="Style" opt="ResizeOutline"/>
1065 style (default) negates the
1066 <emphasis remap='I'>ResizeOpaque</emphasis>
1067 style.  Many applications do not like their windows being resized
1068 opaque, e.g. XEmacs, Netscape or terminals with a pixmap
1069 background. If you do not like the result, do not use the
1070 <emphasis remap='I'>ResizeOpaque</emphasis>
1071 style for these windows.  To exempt certain windows from opaque
1072 resizing you could use these lines in your configuration file:</para>
1074 <programlisting>
1075 Style * ResizeOpaque
1076 Style rxvt ResizeOutline
1077 Style emacs ResizeOutline
1078 </programlisting>
1080 <para><fvwmopt cmd="Style" opt="Sticky"/>
1081 makes the window sticky, i.e. it is always visible on each page
1082 and each desk.  The opposite style,
1083 <fvwmopt cmd="Style" opt="Slippery"/>
1084 reverts back to the default.</para>
1086 <para>
1087 <fvwmopt cmd="Style" opt="StickyIcon"/>
1088 makes the window sticky when it's iconified.  It de-iconifies on
1089 top the active desktop.
1090 <fvwmopt cmd="Style" opt="SlipperyIcon"/>
1091 reverts back to the default.
1092 </para>
1094 <para><fvwmopt cmd="Style" opt="StickyAcrossPages"/> and <fvwmopt cmd="Style" opt="StickyAcrossPagesIcon"/>
1095 work like
1096 <emphasis remap='I'>Sticky</emphasis> and <emphasis remap='I'>StickyIcon</emphasis>,
1097 but stick the window only across pages, not desks while
1098 <emphasis remap='I'>StickyAcrossDesks  and  StickyAcrossDesksIcon</emphasis>
1099 works the other way round.</para>
1101 <para>Windows that have been marked as
1102 <emphasis remap='I'>Sticky</emphasis> or
1103 <fvwmopt cmd="Style" opt="StickyAcrossDesks"/> or
1104 <emphasis remap='I'>StickyAcrossPages</emphasis> will have stipples drawn
1105 on the titlebar.  This can be negated with the
1106 !<fvwmopt cmd="Style" opt="StickyStippledTitle"/>
1107 style.  The style
1108 <emphasis remap='I'>StickyStippledTitle</emphasis>
1109 puts back the stipples where that window has also been marked as
1110 <emphasis remap='I'>Sticky</emphasis>.  Note that this is the default style for
1111 <emphasis remap='I'>Sticky</emphasis> windows.  Sticky icons will have stipples drawn
1112 on the icon title. This can be disabled in the same way with the
1113 !<fvwmopt cmd="Style" opt="StickyStippledIconTitle"/>
1114 style.</para>
1116 <para>Windows with the
1117 <fvwmopt cmd="Style" opt="StartIconic"/>
1118 style are shown as icons initially.  Note that some applications
1119 counteract that by deiconifying themselves.  The default is to not
1120 iconify windows and can be set with the
1121 <fvwmopt cmd="Style" opt="StartNormal"/>
1122 style.</para>
1124 <para><fvwmopt cmd="Style" opt="StickyIcon"/>
1125 makes the window sticky when it's iconified.  It de-iconifies on
1126 top the active desktop.
1127 <fvwmopt cmd="Style" opt="SlipperyIcon"/>
1128 reverts back to the default.</para>
1130 <para><fvwmopt cmd="Style" opt="StickyIconPage"/>
1131 works like
1132 <emphasis remap='I'>StickyIcon</emphasis>,
1133 but sticks the icon only across pages, not desks while
1134 <fvwmopt cmd="Style" opt="StickyIconDesk"/>
1135 works the other way round.</para>
1137 <para><fvwmopt cmd="Style" opt="StippledIconTitle"/>
1138 works like
1139 <emphasis remap='I'>StippledTitle</emphasis>
1140 in that it draws stipples on the titles of icons but doesn't
1141 make the icon sticky.</para>
1143 <para><fvwmopt cmd="Style" opt="IgnoreRestack"/>
1144 makes fvwm ignore attempts of clients to raise or lower their own
1145 windows.  By default, the opposite style,
1146 <fvwmopt cmd="Style" opt="AllowRestack"/>
1147 is active.</para>
1149 <para><fvwmopt cmd="Style" opt="FixedPosition"/> and <fvwmopt cmd="Style" opt="FixedUSPosition"/>
1150 make fvwm ignore attempts of the user to move the window.  It is
1151 still possible to move the window by resizing it.  To allow the
1152 user to move windows, use the
1153 <fvwmopt cmd="Style" opt="VariablePosition"/> or <fvwmopt cmd="Style" opt="VariableUSPosition"/>
1154 style.</para>
1156 <para><fvwmopt cmd="Style" opt="FixedSize"/> and <fvwmopt cmd="Style" opt="FixedUSSize"/>
1157 make fvwm ignore attempts of the user to resize the window.  To
1158 allow the user to resize windows, use the
1159 <fvwmopt cmd="Style" opt="VariableSize"/> or <fvwmopt cmd="Style" opt="VariableUSSize"/>
1160 style.</para>
1162 <para><fvwmopt cmd="Style" opt="FixedPPosition"/> and <fvwmopt cmd="Style" opt="FixedPSize"/>
1163 make fvwm ignore attempts of the program to move or resize its
1164 windows.  To allow this kind of actions, use the
1165 <fvwmopt cmd="Style" opt="VariablePPosition"/> or <fvwmopt cmd="Style" opt="VariablePSize"/>
1166 style.  These styles may sometimes affect the initial placement
1167 and dimensions of new windows (depending on the application).  If
1168 windows are created at strange places, try either the
1169 <fvwmopt cmd="Style" opt="VariablePPosition"/> or <fvwmopt cmd="Style" opt="NoPPosition"/>
1170 styles.  The
1171 <fvwmopt cmd="Style" opt="FixedPSize"/>
1172 style may screw up window dimensions for some applications.  Do Not
1173 use this style in this case.</para>
1175 <para><fvwmopt cmd="Style" opt="MoveByProgramMethod"/>
1176 affects how fvwm reacts to requests by the application to move its
1177 windows.  By default, fvwm tries to detect which method to use,
1178 but it sometimes detects the wrong method.  You may come across a
1179 window that travels across the screen by a few pixels when the
1180 application resizes it, moves to a screen border with the frame
1181 decorations off screen, that remembers its position for the next
1182 time it starts but appears in a slighly shifted position, or that
1183 attepmts to become full screen but has the.  Try out both options,
1184 <fvwmopt cmd="Style" opt="UseGravity"/> and <fvwmopt cmd="Style" opt="IgnoreGravity"/>
1185 on the window (and that window only) and see if that helps.  By
1186 default, fvwm uses the
1187 <fvwmopt cmd="Style" opt="AutoDetect"/>
1188 method.  Once the method was detected, it is never changed again.
1189 As long as fvwm can not detect the proper method, it uses
1190 <fvwmopt cmd="Style" opt="IgnoreGravity"/>.
1191 To force fvwm to retry the detection, use one of the other two
1192 options first and then use
1193 <emphasis remap='I'>AutoDetect</emphasis>
1194 again.</para>
1196 <para>Note:  This option was introduced to alleviate a problem with the
1197 <acronym>ICCCM</acronym> specification.  The <acronym>ICCCM</acronym> clearly states that the
1198 <fvwmopt cmd="Style" opt="UseGravity"/>
1199 option should be used, but traditionally applications ignored this
1200 rule.</para>
1202 <para><fvwmopt cmd="Style" opt="Closable"/>
1203 enables the functions
1204 <fvwmref cmd="Close"/>,
1205 <fvwmref cmd="Delete"/>
1207 <fvwmref cmd="Destroy"/>
1208 to be performed on the windows. This is on by default.
1209 The opposite,
1210 <emphasis remap='I'>!Closable</emphasis>,
1211 inhibits the window to be closed.</para>
1213 <para><fvwmopt cmd="Style" opt="Iconifiable"/>
1214 enables the function
1215 <fvwmref cmd="Iconify"/>
1216 to be performed on the windows.
1217 This is on by default.
1218 The opposite,
1219 <emphasis remap='I'>!Iconifiable</emphasis>,
1220 inhibits the window from being iconified.</para>
1222 <para><fvwmopt cmd="Style" opt="Maximizable"/>
1223 enables the function
1224 <fvwmref cmd="Maximize"/>
1225 to be performed on the windows.
1226 This is on by default.
1227 The opposite,
1228 <emphasis remap='I'>!Maximizable</emphasis>,
1229 inhibits the window from being maximized.</para>
1231 <para><fvwmopt cmd="Style" opt="AllowMaximizeFixedSize"/>
1232 enables the function
1233 <fvwmref cmd="Maximize"/>
1234 to be performed on windows that are not resizable, unless
1235 maximization has been disabled either using the style
1236 <emphasis remap='I'>!Maximizable</emphasis>
1237 or through WM hints.  This is on by default.  The opposite,
1238 <emphasis remap='I'>!AllowMaximizeFixedSize</emphasis>,
1239 inhibits all windows that are not resizable from being maximized.</para>
1241 <para><fvwmopt cmd="Style" opt="ResizeHintOverride"/>
1242 instructs fvwm to ignore the program supplied minimum and maximum
1243 size as well as the resize step size (the character size in many
1244 applications).
1245 This can be handy for broken applications that refuse to be
1246 resized.  Do not use it if you do not need it.  The default
1247 (opposite) style is
1248 <fvwmopt cmd="Style" opt="NoResizeOverride"/>.</para>
1250 <para><emphasis remap='I'>MinWindowSize  [ width [ p ]  height [ p ] ]</emphasis>
1251 Tells fvwm the minimum width and height of a window.  The values
1252 are the percentage of the total screen area.  If the letter
1253 '<emphasis remap='I'>p</emphasis>'
1254 is appended to either of the values, the numbers are interpreted
1255 as pixels. This command is useful for certain versions of xemacs
1256 which freak out if their windows become too small.  If you omit
1257 he parameters or their values are invalid, both limits are set to
1258 0 pixels (which is the default value).</para>
1260 <para><emphasis remap='I'>MaxWindowSize  [ width [ p ]  height [ p ] ]</emphasis>
1261 Tells fvwm the maximum width and height of a window.  The values
1262 are the percentage of the total screen area.  If the letter
1263 '<emphasis remap='I'>p</emphasis>'
1264 is appended to either of the values, the numbers are interpreted
1265 as pixels. This command is useful to force large application
1266 windows to be fully visible.  Neither
1267 <emphasis remap='I'>height</emphasis> nor <emphasis remap='I'>width</emphasis>
1268 may be less than 100 pixels.  If you omit the parameters or their
1269 values are invalid, both limits are set to 32767 pixels (which is
1270 the default).</para>
1272 <para>With
1273 <fvwmopt cmd="Style" opt="IconifyWindowGroups"/>
1274 all windows in the same window group are iconified and deiconified
1275 at once when any window in the group is (de)iconified.
1276  The default is
1277 <fvwmopt cmd="Style" opt="IconifyWindowGroupsOff"/>,
1278 which disables this behavior.  Although a number of applications
1279 use the window group hint, it is rarely used in a proper way, so
1280 it is probably best to use
1281 <emphasis remap='I'>IconifyWindowGroups</emphasis>
1282 only for selected applications.</para>
1284 <para>The option <fvwmopt cmd="Style" opt="SnapAttraction"/>
1285 affects interactive window movement:  If during an interactive
1286 move the window or icon comes within
1287 <replaceable>proximity</replaceable> pixels of another the window
1288 or icon, it is moved to make the borders adjoin.  The default of 0
1289 means that no snapping happens.  Calling this command without
1290 arguments turns off snap attraction and restores the default
1291 behavior.  Please refer also to the <fvwmref cmd="SnapGrid"/>
1292 command.</para>
1294 <para>The second argument determined is optional and may be set to one of the
1295 five following values: With <replaceable>All</replaceable> both icons and
1296 windows snap to other windows and other icons.
1297 <replaceable>SameType</replaceable> lets windows snap only to windows, and
1298 icons snap only to icons. With <replaceable>Windows</replaceable> windows snap
1299 only to other windows. Similarly with <replaceable>Icons</replaceable> icons
1300 snap only to other icons. With <replaceable>None</replaceable> no snapping
1301 takes place. This option can be useful in conjunction with the following
1302 argument if you only want to snap against the screen edges. The default
1303 behavior is <emphasis remap='I'>All</emphasis>.</para>
1305 <para>The third and last optional argument may be set to one of the
1306 four following values: 
1307 <itemizedlist>
1308 <listitem><para>With <replaceable>Screen</replaceable> the
1309 already snapping icons or windows, which is controlled by the second
1310 argument, will snap now also to the screen edges.</para></listitem>
1311 <listitem><para><replaceable>ScreenWindows</replaceable> snaps
1312 only windows to the screen edges.</para></listitem>
1313 <listitem><para><replaceable>ScreenIcons</replaceable> snaps
1314 only icons to the screen edges.</para></listitem>
1315 <listitem><para><replaceable>ScreenAll</replaceable> snaps
1316 windows and icons to the screen edges.</para></listitem>
1317 </itemizedlist></para>
1319 <para>The option <fvwmopt cmd="Style" opt="SnapGrid"/> defines an
1320 invisible grid on the screen.  During an interactive move a window
1321 or icon is positioned such that its location (top left corner) is
1322 coincident with the nearest grid point. The default
1323 <replaceable>x-grid-size</replaceable> and
1324 <replaceable>y-grid-size</replaceable> setting are both 1, which
1325 is effectively no grid all.</para>
1327 <para>An interactive move with both <fvwmref cmd="SnapGrid"/> and
1328 <fvwmref cmd="Style" opt="SnapAttraction"/> results in the window
1329 being moved to be adjacent to the nearest window border (if within
1330 snap proximity) or grid position. The window moves the shortest
1331 distance possible to satisfy both <fvwmref cmd="SnapGrid"/> and
1332 <fvwmref cmd="Style" opt="SnapAttraction"/>.  Note that the x and y
1333 coordinates are not coupled.  For example, a window may snap to
1334 another window on the x axis while snapping to a grid point on the
1335 y axis.  Using this style without arguments reinstates the default
1336 settings.</para>
1338 <para>The styles <fvwmopt cmd="Style" opt="EdgeMoveDelay"/> and
1339 <fvwmopt cmd="Style" opt="EdgeResizeDelay"/> tells how hard it
1340 should be to change the desktop viewport by moving or resizing a
1341 window over the edge of the screen. The parameter tells how many
1342 milliseconds the pointer must spend on the screen edge before fvwm
1343 moves the viewport.  The command <fvwmref cmd="EdgeScroll"/>
1344 determines how far the viewport is scrolled.  If -1 is given as
1345 the delay, page flipping is disabled completely.  The defaults are
1346 no delay for moving (0) and no flipping for resizing (-1).  Using
1347 these styles without any argument restores the default
1348 settings.  Note that, with</para>
1350 <programlisting>
1351 <fvwmref cmd="EdgeScroll"/> 0 0
1352 </programlisting>
1354 <para>it is still possible to move or resize windows across the
1355 edge of the current screen.  See also <fvwmref
1356 cmd="EdgeThickness"/>.</para>
1358 <para>The option <fvwmopt cmd="Style" opt="EdgeMoveResistance"/>
1359 makes it easier to place a window directly adjacent to the
1360 screen's or xinerama screen's border.  It takes one or two
1361 parameters.  The first parameter tells how many pixels over the
1362 edge of the screen a window's edge must move before it actually
1363 moves partially off the screen.  The optional second parameter
1364 does the same as the first, but for individual Xinerama screens.
1365 If omitted, the value of the first parameter is assumed for this
1366 type of movement.  Set the second parameter to 0 to zero to ignore
1367 individual xinerama screen edges.  Note that the center of the
1368 window being moved determines the xinerama screen on which the
1369 window should be kept.  Both values are 0 by default.  To restore
1370 the defaults, the option <fvwmopt cmd="Style"
1371 opt="EdgeMoveResistance"/> can be used without any
1372 parameters.</para>
1374 <para>The option <fvwmopt cmd="Style" opt="InitialMapCommand"/> allows
1375 for any valid fvwm command or function to run when the window is 
1376 initially mapped by fvwm.  Example:</para>
1378 <programlisting>
1379 <fvwmref cmd="Style"/> MyWindow StartsOnPage 0 0, InitialMapCommand Iconify
1380 </programlisting>
1381 </section>
1383 <para>This would hence place the window called <emphasis>MyWindow</emphasis>
1384 on page 0 0 for the current desk, and immediately run the <fvwmref cmd="Iconify"/>
1385 command on that window.</para>
1388 <section id="window_manager_placement">
1389 <title>Window Manager placement</title>
1391 <para>Applications can place windows at a particular spot on the screen
1392 either by window manager hints or a geometry specification.  When
1393 they do neither, then the window manager steps in to find a place
1394 for the window.  Fvwm knows several ways to deal with this
1395 situation. The default is
1396 <emphasis>TileCascadePlacement</emphasis>.</para>
1398 <para>
1399 <fvwmopt cmd="Style" opt="PositionPlacement"/>
1400 [<emphasis remap='I'>Center</emphasis>|<emphasis remap='I'>UnderMouse</emphasis>|<emphasis remap='I'>move-arguments</emphasis>]
1401 When used without an argument, new windows are placed in the
1402 top left corner of the display.  With the argument
1403 <emphasis remap='I'>Center</emphasis>,
1404 all new window appear at the center of the screen, and with
1405 <emphasis remap='I'>UnderMouse</emphasis>,
1406 windows are centered under the mouse pointer where possible.  If the window
1407 is unable to fit on the screen because the pointer is at the edge of the
1408 screen, then the window is forced on-screen using this option.  If any other
1409 <emphasis remap='I'>move-arguments</emphasis>
1410 are given, they are interpreted exactly as the
1411 <emphasis remap='B'>Move</emphasis>
1412 command does (with the exception that references to the current
1413 window position do not work as the window has not been placed
1414 yet).</para>
1417 <para><fvwmopt cmd="Style" opt="CascadePlacement"/>
1418 automatically place new windows in a cascading fashion.</para>
1420 <para>
1421 <fvwmopt cmd="Style" opt="TileCascadePlacement"/>
1422 automatically places new windows in a smart location - a location
1423 in which they do not overlap any other windows on the screen.  If
1424 no such position can be found
1425 <emphasis remap='I'>CascadePlacement</emphasis>
1426 is used as a fall-back method.</para>
1428 <para><fvwmopt cmd="Style" opt="TileManualPlacement"/>
1429 This is the same as
1430 <emphasis remap='I'>TileCascadePlacement</emphasis>,
1431 but uses
1432 <emphasis>ManualPlacement</emphasis>
1433 as the fall-back method.</para>
1435 <para><fvwmopt cmd="Style" opt="MinOverlapPlacement"/>
1436 automatically places new windows in a location in which the
1437 overlapping area in pixels of other windows is minimized.
1438 By default this placement policy tries to avoid
1439 overlapping icons and windows on higher layers.
1440 This can be configured with the
1441 <fvwmopt cmd="Style" opt="MinOverlapPlacementPenalties"/>
1442 style.</para>
1444 <para><fvwmopt cmd="Style" opt="MinOverlapPercentPlacement"/>
1445 is similar to
1446 <emphasis remap='I'>MinOverlapPlacement</emphasis>
1447 but tries to minimize the overlapped percentages of other windows
1448 instead of the overlapped area in pixels.  This placement policy
1449 tries to avoid covering other windows completely and tries even
1450 harder not to cover small windows.
1451 This can be configured with the
1452 <emphasis remap='I'>MinOverlapPlacementPenalties</emphasis>
1454 <fvwmopt cmd="Style" opt="MinOverlapPercentPlacementPenalties"/>
1455 styles.</para>
1457 <para><emphasis remap='I'>MinOverlapPlacementPenalties</emphasis>
1458 takes at most 6 positive or null decimal arguments:</para>
1460 <programlisting>
1461 <emphasis remap='I'>normal ontop icon sticky below strut</emphasis>
1462 </programlisting>
1464 <para>if trailing arguments are missing the default is used which is:</para>
1466 <programlisting>
1467 1 5 10 1 0.05 50
1468 </programlisting>
1470 <para>To reset this style to the default values, prefix it with a '!'. This style configures the
1471 <emphasis remap='I'>MinOverlapPlacement</emphasis> and <emphasis remap='I'>MinOverlapPercentPlacement</emphasis>
1472 placement policy.
1474 <emphasis>normal</emphasis>
1475 factor affects normal windows, the
1476 <emphasis>ontop</emphasis>
1477 factor affects windows with a greater layer than the window being
1478 placed, the
1479 <emphasis>icon</emphasis>
1480 factor affects icons, the
1481 <emphasis>sticky</emphasis>
1482 factor affects sticky windows, the
1483 <emphasis>below</emphasis>
1484 factor affects windows with a smaller layer than the window being
1485 placed, the
1486 <emphasis>strut</emphasis>
1487 factor affects the complement of the <acronym>EWMH</acronym> working area if the
1488 window being placed has the
1489 <fvwmopt cmd="Style" opt="EWMHPlacementUseWorkingArea"/>
1490 style and windows with an <acronym>EWMH</acronym> strut hint (i.e., a "please do not
1491 cover me" hint) if the window being placed has the
1492 <fvwmopt cmd="Style" opt="EWMHPlacementUseDynamicWorkingArea"/>
1493 style.  These factors represent the amount of area that these
1494 types of windows (or area) are counted as, when a new window is
1495 placed.  For example, by default the area of ontop windows is
1496 counted 5 times as much as normal windows.  So
1497 <emphasis remap='I'>MinOverlapPlacement</emphasis> and <emphasis remap='I'>MinOverlapPercentPlacement</emphasis>
1498 covers 5 times as much area of another window before it will
1499 cover an ontop window.  To treat ontop windows the same as other
1500 windows, set this to 1.  To really, really avoid putting windows
1501 under ontop windows, set this to a high value, say 1000. This
1502 style affects the window already mapped and not the window which
1503 is currently placed. There is one exception to this rule: in the
1504 case of the window being placed has the
1505 <emphasis remap='I'>EWMHPlacementUseWorkingArea</emphasis>
1506 style the
1507 <emphasis remap='I'>strut</emphasis>
1508 factor affects the placed window.</para>
1510 <para><emphasis remap='I'>MinOverlapPercentPlacementPenalties</emphasis>
1511 takes at most 4 positive or null integer arguments:</para>
1513 <programlisting>
1514 <emphasis remap='I'>cover_100 cover_95 cover_85 cover_75</emphasis>
1515 </programlisting>
1517 <para>if trailing arguments are missing the defaults are used
1518 which are:</para>
1520 <programlisting>
1521 12 6 4 1
1522 </programlisting>
1524 <para>To reset this style to the default values, prefix it with a '!'.
1526 This style affects the
1527 <emphasis remap='I'>MinOverlapPercentPlacement</emphasis>
1528 placement policy and is similar to the
1529 <emphasis remap='I'>MinOverlapPlacementPenalties</emphasis>
1530 style. The
1531 <emphasis>cover_xx</emphasis>
1532 factor is used when the window being placed covers at least
1533 <emphasis>xx</emphasis>
1534 percent of the window. This factor is added to the factor
1535 determined by the
1536 <emphasis remap='I'>MinOverlapPlacementPenalties</emphasis>
1537 style.</para>
1539 <para>
1540 <fvwmopt cmd="Style" opt="ManualPlacement"/>
1541 (aka active placement). The user is required to place every new
1542 window manually.  The window only shows as a rubber band until a
1543 place is selected manually. The window is placed when a mouse
1544 button or any key except
1545 <fvwmopt cmd="Style" opt="Escape"/>
1546 is pressed.  Escape aborts manual placement which places the
1547 window in the top left corner of the screen. If mouse button 2 is
1548 pressed during the initial placement of a window (respectively
1549 <fvwmopt cmd="Style" opt="Shift"/>
1550 and mouse button 1 in case Mwm emulation has been enabled with the
1551 <fvwmref cmd="Emulate"/>
1552 command), the user is asked to resize the window too.</para>
1554 <para>It is possible to define buttons usable to place windows with the
1555 <fvwmref cmd="Move"/>
1556 command and the special context 'P' for placement (see
1557 <fvwmref cmd="Move"/>
1558 command). However, you can't redefine the way to also resize the
1559 window other than the way it is affected by the
1560 <fvwmref cmd="Emulate"/>
1561 command. The button used for placing the window can be checked with
1563 <fvwmopt cmd="Style" opt="PlacedByButton"/>
1564 condition (see
1565 <fvwmref cmd="Current"/>
1566 command).</para>
1568 <para>Example:</para>
1570 <programlisting>
1571 Style * ManualPlacement
1573 *FvwmEvent: PassID
1574 *FvwmEvent: add_window GrowDownFunc
1575 <fvwmref cmd="AddToFunc"/> StartFunction
1576 + I FvwmEvent
1578 <fvwmref cmd="AddToFunc"/> GrowDownFunc
1579 + I windowid $0 (PlacedByButton 3) \
1580   <fvwmref cmd="Resize"/> bottomright keep -0p
1581 </programlisting>
1584 <para>Now, whenever a window is created and the user presses button 3 to
1585 finish initial placement, the window is automatically enlarged
1586 until it hits the bottom screen border.</para>
1588 <para><emphasis remap='I'>Old placement styles</emphasis>
1589 DumbPlacement / SmartPlacement / SmartPlacementOff,
1590 CleverPlacement / CleverPlacementOff,
1591 ActivePlacement / RandomPlacement,
1592 ActivePlacementsHonorsStartsOnPage /
1593 ActivePlacementsHonorsStartsOnPageOff, GlobalOpts
1594 SmartPlacementIsReallySmart / GlobalOpts SmartPlacementIsNormal
1595 are still supported but will be removed in the future. The old and
1596 new styles can be translated according to the following table:</para>
1598 <programlisting>
1599 <fvwmref cmd="GlobalOpts"/> SmartPlacementIsReallySmart
1600 Style * SmartPlacement
1602 Style * SmartPlacement, CleverPlacement
1604 <fvwmref cmd="GlobalOpts"/> SmartPlacementIsNormal
1605 Style * SmartPlacement
1606   -->
1607 Style * SmartPlacement, CleverPlacementOff
1609 Style * DumbPlacement, RandomPlacement
1610   -->
1611 Style * CascadePlacement
1613 Style * DumbPlacement, ActivePlacement
1614   -->
1615 Style * ManualPlacement
1617 Style * SmartPlacement, \
1618 RandomPlacement, CleverPlacementOff
1619   -->
1620 Style * TileCascadePlacement
1622 Style * SmartPlacement, \
1623 ActivePlacement, CleverPlacementOff
1624   -->
1625 Style * TileManualPlacement
1627 Style * SmartPlacement, CleverPlacement
1628   -->
1629 Style * MinOverlapPlacement
1631 Style * SmartPlacement, \
1632 ActivePlacement, CleverPlacement
1633   -->
1634 Style * MinOverlapPercentPlacement
1636 Style * ActivePlacementsHonorsStartsOnPage
1637   -->
1638 Style * ManualPlacementsHonorsStartsOnPage
1640 Style * ActivePlacementsHonorsStartsOnPageOff
1641   -->
1642 Style * ManualPlacementsHonorsStartsOnPageOff
1643 </programlisting>
1645 </section>
1649 <!--  +++++++++++++++ placement options and stacking policy -->
1650 <section id="placement_policy_and_window_stacking">
1651 <title>Placement policy options and window stacking</title>
1653 <para><fvwmopt cmd="Style" opt="NoUsePPosition"/>
1654 instructs fvwm to ignore the program specified position (PPosition
1655 hint) when adding new windows.  Using PPosition is required for
1656 some applications, but if you do not have one of those it's a real
1657 headache.  Many programs set PPosition to something obnoxious like
1658 0,0 (upper left corner).
1659 Note: <emphasis>!UsePPosition</emphasis>
1660 is equivalent to the deprecated option
1661 <emphasis>NoPPosition</emphasis></para>
1663 <para><fvwmopt cmd="Style" opt="NoUseUSPosition"/>
1664 works like
1665 <emphasis remap='I'>!UsePPosition</emphasis>
1666 but applies suppresses using the user specified position indicated
1667 by the program (USPosition hint).  It is generally a bad thing to
1668 override the user's choice, but some applications misuse the
1669 USPosition hint to force their windows to a certain spot on the
1670 screen without the user's consent.
1671 Note: <emphasis>!UseUSPosition</emphasis>
1672 is equivalent to the deprecated option
1673 <emphasis>!USPosition</emphasis></para>
1675 <para>
1676 <fvwmopt cmd="Style" opt="NoUseTransientPPosition"/> and
1677 <fvwmopt cmd="Style" opt="UseTransientPPosition"/>
1678 work like
1679 <emphasis remap='I'>!UsePPosition</emphasis> and
1680 <emphasis remap='I'>UsePPosition</emphasis>
1681 but apply only to transient windows.
1682 Note: <emphasis>!UseTransientPPosition</emphasis>
1683 is equivalent to the deprecated option
1684 <emphasis>!TransientPPosition</emphasis></para>
1686 <para><fvwmopt cmd="Style" opt="NoUseIconPosition"/>
1687 instructs fvwm to ignore the program specified icon position
1688 (IconPosition hint) when iconifying the window.
1689 Note: <emphasis>!UseIconPosition</emphasis>
1690 is equivalent to the deprecated option
1691 <emphasis>!IconPosition</emphasis></para>
1693 <para><fvwmopt cmd="Style" opt="StartsOnDesk"/>
1694 takes a numeric argument which is the desktop number on which the
1695 window should be initially placed.  Note that standard Xt programs
1696 can also specify this via a resource (e.g. "-xrm '*Desk: 1'").</para>
1698 <para><fvwmopt cmd="Style" opt="StartsOnPage"/>
1699 takes 1, 2, or 3 numeric arguments.  If one or three arguments are
1700 given, the first (or only) argument is the desktop number. If
1701 three arguments are given, the 2nd and 3rd arguments identify the
1702 x,y page position on the virtual window.  If two arguments are
1703 given, they specify the page position, and indicate no desk
1704 preference.  If only one argument is given,
1705 <emphasis remap='I'>StartsOnPage</emphasis>
1706 functions exactly like
1707 <emphasis remap='I'>StartsOnDesk</emphasis>.
1708 For those standard Xt programs which understand this usage, the
1709 starting desk/page can also be specified via a resource (e.g.,
1710 "-xrm '*page: 1 0 2'").
1711 <emphasis remap='I'>StartsOnPage</emphasis>
1712 in conjunction with
1713 <fvwmopt cmd="Style" opt="SkipMapping"/>
1714 is a useful technique when you want to start an app on some other
1715 page and continue with what you were doing, rather than waiting
1716 for it to appear.</para>
1718 <para><fvwmopt cmd="Style" opt="StartsOnScreen"/>
1719 takes one argument.  It can be 'p' for the primary screen, 'c' for
1720 the current screen (containing the mouse pointer), 'g' for the
1721 global screen or the screen number itself (counting from zero).  A
1722 new window is placed on the specified Xinerama screen.  The
1723 default is to place windows on the screen that contains the mouse
1724 pointer at the time the window is created.  However, those windows
1725 which are not placed by fvwm (i.e., those with a USPosition hint
1726 from a user specified geometry) are normally placed in a position
1727 relative to the global screen.  The
1728 <emphasis remap='I'>StartsOnScreen</emphasis>
1729 style is also useful to cause these windows to be placed relative
1730 to a specific Xinerama screen.  For example:</para>
1732 <programlisting>
1733 Style * StartsOnScreen c
1734 </programlisting>
1736 <para>Would cause all windows, including those with their own geometry
1737 to be placed relative to the current Xinerama screen rather than
1738 the global screen.  For those standard Xt programs which
1739 understand this usage, the starting desk/page can also be
1740 specified via a resource (e.g., "-xrm '*fvwmscreen: c'").
1741 ('fvwmscreen' was chosen because some applications already use
1742 &acute;.screen' for other purposes.)</para>
1744 <para><fvwmopt cmd="Style" opt="StartsOnPageIncludesTransients"/>
1745 causes the
1746 <emphasis remap='I'>StartsOnPage</emphasis>
1747 style to be applied even for transient windows.  This is not
1748 usually useful, since transients are usually pop ups that you want
1749 to appear in your visible viewport; but occasionally an
1750 application uses a transient for something like a startup window
1751 that needs to be coerced into place.</para>
1753 <para><fvwmopt cmd="Style" opt="ManualPlacementIgnoresStartsOnPage"/>
1754 suppresses
1755 <emphasis remap='I'>StartsOnPage</emphasis> or <emphasis remap='I'>StartsOnDesk</emphasis>
1756 placement in the event that both
1757 <emphasis remap='I'>ManualPlacement</emphasis> and <emphasis remap='I'>SkipMapping</emphasis>
1758 are in effect when a window is created.  This prevents you from
1759 interactively placing a window and then wondering where it
1760 disappeared to, because it got placed on a different desk or page.
1761 <fvwmopt cmd="Style" opt="ManualPlacementHonorsStartsOnPage"/>
1762 allows this to happen anyway.  The option has no effect if
1763 <emphasis remap='I'>SkipMapping</emphasis>
1764 is not in effect, because fvwm switches to the proper desk/page to
1765 perform interactive placement.  The default is
1766 <emphasis remap='I'>ManualPlacementIgnoresStartsOnPage</emphasis>;
1767 <emphasis remap='I'>ManualPlacementHonorsStartsOnPage</emphasis>
1768 matches the way the old
1769 <emphasis remap='I'>StartsOnDesk</emphasis>
1770 style used to handle the situation.</para>
1772 <para><fvwmopt cmd="Style" opt="CaptureHonorsStartsOnPage"/>
1773 causes the initial capture (of an already existing window) at
1774 startup to place the window according to the
1775 <emphasis remap='I'>StartsOnPage</emphasis> and <emphasis remap='I'>StartsOnScreen</emphasis>
1776 desk, page and Xinerama screen specification.
1777 <fvwmopt cmd="Style" opt="CaptureIgnoresStartsOnPage"/>
1778 causes fvwm to ignore these settings (including
1779 <emphasis remap='I'>StartsOnDesk</emphasis>)
1780 on initial capture.  The default is
1781 <emphasis remap='I'>CaptureIgnoresStartsOnPage</emphasis>.</para>
1783 <para><fvwmopt cmd="Style" opt="RecaptureHonorsStartsOnPage"/>
1784 causes a window to be placed according to, or revert to, the
1785 <emphasis remap='I'>StartsOnPage</emphasis> and <emphasis remap='I'>StartsOnScreen</emphasis>
1786 desk, page and Xinerama screen specification on
1787 <fvwmref cmd="Restart"/> or <fvwmopt cmd="Style" opt="Recapture"/>.
1788 <fvwmopt cmd="Style" opt="RecaptureIgnoresStartsOnPage"/>
1789 causes fvwm to respect the current window position on
1790 <fvwmref cmd="Restart"/> or <fvwmref cmd="Recapture"/>.
1791 The default is
1792 <emphasis remap='I'>RecaptureIgnoresStartsOnPage</emphasis>.</para>
1794 <para>
1795 <fvwmopt cmd="Style" opt="Layer"/>
1796 accepts one optional argument: a non-negative integer.  This is
1797 the layer the window is put in.  If no argument is given, any
1798 previously set value is deleted and the default layer is implied.</para>
1800 <para><fvwmopt cmd="Style" opt="StaysOnTop"/>
1801 puts the window in the top layer.  This layer can be changed by
1802 the command
1803 <fvwmref cmd="DefaultLayers"/>;
1804 the default is 6.</para>
1806 <para><fvwmopt cmd="Style" opt="StaysPut"/>
1807 puts the window in the put layer.  This layer can be changed by
1808 the command
1809 <fvwmref cmd="DefaultLayers"/>;
1810 the default is 4.</para>
1812 <para><fvwmopt cmd="Style" opt="StaysOnBottom"/>
1813 puts the window in the bottom layer.  This layer can be changed by
1814 the command
1815 <fvwmref cmd="DefaultLayers"/>;
1816 the default is 2.</para>
1818 <para><fvwmopt cmd="Style" opt="StartsLowered"/>
1819 instructs fvwm to put the window initially at the bottom of its
1820 layer rather than the default
1821 <fvwmopt cmd="Style" opt="StartsRaised"/>.</para>
1823 <para><fvwmopt cmd="Style" opt="StartShaded"/>
1824 tells fvwm to shade the window.  An optional direction argument may be
1825 given, which can be one of
1826 "<fvwmopt cmd="WindowShade" opt="North"/>",
1827 "<fvwmopt cmd="WindowShade" opt="South"/>",
1828 "<fvwmopt cmd="WindowShade" opt="West"/>",
1829 "<fvwmopt cmd="WindowShade" opt="East"/>",
1830 "<fvwmopt cmd="WindowShade" opt="NorthWest"/>",
1831 "<fvwmopt cmd="WindowShade" opt="NorthEast"/>",
1832 "<fvwmopt cmd="WindowShade" opt="SouthWest"/>",
1833 "<fvwmopt cmd="WindowShade" opt="SouthEast"/>" or
1834 if no direction is given, the default is to shade north.</para>
1836 <para><emphasis remap='I'>SkipMapping</emphasis>
1837 tells fvwm not to switch to the desk the window is on when it gets
1838 mapped initially (useful with
1839 <emphasis remap='I'>StartsOnDesk</emphasis> or <emphasis remap='I'>StartsOnPage</emphasis>).</para>
1841 <para><fvwmopt cmd="Style" opt="KeepWindowGroupsOnDesk"/>
1842 makes new windows that have the window group hint set appear on
1843 the same desk as the other windows of the same group.  Since this
1844 behavior may be confusing, the default setting is
1845 <fvwmopt cmd="Style" opt="ScatterWindowGroups"/>.
1846 The window group hint is ignored when placing windows in this
1847 case.</para>
1849 </section>
1853 <!--  +++++++++++++++ transient windows -->
1854 <section id="transient_windows">
1855 <title>Transient windows</title>
1857 <para><fvwmopt cmd="Style" opt="DecorateTransient"/>
1858 causes transient windows, which are normally left undecorated, to
1859 be given the usual fvwm decorations (title bar, buttons,
1860 etc.). Note that some pop-up windows, such as the xterm menus, are
1861 not managed by the window manager and still do not receive
1862 decorations.
1863 <fvwmopt cmd="Style" opt="NakedTransient"/>
1864 (the default) causes transient windows not to be given the
1865 standard decorations. You can only bind keys or mouse buttons to
1866 the sides and the client part of an undecorated window ('S' and
1867 &acute;W' contexts in bindings, see
1868 <fvwmref cmd="Mouse"/> and <fvwmopt cmd="Style" opt="Key"/>
1869 commands).</para>
1871 <para>A window with the
1872 <fvwmopt cmd="Style" opt="RaiseTransient"/>
1873 style that has transient windows raises all its transients when it
1874 is raised.  The
1875 <fvwmopt cmd="Style" opt="DontRaiseTransient"/>
1876 style disables this behavior.  All windows are then treated as if
1877 they had no transients.</para>
1879 <para>A window with the
1880 <fvwmopt cmd="Style" opt="LowerTransient"/>
1881 style that has transient windows lowers all its transients when it
1882 is lowered.  The
1883 <fvwmopt cmd="Style" opt="DontLowerTransient"/>
1884 style disables this behavior.  All windows are then treated as if
1885 they had no transients.</para>
1887 <para>The
1888 <fvwmopt cmd="Style" opt="StackTransientParent"/>
1889 style augments
1890 <emphasis remap='I'>RaiseTransient</emphasis> and <emphasis remap='I'>LowerTransient</emphasis>
1891 styles.  Raising a window with
1892 <emphasis remap='I'>StackTransientParent</emphasis>
1893 style transfers the raise action to the main window if the window
1894 being raised is a transient and its main window has
1895 <emphasis remap='I'>RaiseTransient</emphasis>
1896 style; this effect makes raise on a transient act just like raise
1897 on its main - the whole group is raised.  Similar behavior holds
1898 for lowering a whole group of transients when the main has
1899 <emphasis remap='I'>LowerTransient</emphasis>
1900 style.
1901 <fvwmopt cmd="Style" opt="DontStackTransientParent"/>
1902 turns this behavior off.
1903 <fvwmopt cmd="Style" opt="(Dont)StackTransientParent"/>
1904 has no effect if
1905 <emphasis remap='I'>RaiseTransient</emphasis> and <emphasis remap='I'>LowerTransient</emphasis>
1906 are not used.</para>
1908 <para>A reasonable emulation of Motif raise/lower on transients is
1909 possible like this</para>
1911 <programlisting>
1912 Style * RaiseTransient
1913 Style * LowerTransient
1914 Style * StackTransientParent
1915 </programlisting>
1917 </section>
1921 <!--  +++++++++++++++ Extended WM Hints styles -->
1922 <section id="ewmh">
1923 <title>Extended Window Manager Hints styles</title>
1925 <para>To understand the used terminology in this sub section, please
1926 read the
1927 <fvwmref sect="ewmh" opt="extended_window_manager_hints" name="Extended Window Manager Hints"/>
1928 section.</para>
1930 <para><fvwmopt cmd="Style" opt="EWMHDonateIcon"/>
1931 instructs fvwm to set the application ewmh icon hint with the icon
1932 that is used by fvwm if the application does not provide such hint
1933 (and if the icon used by fvwm is not an icon window).
1934 <fvwmopt cmd="Style" opt="EWMHDonateMiniIcon"/>
1935 does the same thing for mini icons. This allows compliant pager,
1936 taskbar, iconbox ...etc to display the same (mini) icons as
1937 fvwm. Note that on some hardware (e.g., 8-bit displays) these
1938 styles can slow down window mapping and that in general only one
1939 of these styles is needed by a compliant application.
1940 <fvwmopt cmd="Style" opt="EWMHDontDonateIcon"/>
1942 <fvwmopt cmd="Style" opt="EWMHDontDonateMiniIcon"/>
1943 restore the defaults which are to not set any ewmh (mini) icons
1944 hints.</para>
1946 <para>By default, if an application provides an ewmh icon hint of small
1947 size (i.e., height and width less than or equal to 22), then fvwm
1948 uses this icon as its mini icon.
1949 <fvwmopt cmd="Style" opt="EWMHMiniIconOverride"/>
1950 instructs fvwm to ignore ewmh icons and to use the mini icon
1951 provided by the
1952 <emphasis remap='I'>MiniIcon</emphasis>
1953 style.
1954 <fvwmopt cmd="Style" opt="EWMHNoMiniIconOverride"/>
1955 restores the default.</para>
1957 <para><fvwmopt cmd="Style" opt="EWMHUseStackingOrderHints"/>
1958 causes fvwm to use <acronym>EWMH</acronym> hints and respect <acronym>EWMH</acronym> hints which change
1959 the window layer.
1960 <fvwmopt cmd="Style" opt="EWMHIgnoreStackingOrderHints"/>
1961 causes fvwm to ignore EWMH layer hints.</para>
1963 <para>An application can ask for some reserved space on the desktop by a
1964 hint.  In the <acronym>EWMH</acronym> terminology such a hint is called a strut and
1965 it is used to compute the working area and may be used for window
1966 placement and in the maximize command.
1967 <fvwmopt cmd="Style" opt="EWMHIgnoreStrutHints"/>
1968 causes fvwm to ignore such hints, as
1969 <fvwmopt cmd="Style" opt="EWMHUseStrutHints"/>,
1970 causes fvwm to use it which is the default.</para>
1972 <para><fvwmopt cmd="Style" opt="EWMHIgnoreStateHints"/>
1973 causes fvwm to ignore initial <acronym>EWMH</acronym> state hints when a new window
1974 is mapped. The default
1975 <fvwmopt cmd="Style" opt="EWMHUseStateHints"/>
1976 causes fvwm to accept such hints.</para>
1978 <para><fvwmopt cmd="Style" opt="EWMHIgnoreWindowType"/>
1979 causes fvwm to ignore <acronym>EWMH</acronym> window type specification. The default
1980 <emphasis remap='I'>!EWMHIgnoreWindowType</emphasis>
1981 causes fvwm to style windows of specified types as such.</para>
1983 <para><fvwmopt cmd="Style" opt="EWMHMaximizeIgnoreWorkingArea"/>
1984 causes fvwm to ignore the <acronym>EWMH</acronym> working area when it executes a
1985 <fvwmref cmd="Maximize"/>
1986 command. With
1987 <fvwmopt cmd="Style" opt="EWMHMaximizeUseWorkingArea"/>
1988 the <acronym>EWMH</acronym> working area is used as with
1989 <fvwmopt cmd="Style" opt="EWMHMaximizeUseDynamicWorkingArea"/>
1990 the <acronym>EWMH</acronym> dynamic working area is used (the default).</para>
1992 <para><fvwmopt cmd="Style" opt="EWMHPlacementIgnoreWorkingArea"/>
1993 causes fvwm to ignore the <acronym>EWMH</acronym> working area when it places (or
1994 places again) a window. With
1995 <emphasis remap='I'>EWMHPlacementUseWorkingArea</emphasis>
1996 the <acronym>EWMH</acronym> working area is taken in account as with
1997 <emphasis remap='I'>EWMHPlacementUseDynamicWorkingArea</emphasis>
1998 the <acronym>EWMH</acronym> dynamic working area is taken in account (the default).
1999 Note that with the
2000 <emphasis remap='I'>MinOverlapPlacement</emphasis> and <emphasis remap='I'>MinOverlapPercentPlacement</emphasis>
2001 placement policy, the way the <acronym>EWMH</acronym> (dynamic) working area is taken
2002 in account is configurable with the
2003 <emphasis remap='I'>MinOverlapPlacementPenalties</emphasis>
2004 style.</para>
2006 </section>
2010 <!--  +++++++++++++++ miscellaneous -->
2011 <section id="miscellaneous">
2012 <title>Miscellaneous</title>
2014 <para>The
2015 <fvwmopt cmd="Style" opt="BackingStore"/>, <fvwmopt cmd="Style" opt="BackingStoreOff"/> and <fvwmopt cmd="Style" opt="BackingStoreWindowDefault"/>
2016 determine if the X server uses backing store for the window or
2017 not.
2018 <fvwmopt cmd="Style" opt="BackingStore"/>
2019 means that the X server tries to keep the obscured parts of a
2020 window in memory.  This is usually slower if the client runs on
2021 the same machine as the X server, but can be much faster if the
2022 connection is slow (see also
2023 <emphasis>SaveUnder</emphasis>
2024 below).
2025 <fvwmopt cmd="Style" opt="BackingStoreOff"/>
2026 disables backing store for the window.  By default, fvwm
2027 does not enable or disable backing store itself but leaves is as
2028 the window requested it.  To revert back to the application's
2029 choice, use the
2030 <fvwmopt cmd="Style" opt="BackingStoreWindowDefault"/>
2031 style.</para>
2033 <para>Note: This style is useless if the X server does not allow backing
2034 store.</para>
2036 <para>
2037 <fvwmopt cmd="Style" opt="SaveUnder"/>
2038 enables the corresponding window attribute in the X server.  For a
2039 window using this style, the X server tries to store the graphics
2040 below it in memory which is usually slower if the client runs on
2041 the same machine as the X server.
2042 <emphasis remap='I'>SaveUnder</emphasis>
2043 may speed up fvwm if the connection to the X server is slow
2044 (e.g. over a modem link).  To disable save under, use the
2045 <fvwmopt cmd="Style" opt="SaveUnderOff"/>
2046 style.  This is the default. See also
2047 <emphasis remap='I'>BackingStore</emphasis>
2048 above.</para>
2050 <para>Note: This style is useless if the X server does not allow save
2051 under.</para>
2053 <para><fvwmopt cmd="Style" opt="ParentalRelativity"/>
2054 enables clients that use a background pixmap of type
2055 <fvwmopt cmd="Style" opt="ParentRelative"/>
2056 to achieve transparency. Fvwm modules that support transparent
2057 colorsets require this setting.
2058 <fvwmopt cmd="Style" opt="Opacity"/>
2059 is the default and should be used for all non-transparent clients
2060 for better performance.</para>
2062 <para><fvwmopt cmd="Style" opt="MwmDecor"/>
2063 makes fvwm attempt to recognize and respect the mwm decoration
2064 hints that applications occasionally use.  To switch this style
2065 off, use the
2066 <fvwmopt cmd="Style" opt="NoDecorHint"/>
2067 style.</para>
2069 <para><fvwmopt cmd="Style" opt="MwmFunctions"/>
2070 makes fvwm attempt to recognize and respect the mwm prohibited
2071 operations hints that applications occasionally use.
2072 <fvwmopt cmd="Style" opt="HintOverride"/>
2073 makes fvwm shade out operations that mwm would prohibit, but it
2074 lets you perform the operation anyway.
2075 <fvwmopt cmd="Style" opt="NoFuncHint"/>
2076 allows turns off the mwm hints completely.</para>
2078 <para><fvwmopt cmd="Style" opt="OLDecor"/>
2079 makes fvwm attempt to recognize and respect the olwm and olvwm
2080 hints that many older XView and OLIT applications use.  Switch
2081 this option off with
2082 <fvwmopt cmd="Style" opt="NoOLDecor"/>.</para>
2084 <para>With
2085 <fvwmopt cmd="Style" opt="GNOMEIgnoreHints"/>
2086 fvwm ignores all <acronym>GNOME</acronym> hints for the window, even if <acronym>GNOME</acronym>
2087 compliance is compiled in.  This is useful for those pesky
2088 applications that try to be more clever than the user and use
2089 <acronym>GNOME</acronym> hints to force the window manager to ignore the user's
2090 preferences.  The
2091 <fvwmopt cmd="Style" opt="GNOMEUseHints"/>
2092 style switches back to the default behavior.</para>
2094 <para><fvwmopt cmd="Style" opt="UseDecor"/>
2095 This style is deprecated and will be removed in the future.  There
2096 are plans to replace it with a more flexible solution in fvwm-3.0.</para>
2098 <para><emphasis remap='I'>UseDecor</emphasis>
2099 accepts one argument: the name of a decor created with
2100 <fvwmref cmd="AddToDecor"/>.
2101 If no decor name is specified, the "Default" decor is
2102 used. Windows do not actually contain decors, but are always
2103 assigned to one.  If the decor is later modified with
2104 <fvwmref cmd="AddToDecor"/>,
2105 the changes are visible for all windows which are assigned to it.
2106 The decor for a window can be reassigned with
2107 <fvwmref cmd="ChangeDecor"/>.</para>
2109 <para><fvwmopt cmd="Style" opt="UseStyle"/>
2110 This style is deprecated and will be removed in the future.  There
2111 are plans to replace it with a more flexible solution in fvwm-3.0.</para>
2113 <para><emphasis remap='I'>UseStyle</emphasis>
2114 takes one arg, which is the name of another style.  That way you
2115 can have unrelated window names easily inherit similar traits
2116 without retyping.  For example:</para>
2118 <programlisting>
2119   Style rxvt UseStyle XTerm
2120 </programlisting>
2122 <para>Warning: If a style is built from one or more parent styles and
2123 the parent styles are changed, the derived style is not
2124 modified. To achieve this you have to issue the
2125 <emphasis remap='I'>UseStyle</emphasis>
2126 line again.</para>
2128 <para><fvwmopt cmd="Style" opt="Unmanaged"/>
2129 Windows with the
2130 <emphasis remap='I'>Unmanaged</emphasis>
2131 style option are ignored by fvwm.  They are not decorated, can not
2132 be moved or resized, etc.  You probably want to use
2133 <emphasis remap='B'>Bugopts RaiseOverUnmanaged</emphasis>
2134 too.  This option can be turned off with the
2135 <emphasis remap='I'>!Unmanaged</emphasis>
2136 style.
2137 However, windows that are already ignored at the time when the
2138 option is set must be recaptured with the
2139 <fvwmref cmd="Recapture"/>
2140 command in order to become managed.</para>
2142 <para>
2143 <fvwmopt cmd="Style" opt="State"/>
2144 sets the initial value of one of the 32 user defined states
2145 which are associated with each window.  The state number ranges
2146 from 0 to 31 and must be given as an argument.  The states have no
2147 meaning in fvwm, but they can be checked in conditional commands
2148 like
2149 <fvwmref cmd="Next"/>
2150 with the
2151 <emphasis>State</emphasis>
2152 condition and manipulated with the
2153 <fvwmref cmd="State"/>
2154 command.</para>
2156 <programlisting>
2157 # turn on state 11 for xterms ...
2158 Style xterm <fvwmref cmd="State"/> 11
2159 # ... but not for rxvts.
2160 Style rxvt !State 11
2161 </programlisting>
2164 <!--  +++++++++++++++ styles affecting window selection -->
2166 <para>Windows with the
2167 <fvwmopt cmd="Style" opt="WindowListSkip"/>
2168 styles do not appear in the menu that is created with the
2169 <fvwmref cmd="WindowList"/>
2170 command or the lists shown in several modules like
2171 <fvwmref mod="FvwmIconMan"/> or <fvwmref mod="FvwmWinList"/>.
2172 In the modules, the style can usually be ignored with an option.
2173 Please refer to the man page of the module in question for
2174 further information.  To disable this feature, use the default
2175 style
2176 <fvwmopt cmd="Style" opt="WindowListHit"/>.</para>
2178 <para>The styles
2179 <fvwmopt cmd="Style" opt="CirculateSkip"/> and <fvwmopt cmd="Style" opt="CirculateHit"/>
2180 control whether the window is considered by conditional commands,
2181 for example
2182 <fvwmref cmd="Next"/>, <fvwmopt cmd="Style" opt="Prev"/> or <fvwmopt cmd="Style" opt="All"/>.
2183 Windows with
2184 <fvwmopt cmd="Style" opt="CirculateSkip"/>,
2185 are never selected by conditional commands.  However, the styles
2186 can be overridden explicitly in the condition with the
2187 <fvwmopt cmd="Style" opt="CirculateHit"/>, <fvwmopt cmd="Style" opt="CirculateHitIcon"/> or <fvwmopt cmd="Style" opt="CirculateHitShaded"/>
2188 conditions, and some conditional commands, e.g.
2189 <fvwmref cmd="Current"/> and <fvwmopt cmd="Style" opt="All"/>,
2190 do this by default.
2191 The styles
2192 <fvwmopt cmd="Style" opt="CirculateSkipIcon"/>, <fvwmopt cmd="Style" opt="CirculateHitIcon"/>,
2193 <fvwmopt cmd="Style" opt="CirculateSkipShaded"/> and <fvwmopt cmd="Style" opt="CirculateHitShaded"/>
2194 work like
2195 <emphasis remap='I'>CirculateSkip</emphasis> and <emphasis remap='I'>CirculateHit</emphasis>
2196 but apply only to iconic or shaded windows.
2197 Note: if multiple ...Skip... options are combined, windows are
2198 only selected if they match none of the given conditions.  So,
2199 with</para>
2201 <programlisting>
2202 Style * CirculateSkipIcon, CirculateSkipShaded
2203 </programlisting>
2205 <para>only windows that are neither iconic nor shaded are selected.
2206 Note:  For historical reasons, the conditional commands understand
2207 the names of these styles as condition names.  Take care not to
2208 confuse them.</para>
2210 </section>
2217 <!--  +++++++++++++++ examples -->
2218 <section id="examples">
2219 <title>Examples</title>
2222 <programlisting>
2223 # Change default fvwm behavior to no title-
2224 # bars on windows! Also define a default icon.
2225 Style *             !Title,                \
2226                     Icon unknown1.xpm,     \
2227                     BorderWidth 4,         \
2228                     HandleWidth 5
2230 # now, window specific changes:
2231 Style Fvwm*       !Handles, Sticky,        \
2232                   WindowListSkip,          \
2233                   BorderWidth 0
2234 Style FvwmPager   StaysOnTop, BorderWidth 0
2235 Style *lock       !Handles, Sticky,        \
2236                   StaysOnTop, WindowListSkip
2237 Style xbiff       Sticky, WindowListSkip
2238 Style FvwmButtons !Handles, Sticky,        \
2239                   WindowListSkip
2240 Style sxpm        !Handles
2242 # Put title-bars back on xterms only!
2243 Style xterm     Title, Color black/grey
2245 Style rxvt        Icon term.xpm
2246 Style xterm       Icon rterm.xpm
2247 Style xcalc       Icon xcalc.xpm
2248 Style xbiff       Icon mail1.xpm
2249 Style xmh         Icon mail1.xpm,         \
2250                     StartsOnDesk 2
2251 Style xman        Icon xman.xpm
2252 Style matlab      Icon math4.xpm,         \
2253                     StartsOnDesk 3
2254 Style xmag        Icon magnifying_glass2.xpm
2255 Style xgraph      Icon graphs.xpm
2256 Style FvwmButtons Icon toolbox.xpm
2257 Style Maker       StartsOnDesk 1
2258 Style signal      StartsOnDesk 3
2260 # Fire up Netscape on the second desk, in the
2261 # middle of my 3x3 virtual desktop, and do not
2262 # bother me with it...
2263 Style Netscape* SkipMapping,              \
2264                 StartsOnPage 1 1 1
2265 </programlisting>
2267 <para>Note that all properties for a window are or'ed together.  In the
2268 above example "FvwmPager" gets the property
2269 <emphasis remap='I'>StaysOnTop</emphasis>
2270 via an exact window name match but also gets
2271 <emphasis remap='I'>!Handles</emphasis>, <emphasis remap='I'>Sticky</emphasis> and <emphasis remap='I'>WindowListSkip</emphasis>
2272 by a match to "Fvwm*".  It gets
2273 <emphasis remap='I'>!Title</emphasis>
2274 by virtue of a match to "*".  If conflicting styles are specified
2275 for a window, then the last style specified is used.</para>
2277 </section>
2279 </section>