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