*** empty log message ***
[fvwm.git] / doc / commands / Style.xml
blob1789ae73e87306a53436c134c0fef56bb9400907
1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!-- $Id: Style.xml,v 1.11 2009/02/19 21:06:02 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 its 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 its 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 determines is optional
1295 and may be set to one of the four following values:  With
1296 <replaceable>All</replaceable> both icons and windows snap to
1297 other windows and other icons. <replaceable>SameType</replaceable>
1298 lets snap windows only to other windows and icons only to other
1299 icons. With <replaceable>Windows</replaceable> windows snap only
1300 to other windows.  Icons do not snap.  Similarly with
1301 <replaceable>Icons</replaceable> icons snap to only other icons
1302 and windows do not snap.  The default behavior is
1303 <emphasis remap='I'>All</emphasis>.</para>
1305 <para>If the option "Screen" option is added to at the last
1306 argument, windows and or icons snapp to the screen edges
1307 too.</para>
1309 <para>The option <fvwmopt cmd="Style" opt="SnapGrid"/> defines an
1310 invisible grid on the screen.  During an interactive move a window
1311 or icon is positioned such that its location (top left corner) is
1312 coincident with the nearest grid point. The default
1313 <replaceable>x-grid-size</replaceable> and
1314 <replaceable>y-grid-size</replaceable> setting are both 1, which
1315 is effectively no grid all.</para>
1317 <para>An interactive move with both <fvwmref cmd="SnapGrid"/> and
1318 <fvwmref cmd="Style" opt="SnapAttraction"/> results in the window
1319 being moved to be adjacent to the nearest window border (if within
1320 snap proximity) or grid position. The window moves the shortest
1321 distance possible to satisfy both <fvwmref cmd="SnapGrid"/> and
1322 <fvwmref cmd="Style" opt="SnapAttraction"/>.  Note that the x and y
1323 coordinates are not coupled.  For example, a window may snap to
1324 another window on the x axis while snapping to a grid point on the
1325 y axis.  Using this style without arguments reinstates the default
1326 settings.</para>
1328 <para>The styles <fvwmopt cmd="Style" opt="EdgeMoveDelay"/> and
1329 <fvwmopt cmd="Style" opt="EdgeResizeDelay"/> tells how hard it
1330 should be to change the desktop viewport by moving or resizing a
1331 window over the edge of the screen. The parameter tells how many
1332 milliseconds the pointer must spend on the screen edge before fvwm
1333 moves the viewport.  The command <fvwmref cmd="EdgeScroll"/>
1334 determines how far the viewport is scrolled.  If -1 is given as
1335 the delay, page flipping is disabled completely.  The defaults are
1336 no delay for moving (0) and no flipping for resizing (-1).  Using
1337 these styles without any argument restores the default
1338 settings.  Note that, with</para>
1340 <programlisting>
1341 <fvwmref cmd="EdgeScroll"/> 0 0
1342 </programlisting>
1344 <para>it is still possible to move or resize windows across the
1345 edge of the current screen.  See also <fvwmref
1346 cmd="EdgeThickness"/>.</para>
1348 <para>The option <fvwmopt cmd="Style" opt="EdgeMoveResistance"/>
1349 makes it easier to place a window directly adjacent to the
1350 screen's or xinerama screen's border.  It takes one or two
1351 parameters.  The first parameter tells how many pixels over the
1352 edge of the screen a window's edge must move before it actually
1353 moves partially off the screen.  The optional second parameter
1354 does the same as the first, but for individual Xinerama screens.
1355 If omitted, the value of the first parameter is assumed for this
1356 type of movement.  Set the second parameter to 0 to zero to ignore
1357 individual xinerama screen edges.  Note that the center of the
1358 window being moved determines the xinerama screen on which the
1359 window should be kept.  Both values are 0 by default.  To restore
1360 the defaults, the option <fvwmopt cmd="Style"
1361 opt="EdgeMoveResistance"/> can be used without any
1362 parameters.</para>
1364 <para>The option <fvwmopt cmd="Style" opt="InitialMapCommand"/> allows
1365 for any valid fvwm command or function to run when the window is 
1366 initially mapped by fvwm.  Example:</para>
1368 <programlisting>
1369 <fvwmref cmd="Style"/> MyWindow StartsOnPage 0 0, InitialMapCommand Iconify
1370 </programlisting>
1371 </section>
1373 <para>This would hence place the window called <emphasis>MyWindow</emphasis>
1374 on page 0 0 for the current desk, and immediately run the <fvwmref cmd="Iconify"/>
1375 command on that window.</para>
1378 <section id="window_manager_placement">
1379 <title>Window Manager placement</title>
1381 <para>Applications can place windows at a particular spot on the screen
1382 either by window manager hints or a geometry specification.  When
1383 they do neither, then the window manager steps in to find a place
1384 for the window.  Fvwm knows several ways to deal with this
1385 situation. The default is
1386 <emphasis>TileCascadePlacement</emphasis>.</para>
1388 <para>
1389 <fvwmopt cmd="Style" opt="PositionPlacement"/>
1390 [<emphasis remap='I'>Center</emphasis>|<emphasis remap='I'>UnderMouse</emphasis>|<emphasis remap='I'>move-arguments</emphasis>]
1391 When used without an argument, new windows are placed in the
1392 top left corner of the display.  With the argument
1393 <emphasis remap='I'>Center</emphasis>,
1394 all new window appear at the center of the screen, and with
1395 <emphasis remap='I'>UnderMouse</emphasis>,
1396 windows are centered under the mouse pointer where possible.  If the window
1397 is unable to fit on the screen because the pointer is at the edge of the
1398 screen, then the window is forced on-screen using this option.  If any other
1399 <emphasis remap='I'>move-arguments</emphasis>
1400 are given, they are interpreted exactly as the
1401 <emphasis remap='B'>Move</emphasis>
1402 command does (with the exception that references to the current
1403 window position do not work as the window has not been placed
1404 yet).</para>
1407 <para><fvwmopt cmd="Style" opt="CascadePlacement"/>
1408 automatically place new windows in a cascading fashion.</para>
1410 <para>
1411 <fvwmopt cmd="Style" opt="TileCascadePlacement"/>
1412 automatically places new windows in a smart location - a location
1413 in which they do not overlap any other windows on the screen.  If
1414 no such position can be found
1415 <emphasis remap='I'>CascadePlacement</emphasis>
1416 is used as a fall-back method.</para>
1418 <para><fvwmopt cmd="Style" opt="TileManualPlacement"/>
1419 This is the same as
1420 <emphasis remap='I'>TileCascadePlacement</emphasis>,
1421 but uses
1422 <emphasis>ManualPlacement</emphasis>
1423 as the fall-back method.</para>
1425 <para><fvwmopt cmd="Style" opt="MinOverlapPlacement"/>
1426 automatically places new windows in a location in which the
1427 overlapping area in pixels of other windows is minimized.
1428 By default this placement policy tries to avoid
1429 overlapping icons and windows on higher layers.
1430 This can be configured with the
1431 <fvwmopt cmd="Style" opt="MinOverlapPlacementPenalties"/>
1432 style.</para>
1434 <para><fvwmopt cmd="Style" opt="MinOverlapPercentPlacement"/>
1435 is similar to
1436 <emphasis remap='I'>MinOverlapPlacement</emphasis>
1437 but tries to minimize the overlapped percentages of other windows
1438 instead of the overlapped area in pixels.  This placement policy
1439 tries to avoid covering other windows completely and tries even
1440 harder not to cover small windows.
1441 This can be configured with the
1442 <emphasis remap='I'>MinOverlapPlacementPenalties</emphasis>
1444 <fvwmopt cmd="Style" opt="MinOverlapPercentPlacementPenalties"/>
1445 styles.</para>
1447 <para><emphasis remap='I'>MinOverlapPlacementPenalties</emphasis>
1448 takes at most 6 positive or null decimal arguments:</para>
1450 <programlisting>
1451 <emphasis remap='I'>normal ontop icon sticky below strut</emphasis>
1452 </programlisting>
1454 <para>if trailing arguments are missing the default is used which is:</para>
1456 <programlisting>
1457 1 5 10 1 0.05 50
1458 </programlisting>
1460 <para>To reset this style to the default values, prefix it with a '!'. This style configures the
1461 <emphasis remap='I'>MinOverlapPlacement</emphasis> and <emphasis remap='I'>MinOverlapPercentPlacement</emphasis>
1462 placement policy.
1464 <emphasis>normal</emphasis>
1465 factor affects normal windows, the
1466 <emphasis>ontop</emphasis>
1467 factor affects windows with a greater layer than the window being
1468 placed, the
1469 <emphasis>icon</emphasis>
1470 factor affects icons, the
1471 <emphasis>sticky</emphasis>
1472 factor affects sticky windows, the
1473 <emphasis>below</emphasis>
1474 factor affects windows with a smaller layer than the window being
1475 placed, the
1476 <emphasis>strut</emphasis>
1477 factor affects the complement of the <acronym>EWMH</acronym> working area if the
1478 window being placed has the
1479 <fvwmopt cmd="Style" opt="EWMHPlacementUseWorkingArea"/>
1480 style and windows with an <acronym>EWMH</acronym> strut hint (i.e., a "please do not
1481 cover me" hint) if the window being placed has the
1482 <fvwmopt cmd="Style" opt="EWMHPlacementUseDynamicWorkingArea"/>
1483 style.  These factors represent the amount of area that these
1484 types of windows (or area) are counted as, when a new window is
1485 placed.  For example, by default the area of ontop windows is
1486 counted 5 times as much as normal windows.  So
1487 <emphasis remap='I'>MinOverlapPlacement</emphasis> and <emphasis remap='I'>MinOverlapPercentPlacement</emphasis>
1488 covers 5 times as much area of another window before it will
1489 cover an ontop window.  To treat ontop windows the same as other
1490 windows, set this to 1.  To really, really avoid putting windows
1491 under ontop windows, set this to a high value, say 1000. This
1492 style affects the window already mapped and not the window which
1493 is currently placed. There is one exception to this rule: in the
1494 case of the window being placed has the
1495 <emphasis remap='I'>EWMHPlacementUseWorkingArea</emphasis>
1496 style the
1497 <emphasis remap='I'>strut</emphasis>
1498 factor affects the placed window.</para>
1500 <para><emphasis remap='I'>MinOverlapPercentPlacementPenalties</emphasis>
1501 takes at most 4 positive or null integer arguments:</para>
1503 <programlisting>
1504 <emphasis remap='I'>cover_100 cover_95 cover_85 cover_75</emphasis>
1505 </programlisting>
1507 <para>if trailing arguments are missing the defaults are used
1508 which are:</para>
1510 <programlisting>
1511 12 6 4 1
1512 </programlisting>
1514 <para>To reset this style to the default values, prefix it with a '!'.
1516 This style affects the
1517 <emphasis remap='I'>MinOverlapPercentPlacement</emphasis>
1518 placement policy and is similar to the
1519 <emphasis remap='I'>MinOverlapPlacementPenalties</emphasis>
1520 style. The
1521 <emphasis>cover_xx</emphasis>
1522 factor is used when the window being placed covers at least
1523 <emphasis>xx</emphasis>
1524 percent of the window. This factor is added to the factor
1525 determined by the
1526 <emphasis remap='I'>MinOverlapPlacementPenalties</emphasis>
1527 style.</para>
1529 <para>
1530 <fvwmopt cmd="Style" opt="ManualPlacement"/>
1531 (aka active placement). The user is required to place every new
1532 window manually.  The window only shows as a rubber band until a
1533 place is selected manually. The window is placed when a mouse
1534 button or any key except
1535 <fvwmopt cmd="Style" opt="Escape"/>
1536 is pressed.  Escape aborts manual placement which places the
1537 window in the top left corner of the screen. If mouse button 2 is
1538 pressed during the initial placement of a window (respectively
1539 <fvwmopt cmd="Style" opt="Shift"/>
1540 and mouse button 1 in case Mwm emulation has been enabled with the
1541 <fvwmref cmd="Emulate"/>
1542 command), the user is asked to resize the window too.</para>
1544 <para>It is possible to define buttons usable to place windows with the
1545 <fvwmref cmd="Move"/>
1546 command and the special context 'P' for placement (see
1547 <fvwmref cmd="Move"/>
1548 command). However, you can't redefine the way to also resize the
1549 window other than the way it is affected by the
1550 <fvwmref cmd="Emulate"/>
1551 command. The button used for placing the window can be checked with
1553 <fvwmopt cmd="Style" opt="PlacedByButton"/>
1554 condition (see
1555 <fvwmref cmd="Current"/>
1556 command).</para>
1558 <para>Example:</para>
1560 <programlisting>
1561 Style * ManualPlacement
1563 *FvwmEvent: PassID
1564 *FvwmEvent: add_window GrowDownFunc
1565 <fvwmref cmd="AddToFunc"/> StartFunction
1566 + I FvwmEvent
1568 <fvwmref cmd="AddToFunc"/> GrowDownFunc
1569 + I windowid $0 (PlacedByButton 3) \
1570   <fvwmref cmd="Resize"/> bottomright keep -0p
1571 </programlisting>
1574 <para>Now, whenever a window is created and the user presses button 3 to
1575 finish initial placement, the window is automatically enlarged
1576 until it hits the bottom screen border.</para>
1578 <para><emphasis remap='I'>Old placement styles</emphasis>
1579 DumbPlacement / SmartPlacement / SmartPlacementOff,
1580 CleverPlacement / CleverPlacementOff,
1581 ActivePlacement / RandomPlacement,
1582 ActivePlacementsHonorsStartsOnPage /
1583 ActivePlacementsHonorsStartsOnPageOff, GlobalOpts
1584 SmartPlacementIsReallySmart / GlobalOpts SmartPlacementIsNormal
1585 are still supported but will be removed in the future. The old and
1586 new styles can be translated according to the following table:</para>
1588 <programlisting>
1589 <fvwmref cmd="GlobalOpts"/> SmartPlacementIsReallySmart
1590 Style * SmartPlacement
1592 Style * SmartPlacement, CleverPlacement
1594 <fvwmref cmd="GlobalOpts"/> SmartPlacementIsNormal
1595 Style * SmartPlacement
1596   -->
1597 Style * SmartPlacement, CleverPlacementOff
1599 Style * DumbPlacement, RandomPlacement
1600   -->
1601 Style * CascadePlacement
1603 Style * DumbPlacement, ActivePlacement
1604   -->
1605 Style * ManualPlacement
1607 Style * SmartPlacement, \
1608 RandomPlacement, CleverPlacementOff
1609   -->
1610 Style * TileCascadePlacement
1612 Style * SmartPlacement, \
1613 ActivePlacement, CleverPlacementOff
1614   -->
1615 Style * TileManualPlacement
1617 Style * SmartPlacement, CleverPlacement
1618   -->
1619 Style * MinOverlapPlacement
1621 Style * SmartPlacement, \
1622 ActivePlacement, CleverPlacement
1623   -->
1624 Style * MinOverlapPercentPlacement
1626 Style * ActivePlacementsHonorsStartsOnPage
1627   -->
1628 Style * ManualPlacementsHonorsStartsOnPage
1630 Style * ActivePlacementsHonorsStartsOnPageOff
1631   -->
1632 Style * ManualPlacementsHonorsStartsOnPageOff
1633 </programlisting>
1635 </section>
1639 <!--  +++++++++++++++ placement options and stacking policy -->
1640 <section id="placement_policy_and_window_stacking">
1641 <title>Placement policy options and window stacking</title>
1643 <para><fvwmopt cmd="Style" opt="NoUsePPosition"/>
1644 instructs fvwm to ignore the program specified position (PPosition
1645 hint) when adding new windows.  Using PPosition is required for
1646 some applications, but if you do not have one of those its a real
1647 headache.  Many programs set PPosition to something obnoxious like
1648 0,0 (upper left corner).
1649 Note: <emphasis>!UsePPosition</emphasis>
1650 is equivalent to the deprecated option
1651 <emphasis>NoPPosition</emphasis></para>
1653 <para><fvwmopt cmd="Style" opt="NoUseUSPosition"/>
1654 works like
1655 <emphasis remap='I'>!UsePPosition</emphasis>
1656 but applies suppresses using the user specified position indicated
1657 by the program (USPosition hint).  It is generally a bad thing to
1658 override the user's choice, but some applications misuse the
1659 USPosition hint to force their windows to a certain spot on the
1660 screen without the user's consent.
1661 Note: <emphasis>!UseUSPosition</emphasis>
1662 is equivalent to the deprecated option
1663 <emphasis>!USPosition</emphasis></para>
1665 <para>
1666 <fvwmopt cmd="Style" opt="NoUseTransientPPosition"/> and
1667 <fvwmopt cmd="Style" opt="UseTransientPPosition"/>
1668 work like
1669 <emphasis remap='I'>!UsePPosition</emphasis> and
1670 <emphasis remap='I'>UsePPosition</emphasis>
1671 but apply only to transient windows.
1672 Note: <emphasis>!UseTransientPPosition</emphasis>
1673 is equivalent to the deprecated option
1674 <emphasis>!TransientPPosition</emphasis></para>
1676 <para><fvwmopt cmd="Style" opt="NoUseIconPosition"/>
1677 instructs fvwm to ignore the program specified icon position
1678 (IconPosition hint) when iconifying the window.
1679 Note: <emphasis>!UseIconPosition</emphasis>
1680 is equivalent to the deprecated option
1681 <emphasis>!IconPosition</emphasis></para>
1683 <para><fvwmopt cmd="Style" opt="StartsOnDesk"/>
1684 takes a numeric argument which is the desktop number on which the
1685 window should be initially placed.  Note that standard Xt programs
1686 can also specify this via a resource (e.g. "-xrm '*Desk: 1'").</para>
1688 <para><fvwmopt cmd="Style" opt="StartsOnPage"/>
1689 takes 1, 2, or 3 numeric arguments.  If one or three arguments are
1690 given, the first (or only) argument is the desktop number. If
1691 three arguments are given, the 2nd and 3rd arguments identify the
1692 x,y page position on the virtual window.  If two arguments are
1693 given, they specify the page position, and indicate no desk
1694 preference.  If only one argument is given,
1695 <emphasis remap='I'>StartsOnPage</emphasis>
1696 functions exactly like
1697 <emphasis remap='I'>StartsOnDesk</emphasis>.
1698 For those standard Xt programs which understand this usage, the
1699 starting desk/page can also be specified via a resource (e.g.,
1700 "-xrm '*page: 1 0 2'").
1701 <emphasis remap='I'>StartsOnPage</emphasis>
1702 in conjunction with
1703 <fvwmopt cmd="Style" opt="SkipMapping"/>
1704 is a useful technique when you want to start an app on some other
1705 page and continue with what you were doing, rather than waiting
1706 for it to appear.</para>
1708 <para><fvwmopt cmd="Style" opt="StartsOnScreen"/>
1709 takes one argument.  It can be 'p' for the primary screen, 'c' for
1710 the current screen (containing the mouse pointer), 'g' for the
1711 global screen or the screen number itself (counting from zero).  A
1712 new window is placed on the specified Xinerama screen.  The
1713 default is to place windows on the screen that contains the mouse
1714 pointer at the time the window is created.  However, those windows
1715 which are not placed by fvwm (i.e., those with a USPosition hint
1716 from a user specified geometry) are normally placed in a position
1717 relative to the global screen.  The
1718 <emphasis remap='I'>StartsOnScreen</emphasis>
1719 style is also useful to cause these windows to be placed relative
1720 to a specific Xinerama screen.  For example:</para>
1722 <programlisting>
1723 Style * StartsOnScreen c
1724 </programlisting>
1726 <para>Would cause all windows, including those with their own geometry
1727 to be placed relative to the current Xinerama screen rather than
1728 the global screen.  For those standard Xt programs which
1729 understand this usage, the starting desk/page can also be
1730 specified via a resource (e.g., "-xrm '*fvwmscreen: c'").
1731 ('fvwmscreen' was chosen because some applications already use
1732 &acute;.screen' for other purposes.)</para>
1734 <para><fvwmopt cmd="Style" opt="StartsOnPageIncludesTransients"/>
1735 causes the
1736 <emphasis remap='I'>StartsOnPage</emphasis>
1737 style to be applied even for transient windows.  This is not
1738 usually useful, since transients are usually pop ups that you want
1739 to appear in your visible viewport; but occasionally an
1740 application uses a transient for something like a startup window
1741 that needs to be coerced into place.</para>
1743 <para><fvwmopt cmd="Style" opt="ManualPlacementIgnoresStartsOnPage"/>
1744 suppresses
1745 <emphasis remap='I'>StartsOnPage</emphasis> or <emphasis remap='I'>StartsOnDesk</emphasis>
1746 placement in the event that both
1747 <emphasis remap='I'>ManualPlacement</emphasis> and <emphasis remap='I'>SkipMapping</emphasis>
1748 are in effect when a window is created.  This prevents you from
1749 interactively placing a window and then wondering where it
1750 disappeared to, because it got placed on a different desk or page.
1751 <fvwmopt cmd="Style" opt="ManualPlacementHonorsStartsOnPage"/>
1752 allows this to happen anyway.  The option has no effect if
1753 <emphasis remap='I'>SkipMapping</emphasis>
1754 is not in effect, because fvwm switches to the proper desk/page to
1755 perform interactive placement.  The default is
1756 <emphasis remap='I'>ManualPlacementIgnoresStartsOnPage</emphasis>;
1757 <emphasis remap='I'>ManualPlacementHonorsStartsOnPage</emphasis>
1758 matches the way the old
1759 <emphasis remap='I'>StartsOnDesk</emphasis>
1760 style used to handle the situation.</para>
1762 <para><fvwmopt cmd="Style" opt="CaptureHonorsStartsOnPage"/>
1763 causes the initial capture (of an already existing window) at
1764 startup to place the window according to the
1765 <emphasis remap='I'>StartsOnPage</emphasis> and <emphasis remap='I'>StartsOnScreen</emphasis>
1766 desk, page and Xinerama screen specification.
1767 <fvwmopt cmd="Style" opt="CaptureIgnoresStartsOnPage"/>
1768 causes fvwm to ignore these settings (including
1769 <emphasis remap='I'>StartsOnDesk</emphasis>)
1770 on initial capture.  The default is
1771 <emphasis remap='I'>CaptureIgnoresStartsOnPage</emphasis>.</para>
1773 <para><fvwmopt cmd="Style" opt="RecaptureHonorsStartsOnPage"/>
1774 causes a window to be placed according to, or revert to, the
1775 <emphasis remap='I'>StartsOnPage</emphasis> and <emphasis remap='I'>StartsOnScreen</emphasis>
1776 desk, page and Xinerama screen specification on
1777 <fvwmref cmd="Restart"/> or <fvwmopt cmd="Style" opt="Recapture"/>.
1778 <fvwmopt cmd="Style" opt="RecaptureIgnoresStartsOnPage"/>
1779 causes fvwm to respect the current window position on
1780 <fvwmref cmd="Restart"/> or <fvwmref cmd="Recapture"/>.
1781 The default is
1782 <emphasis remap='I'>RecaptureIgnoresStartsOnPage</emphasis>.</para>
1784 <para>
1785 <fvwmopt cmd="Style" opt="Layer"/>
1786 accepts one optional argument: a non-negative integer.  This is
1787 the layer the window is put in.  If no argument is given, any
1788 previously set value is deleted and the default layer is implied.</para>
1790 <para><fvwmopt cmd="Style" opt="StaysOnTop"/>
1791 puts the window in the top layer.  This layer can be changed by
1792 the command
1793 <fvwmref cmd="DefaultLayers"/>;
1794 the default is 6.</para>
1796 <para><fvwmopt cmd="Style" opt="StaysPut"/>
1797 puts the window in the put layer.  This layer can be changed by
1798 the command
1799 <fvwmref cmd="DefaultLayers"/>;
1800 the default is 4.</para>
1802 <para><fvwmopt cmd="Style" opt="StaysOnBottom"/>
1803 puts the window in the bottom layer.  This layer can be changed by
1804 the command
1805 <fvwmref cmd="DefaultLayers"/>;
1806 the default is 2.</para>
1808 <para><fvwmopt cmd="Style" opt="StartsLowered"/>
1809 instructs fvwm to put the window initially at the bottom of its
1810 layer rather than the default
1811 <fvwmopt cmd="Style" opt="StartsRaised"/>.</para>
1813 <para><fvwmopt cmd="Style" opt="StartShaded"/>
1814 tells fvwm to shade the window.  An optional direction argument may be
1815 given, which can be one of
1816 "<fvwmopt cmd="WindowShade" opt="North"/>",
1817 "<fvwmopt cmd="WindowShade" opt="South"/>",
1818 "<fvwmopt cmd="WindowShade" opt="West"/>",
1819 "<fvwmopt cmd="WindowShade" opt="East"/>",
1820 "<fvwmopt cmd="WindowShade" opt="NorthWest"/>",
1821 "<fvwmopt cmd="WindowShade" opt="NorthEast"/>",
1822 "<fvwmopt cmd="WindowShade" opt="SouthWest"/>",
1823 "<fvwmopt cmd="WindowShade" opt="SouthEast"/>" or
1824 if no direction is given, the default is to shade north.</para>
1826 <para><emphasis remap='I'>SkipMapping</emphasis>
1827 tells fvwm not to switch to the desk the window is on when it gets
1828 mapped initially (useful with
1829 <emphasis remap='I'>StartsOnDesk</emphasis> or <emphasis remap='I'>StartsOnPage</emphasis>).</para>
1831 <para><fvwmopt cmd="Style" opt="KeepWindowGroupsOnDesk"/>
1832 makes new windows that have the window group hint set appear on
1833 the same desk as the other windows of the same group.  Since this
1834 behavior may be confusing, the default setting is
1835 <fvwmopt cmd="Style" opt="ScatterWindowGroups"/>.
1836 The window group hint is ignored when placing windows in this
1837 case.</para>
1839 </section>
1843 <!--  +++++++++++++++ transient windows -->
1844 <section id="transient_windows">
1845 <title>Transient windows</title>
1847 <para><fvwmopt cmd="Style" opt="DecorateTransient"/>
1848 causes transient windows, which are normally left undecorated, to
1849 be given the usual fvwm decorations (title bar, buttons,
1850 etc.). Note that some pop-up windows, such as the xterm menus, are
1851 not managed by the window manager and still do not receive
1852 decorations.
1853 <fvwmopt cmd="Style" opt="NakedTransient"/>
1854 (the default) causes transient windows not to be given the
1855 standard decorations. You can only bind keys or mouse buttons to
1856 the sides and the client part of an undecorated window ('S' and
1857 &acute;W' contexts in bindings, see
1858 <fvwmref cmd="Mouse"/> and <fvwmopt cmd="Style" opt="Key"/>
1859 commands).</para>
1861 <para>A window with the
1862 <fvwmopt cmd="Style" opt="RaiseTransient"/>
1863 style that has transient windows raises all its transients when it
1864 is raised.  The
1865 <fvwmopt cmd="Style" opt="DontRaiseTransient"/>
1866 style disables this behavior.  All windows are then treated as if
1867 they had no transients.</para>
1869 <para>A window with the
1870 <fvwmopt cmd="Style" opt="LowerTransient"/>
1871 style that has transient windows lowers all its transients when it
1872 is lowered.  The
1873 <fvwmopt cmd="Style" opt="DontLowerTransient"/>
1874 style disables this behavior.  All windows are then treated as if
1875 they had no transients.</para>
1877 <para>The
1878 <fvwmopt cmd="Style" opt="StackTransientParent"/>
1879 style augments
1880 <emphasis remap='I'>RaiseTransient</emphasis> and <emphasis remap='I'>LowerTransient</emphasis>
1881 styles.  Raising a window with
1882 <emphasis remap='I'>StackTransientParent</emphasis>
1883 style transfers the raise action to the main window if the window
1884 being raised is a transient and its main window has
1885 <emphasis remap='I'>RaiseTransient</emphasis>
1886 style; this effect makes raise on a transient act just like raise
1887 on its main - the whole group is raised.  Similar behavior holds
1888 for lowering a whole group of transients when the main has
1889 <emphasis remap='I'>LowerTransient</emphasis>
1890 style.
1891 <fvwmopt cmd="Style" opt="DontStackTransientParent"/>
1892 turns this behavior off.
1893 <fvwmopt cmd="Style" opt="(Dont)StackTransientParent"/>
1894 has no effect if
1895 <emphasis remap='I'>RaiseTransient</emphasis> and <emphasis remap='I'>LowerTransient</emphasis>
1896 are not used.</para>
1898 <para>A reasonable emulation of Motif raise/lower on transients is
1899 possible like this</para>
1901 <programlisting>
1902 Style * RaiseTransient
1903 Style * LowerTransient
1904 Style * StackTransientParent
1905 </programlisting>
1907 </section>
1911 <!--  +++++++++++++++ Extended WM Hints styles -->
1912 <section id="ewmh">
1913 <title>Extended Window Manager Hints styles</title>
1915 <para>To understand the used terminology in this sub section, please
1916 read the
1917 <fvwmref sect="ewmh" opt="extended_window_manager_hints" name="Extended Window Manager Hints"/>
1918 section.</para>
1920 <para><fvwmopt cmd="Style" opt="EWMHDonateIcon"/>
1921 instructs fvwm to set the application ewmh icon hint with the icon
1922 that is used by fvwm if the application does not provide such hint
1923 (and if the icon used by fvwm is not an icon window).
1924 <fvwmopt cmd="Style" opt="EWMHDonateMiniIcon"/>
1925 does the same thing for mini icons. This allows compliant pager,
1926 taskbar, iconbox ...etc to display the same (mini) icons as
1927 fvwm. Note that on some hardware (e.g., 8-bit displays) these
1928 styles can slow down window mapping and that in general only one
1929 of these styles is needed by a compliant application.
1930 <fvwmopt cmd="Style" opt="EWMHDontDonateIcon"/>
1932 <fvwmopt cmd="Style" opt="EWMHDontDonateMiniIcon"/>
1933 restore the defaults which are to not set any ewmh (mini) icons
1934 hints.</para>
1936 <para>By default, if an application provides an ewmh icon hint of small
1937 size (i.e., height and width less than or equal to 22), then fvwm
1938 uses this icon as its mini icon.
1939 <fvwmopt cmd="Style" opt="EWMHMiniIconOverride"/>
1940 instructs fvwm to ignore ewmh icons and to use the mini icon
1941 provided by the
1942 <emphasis remap='I'>MiniIcon</emphasis>
1943 style.
1944 <fvwmopt cmd="Style" opt="EWMHNoMiniIconOverride"/>
1945 restores the default.</para>
1947 <para><fvwmopt cmd="Style" opt="EWMHUseStackingOrderHints"/>
1948 causes fvwm to use <acronym>EWMH</acronym> hints and respect <acronym>EWMH</acronym> hints which change
1949 the window layer.
1950 <fvwmopt cmd="Style" opt="EWMHIgnoreStackingOrderHints"/>
1951 causes fvwm to ignore EWMH layer hints.</para>
1953 <para>An application can ask for some reserved space on the desktop by a
1954 hint.  In the <acronym>EWMH</acronym> terminology such a hint is called a strut and
1955 it is used to compute the working area and may be used for window
1956 placement and in the maximize command.
1957 <fvwmopt cmd="Style" opt="EWMHIgnoreStrutHints"/>
1958 causes fvwm to ignore such hints, as
1959 <fvwmopt cmd="Style" opt="EWMHUseStrutHints"/>,
1960 causes fvwm to use it which is the default.</para>
1962 <para><fvwmopt cmd="Style" opt="EWMHIgnoreStateHints"/>
1963 causes fvwm to ignore initial <acronym>EWMH</acronym> state hints when a new window
1964 is mapped. The default
1965 <fvwmopt cmd="Style" opt="EWMHUseStateHints"/>
1966 causes fvwm to accept such hints.</para>
1968 <para><fvwmopt cmd="Style" opt="EWMHIgnoreWindowType"/>
1969 causes fvwm to ignore <acronym>EWMH</acronym> window type specification. The default
1970 <emphasis remap='I'>!EWMHIgnoreWindowType</emphasis>
1971 causes fvwm to style windows of specified types as such.</para>
1973 <para><fvwmopt cmd="Style" opt="EWMHMaximizeIgnoreWorkingArea"/>
1974 causes fvwm to ignore the <acronym>EWMH</acronym> working area when it executes a
1975 <fvwmref cmd="Maximize"/>
1976 command. With
1977 <fvwmopt cmd="Style" opt="EWMHMaximizeUseWorkingArea"/>
1978 the <acronym>EWMH</acronym> working area is used as with
1979 <fvwmopt cmd="Style" opt="EWMHMaximizeUseDynamicWorkingArea"/>
1980 the <acronym>EWMH</acronym> dynamic working area is used (the default).</para>
1982 <para><fvwmopt cmd="Style" opt="EWMHPlacementIgnoreWorkingArea"/>
1983 causes fvwm to ignore the <acronym>EWMH</acronym> working area when it places (or
1984 places again) a window. With
1985 <emphasis remap='I'>EWMHPlacementUseWorkingArea</emphasis>
1986 the <acronym>EWMH</acronym> working area is taken in account as with
1987 <emphasis remap='I'>EWMHPlacementUseDynamicWorkingArea</emphasis>
1988 the <acronym>EWMH</acronym> dynamic working area is taken in account (the default).
1989 Note that with the
1990 <emphasis remap='I'>MinOverlapPlacement</emphasis> and <emphasis remap='I'>MinOverlapPercentPlacement</emphasis>
1991 placement policy, the way the <acronym>EWMH</acronym> (dynamic) working area is taken
1992 in account is configurable with the
1993 <emphasis remap='I'>MinOverlapPlacementPenalties</emphasis>
1994 style.</para>
1996 </section>
2000 <!--  +++++++++++++++ miscellaneous -->
2001 <section id="miscellaneous">
2002 <title>Miscellaneous</title>
2004 <para>The
2005 <fvwmopt cmd="Style" opt="BackingStore"/>, <fvwmopt cmd="Style" opt="BackingStoreOff"/> and <fvwmopt cmd="Style" opt="BackingStoreWindowDefault"/>
2006 determine if the X server uses backing store for the window or
2007 not.
2008 <fvwmopt cmd="Style" opt="BackingStore"/>
2009 means that the X server tries to keep the obscured parts of a
2010 window in memory.  This is usually slower if the client runs on
2011 the same machine as the X server, but can be much faster if the
2012 connection is slow (see also
2013 <emphasis>SaveUnder</emphasis>
2014 below).
2015 <fvwmopt cmd="Style" opt="BackingStoreOff"/>
2016 disables backing store for the window.  By default, fvwm
2017 does not enable or disable backing store itself but leaves is as
2018 the window requested it.  To revert back to the application's
2019 choice, use the
2020 <fvwmopt cmd="Style" opt="BackingStoreWindowDefault"/>
2021 style.</para>
2023 <para>Note: This style is useless if the X server does not allow backing
2024 store.</para>
2026 <para>
2027 <fvwmopt cmd="Style" opt="SaveUnder"/>
2028 enables the corresponding window attribute in the X server.  For a
2029 window using this style, the X server tries to store the graphics
2030 below it in memory which is usually slower if the client runs on
2031 the same machine as the X server.
2032 <emphasis remap='I'>SaveUnder</emphasis>
2033 may speed up fvwm if the connection to the X server is slow
2034 (e.g. over a modem link).  To disable save under, use the
2035 <fvwmopt cmd="Style" opt="SaveUnderOff"/>
2036 style.  This is the default. See also
2037 <emphasis remap='I'>BackingStore</emphasis>
2038 above.</para>
2040 <para>Note: This style is useless if the X server does not allow save
2041 under.</para>
2043 <para><fvwmopt cmd="Style" opt="ParentalRelativity"/>
2044 enables clients that use a background pixmap of type
2045 <fvwmopt cmd="Style" opt="ParentRelative"/>
2046 to achieve transparency. Fvwm modules that support transparent
2047 colorsets require this setting.
2048 <fvwmopt cmd="Style" opt="Opacity"/>
2049 is the default and should be used for all non-transparent clients
2050 for better performance.</para>
2052 <para><fvwmopt cmd="Style" opt="MwmDecor"/>
2053 makes fvwm attempt to recognize and respect the mwm decoration
2054 hints that applications occasionally use.  To switch this style
2055 off, use the
2056 <fvwmopt cmd="Style" opt="NoDecorHint"/>
2057 style.</para>
2059 <para><fvwmopt cmd="Style" opt="MwmFunctions"/>
2060 makes fvwm attempt to recognize and respect the mwm prohibited
2061 operations hints that applications occasionally use.
2062 <fvwmopt cmd="Style" opt="HintOverride"/>
2063 makes fvwm shade out operations that mwm would prohibit, but it
2064 lets you perform the operation anyway.
2065 <fvwmopt cmd="Style" opt="NoFuncHint"/>
2066 allows turns off the mwm hints completely.</para>
2068 <para><fvwmopt cmd="Style" opt="OLDecor"/>
2069 makes fvwm attempt to recognize and respect the olwm and olvwm
2070 hints that many older XView and OLIT applications use.  Switch
2071 this option off with
2072 <fvwmopt cmd="Style" opt="NoOLDecor"/>.</para>
2074 <para>With
2075 <fvwmopt cmd="Style" opt="GNOMEIgnoreHints"/>
2076 fvwm ignores all <acronym>GNOME</acronym> hints for the window, even if <acronym>GNOME</acronym>
2077 compliance is compiled in.  This is useful for those pesky
2078 applications that try to be more clever than the user and use
2079 <acronym>GNOME</acronym> hints to force the window manager to ignore the user's
2080 preferences.  The
2081 <fvwmopt cmd="Style" opt="GNOMEUseHints"/>
2082 style switches back to the default behavior.</para>
2084 <para><fvwmopt cmd="Style" opt="UseDecor"/>
2085 This style is deprecated and will be removed in the future.  There
2086 are plans to replace it with a more flexible solution in fvwm-3.0.</para>
2088 <para><emphasis remap='I'>UseDecor</emphasis>
2089 accepts one argument: the name of a decor created with
2090 <fvwmref cmd="AddToDecor"/>.
2091 If no decor name is specified, the "Default" decor is
2092 used. Windows do not actually contain decors, but are always
2093 assigned to one.  If the decor is later modified with
2094 <fvwmref cmd="AddToDecor"/>,
2095 the changes are visible for all windows which are assigned to it.
2096 The decor for a window can be reassigned with
2097 <fvwmref cmd="ChangeDecor"/>.</para>
2099 <para><fvwmopt cmd="Style" opt="UseStyle"/>
2100 This style is deprecated and will be removed in the future.  There
2101 are plans to replace it with a more flexible solution in fvwm-3.0.</para>
2103 <para><emphasis remap='I'>UseStyle</emphasis>
2104 takes one arg, which is the name of another style.  That way you
2105 can have unrelated window names easily inherit similar traits
2106 without retyping.  For example:</para>
2108 <programlisting>
2109   Style rxvt UseStyle XTerm
2110 </programlisting>
2112 <para>Warning: If a style is built from one or more parent styles and
2113 the parent styles are changed, the derived style is not
2114 modified. To achieve this you have to issue the
2115 <emphasis remap='I'>UseStyle</emphasis>
2116 line again.</para>
2118 <para><fvwmopt cmd="Style" opt="Unmanaged"/>
2119 Windows with the
2120 <emphasis remap='I'>Unmanaged</emphasis>
2121 style option are ignored by fvwm.  They are not decorated, can not
2122 be moved or resized, etc.  You probably want to use
2123 <emphasis remap='B'>Bugopts RaiseOverUnmanaged</emphasis>
2124 too.  This option can be turned off with the
2125 <emphasis remap='I'>!Unmanaged</emphasis>
2126 style.
2127 However, windows that are already ignored at the time when the
2128 option is set must be recaptured with the
2129 <fvwmref cmd="Recapture"/>
2130 command in order to become managed.</para>
2132 <para>
2133 <fvwmopt cmd="Style" opt="State"/>
2134 sets the initial value of one of the 32 user defined states
2135 which are associated with each window.  The state number ranges
2136 from 0 to 31 and must be given as an argument.  The states have no
2137 meaning in fvwm, but they can be checked in conditional commands
2138 like
2139 <fvwmref cmd="Next"/>
2140 with the
2141 <emphasis>State</emphasis>
2142 condition and manipulated with the
2143 <fvwmref cmd="State"/>
2144 command.</para>
2146 <programlisting>
2147 # turn on state 11 for xterms ...
2148 Style xterm <fvwmref cmd="State"/> 11
2149 # ... but not for rxvts.
2150 Style rxvt !State 11
2151 </programlisting>
2154 <!--  +++++++++++++++ styles affecting window selection -->
2156 <para>Windows with the
2157 <fvwmopt cmd="Style" opt="WindowListSkip"/>
2158 styles do not appear in the menu that is created with the
2159 <fvwmref cmd="WindowList"/>
2160 command or the lists shown in several modules like
2161 <fvwmref mod="FvwmIconMan"/> or <fvwmref mod="FvwmWinList"/>.
2162 In the modules, the style can usually be ignored with an option.
2163 Please refer to the man page of the module in question for
2164 further information.  To disable this feature, use the default
2165 style
2166 <fvwmopt cmd="Style" opt="WindowListHit"/>.</para>
2168 <para>The styles
2169 <fvwmopt cmd="Style" opt="CirculateSkip"/> and <fvwmopt cmd="Style" opt="CirculateHit"/>
2170 control whether the window is considered by conditional commands,
2171 for example
2172 <fvwmref cmd="Next"/>, <fvwmopt cmd="Style" opt="Prev"/> or <fvwmopt cmd="Style" opt="All"/>.
2173 Windows with
2174 <fvwmopt cmd="Style" opt="CirculateSkip"/>,
2175 are never selected by conditional commands.  However, the styles
2176 can be overridden explicitly in the condition with the
2177 <fvwmopt cmd="Style" opt="CirculateHit"/>, <fvwmopt cmd="Style" opt="CirculateHitIcon"/> or <fvwmopt cmd="Style" opt="CirculateHitShaded"/>
2178 conditions, and some conditional commands, e.g.
2179 <fvwmref cmd="Current"/> and <fvwmopt cmd="Style" opt="All"/>,
2180 do this by default.
2181 The styles
2182 <fvwmopt cmd="Style" opt="CirculateSkipIcon"/>, <fvwmopt cmd="Style" opt="CirculateHitIcon"/>,
2183 <fvwmopt cmd="Style" opt="CirculateSkipShaded"/> and <fvwmopt cmd="Style" opt="CirculateHitShaded"/>
2184 work like
2185 <emphasis remap='I'>CirculateSkip</emphasis> and <emphasis remap='I'>CirculateHit</emphasis>
2186 but apply only to iconic or shaded windows.
2187 Note: if multiple ...Skip... options are combined, windows are
2188 only selected if they match none of the given conditions.  So,
2189 with</para>
2191 <programlisting>
2192 Style * CirculateSkipIcon, CirculateSkipShaded
2193 </programlisting>
2195 <para>only windows that are neither iconic nor shaded are selected.
2196 Note:  For historical reasons, the conditional commands understand
2197 the names of these styles as condition names.  Take care not to
2198 confuse them.</para>
2200 </section>
2207 <!--  +++++++++++++++ examples -->
2208 <section id="examples">
2209 <title>Examples</title>
2212 <programlisting>
2213 # Change default fvwm behavior to no title-
2214 # bars on windows! Also define a default icon.
2215 Style *             !Title,                \
2216                     Icon unknown1.xpm,     \
2217                     BorderWidth 4,         \
2218                     HandleWidth 5
2220 # now, window specific changes:
2221 Style Fvwm*       !Handles, Sticky,        \
2222                   WindowListSkip,          \
2223                   BorderWidth 0
2224 Style FvwmPager   StaysOnTop, BorderWidth 0
2225 Style *lock       !Handles, Sticky,        \
2226                   StaysOnTop, WindowListSkip
2227 Style xbiff       Sticky, WindowListSkip
2228 Style FvwmButtons !Handles, Sticky,        \
2229                   WindowListSkip
2230 Style sxpm        !Handles
2232 # Put title-bars back on xterms only!
2233 Style xterm     Title, Color black/grey
2235 Style rxvt        Icon term.xpm
2236 Style xterm       Icon rterm.xpm
2237 Style xcalc       Icon xcalc.xpm
2238 Style xbiff       Icon mail1.xpm
2239 Style xmh         Icon mail1.xpm,         \
2240                     StartsOnDesk 2
2241 Style xman        Icon xman.xpm
2242 Style matlab      Icon math4.xpm,         \
2243                     StartsOnDesk 3
2244 Style xmag        Icon magnifying_glass2.xpm
2245 Style xgraph      Icon graphs.xpm
2246 Style FvwmButtons Icon toolbox.xpm
2247 Style Maker       StartsOnDesk 1
2248 Style signal      StartsOnDesk 3
2250 # Fire up Netscape on the second desk, in the
2251 # middle of my 3x3 virtual desktop, and do not
2252 # bother me with it...
2253 Style Netscape* SkipMapping,              \
2254                 StartsOnPage 1 1 1
2255 </programlisting>
2257 <para>Note that all properties for a window are or'ed together.  In the
2258 above example "FvwmPager" gets the property
2259 <emphasis remap='I'>StaysOnTop</emphasis>
2260 via an exact window name match but also gets
2261 <emphasis remap='I'>!Handles</emphasis>, <emphasis remap='I'>Sticky</emphasis> and <emphasis remap='I'>WindowListSkip</emphasis>
2262 by a match to "Fvwm*".  It gets
2263 <emphasis remap='I'>!Title</emphasis>
2264 by virtue of a match to "*".  If conflicting styles are specified
2265 for a window, then the last style specified is used.</para>
2267 </section>
2269 </section>