Provided by: fvwm3_1.1.0+ds-1_amd64 bug

NAME

       fvwm3styles - fvwm styles

CONTROLLING WINDOW STYLES

       For readability, the commands in this section are not sorted alphabetically. The
       description of the Style command can be found at the end of this section.

       FocusStyle stylename options
           works exactly like the Style command, but accepts only the focus policy related styles
           beginning with "FP". The prefix can be removed, but at the cost of a little bit of
           time. FocusStyle is meant to make the configuration file more readable. Example:

               FocusStyle * EnterToFocus, !LeaveToUnfocus

           is equivalent to

               Style * FPEnterToFocus, !FPLeaveToUnfocus

       DestroyStyle style
           deletes the style named style. The changes take effect immediately. Note that style is
           not a wild-carded search string, but rather a case-sensitive string that should
           exactly match the original Style command.

           Destroying style "*" can be done, but isn’t really to be recommended. For example:

               DestroyStyle Application*

           This removes all settings for the style named "Application*", NOT all styles starting
           with "Application".

       DestroyWindowStyle
           deletes the styles set by the WindowStyle command on the selected window. The changes
           take effect immediately.

       UpdateStyles
           All pending updates of all windows' styles and looks are applied immediately. E.g. if
           Style, WindowStyle or TitleStyle commands were issued inside a fvwm function.

       Style stylename options ...
           The Style command is used to set attributes of a window to values other than the
           default or to set the window manager default styles.

           stylename can be a window’s name, class, visible name, or resource string. It may
           contain the wildcards '' and '?', which are matched in the usual Unix filename manner.
           Multiple style options in a single *Style command are read from left to right as if
           they were issued one after each other in separate commands. A given style always
           overrides all conflicting styles that have been issued earlier (or further left on the
           same style line).

           Note: windows that have no name (WM_NAME) are given a name of "Untitled", and windows
           that do not have a class (WM_CLASS, res_class) are given class "NoClass" and those
           that do not have a resource (WM_CLASS, res_name) are given resource "NoResource".

           If a window has the resource "fvwmstyle" set, the value of that resource is used in
           addition to any window names when selecting the style.

           options is a comma separated list containing one or more of the following keywords.
           Each group of style names is separated by slashes ('/'). The last style in these
           groups is the default. BorderWidth, HandleWidth, CornerLength, !Icon / Icon, MiniIcon,
           IconBox, IconGrid, IconFill, IconSize, !Title / Title, TitleAtBottom / TitleAtLeft /
           TitleAtRight / TitleAtTop, LeftTitleRotatedCW / LeftTitleRotatedCCW,
           RightTitleRotatedCCW / RightTitleRotatedCW, TopTitleRotated / TopTitleNotRotated,
           BottomTitleRotated / BottomTitleNotRotated, !UseTitleDecorRotation /
           UseTitleDecorRotation, StippledTitle / !StippledTitle, StippledIconTitle /
           !StippledIconTitle, IndexedWindowName / ExactWindowName, IndexedIconName /
           ExactIconName, TitleFormat / IconTitleFormat / !Borders / Borders, !Handles / Handles,
           WindowListSkip / WindowListHit, CirculateSkip / CirculateHit, CirculateSkipShaded /
           CirculateHitShaded, CirculateSkipIcon / CirculateHitIcon, Layer, StaysOnTop /
           StaysOnBottom / StaysPut, Sticky / Slippery, StickyAcrossPages / !StickyAcrossPages,
           StickyAcrossDesks / !StickyAcrossDesks, !StickyStippledTitle / StickyStippledTitle,
           !StickyStippledIconTitle / StickyStippledIconTitle, StartIconic / StartNormal,
           Colorset, HilightColorset, BorderColorset, HilightBorderColorset, IconTitleColorset,
           HilightIconTitleColorset, IconBackgroundColorset, IconTitleRelief,
           IconBackgroundRelief, IconBackgroundPadding, Font, IconFont, StartsOnDesk /
           StartsOnPage / StartsAnyWhere, StartsOnScreen, StartShaded / !StartShaded,
           ManualPlacementHonorsStartsOnPage / ManualPlacementIgnoresStartsOnPage,
           CaptureHonorsStartsOnPage / CaptureIgnoresStartsOnPage, RecaptureHonorsStartsOnPage /
           RecaptureIgnoresStartsOnPage, StartsOnPageIncludesTransients /
           StartsOnPageIgnoresTransients, IconTitle / !IconTitle, MwmButtons / FvwmButtons,
           MwmBorder / FvwmBorder, MwmDecor / !MwmDecor, MwmFunctions / !MwmFunctions,
           HintOverride / !HintOverride, !Button / Button, ResizeHintOverride /
           !ResizeHintOverride, OLDecor / !OLDecor, StickyIcon / SlipperyIcon,
           StickyAcrossPagesIcon / !StickyAcrossPagesIcon, StickyAcrossDesksIcon /
           !StickyAcrossDesksIcon, ManualPlacement / CascadePlacement / MinOverlapPlacement /
           MinOverlapPercentPlacement / TileManualPlacement / TileCascadePlacement /
           PositionPlacement, MinOverlapPlacementPenalties, MinOverlapPercentPlacementPenalties,
           DecorateTransient / NakedTransient, DontRaiseTransient / RaiseTransient,
           DontLowerTransient / LowerTransient, DontStackTransientParent / StackTransientParent,
           SkipMapping / ShowMapping, ScatterWindowGroups / KeepWindowGroupsOnDesk, UseDecor,
           UseStyle, !UsePPosition / NoPPosition / UsePPosition, !UseUSPosition, NoUSPosition /
           UseUSPosition, !UseTransientPPosition, NoTransientPPosition / UseTransientPPosition,
           !UseTransientUSPosition / NoTransientUSPosition / UseTransientUSPosition,
           !UseIconPosition / NoIconPosition / UseIconPosition, Lenience / !Lenience,
           ClickToFocus / SloppyFocus / MouseFocus|FocusFollowsMouse / NeverFocus,
           ClickToFocusPassesClickOff / ClickToFocusPassesClick, ClickToFocusRaisesOff /
           ClickToFocusRaises, MouseFocusClickRaises / MouseFocusClickRaisesOff, GrabFocus /
           GrabFocusOff, GrabFocusTransientOff / GrabFocusTransient, FPFocusClickButtons,
           FPFocusClickModifiers, !FPSortWindowlistByFocus / FPSortWindowlistByFocus,
           FPClickRaisesFocused / !FPClickRaisesFocused, FPClickDecorRaisesFocused /
           !FPClickDecorRaisesFocused, FPClickIconRaisesFocused / !FPClickIconRaisesFocused,
           !FPClickRaisesUnfocused / FPClickRaisesUnfocused, FPClickDecorRaisesUnfocused /
           !FPClickDecorRaisesUnfocused, FPClickIconRaisesUnfocused /
           !FPClickIconRaisesUnfocused, FPClickToFocus / !FPClickToFocus, FPClickDecorToFocus /
           !FPClickDecorToFocus, FPClickIconToFocus / !FPClickIconToFocus, !FPEnterToFocus /
           FPEnterToFocus, !FPLeaveToUnfocus / FPLeaveToUnfocus, !FPFocusByProgram /
           FPFocusByProgram, !FPFocusByFunction / FPFocusByFunction, FPFocusByFunctionWarpPointer
           / !FPFocusByFunctionWarpPointer, FPLenient / !FPLenient, !FPPassFocusClick /
           FPPassFocusClick, !FPPassRaiseClick / FPPassRaiseClick, FPIgnoreFocusClickMotion /
           !FPIgnoreFocusClickMotion, FPIgnoreRaiseClickMotion / !FPIgnoreRaiseClickMotion,
           !FPAllowFocusClickFunction / FPAllowFocusClickFunction, !FPAllowRaiseClickFunction /
           FPAllowRaiseClickFunction, FPGrabFocus / !FPGrabFocus, !FPGrabFocusTransient /
           FPGrabFocusTransient, FPOverrideGrabFocus / !FPOverrideGrabFocus, FPReleaseFocus /
           !FPReleaseFocus, !FPReleaseFocusTransient / FPReleaseFocusTransient,
           FPOverrideReleaseFocus / !FPOverrideReleaseFocus, StartsLowered / StartsRaised,
           IgnoreRestack / AllowRestack, FixedPosition / VariablePosition, FixedUSPosition /
           VariableUSPosition, FixedPPosition / VariablePPosition, FixedSize / VariableSize,
           FixedUSSize / VariableUSSize, FixedPSize / VariablePSize, !Closable / Closable,
           !Iconifiable / Iconifiable, !Maximizable / Maximizable, !AllowMaximizeFixedSize /
           AllowMaximizeFixedSize, IconOverride / NoIconOverride / NoActiveIconOverride,
           DepressableBorder / FirmBorder, MinWindowSize, MaxWindowSize, IconifyWindowGroups /
           IconifyWindowGroupsOff, ResizeOpaque / ResizeOutline, BackingStore / BackingStoreOff /
           BackingStoreWindowDefault, Opacity / ParentalRelativity, SaveUnder / SaveUnderOff,
           WindowShadeShrinks / WindowShadeScrolls, WindowShadeSteps, WindowShadeAlwaysLazy /
           WindowShadeBusy / WindowShadeLazy, EWMHDonateIcon / EWMHDontDonateIcon,
           EWMHDonateMiniIcon / EWMHDontDonateMiniIcon, EWMHMiniIconOverride /
           EWMHNoMiniIconOverride, EWMHUseStackingOrderHints / EWMHIgnoreStackingOrderHints,
           EWMHIgnoreStateHints / EWMHUseStateHints, EWMHIgnoreStrutHints / EWMHUseStrutHints,
           EWMHIgnoreWindowType / !EWMHIgnoreWindowType, EWMHMaximizeIgnoreWorkingArea /
           EWMHMaximizeUseWorkingArea / EWMHMaximizeUseDynamicWorkingArea,
           EWMHPlacementIgnoreWorkingArea / EWMHPlacementUseWorkingArea /
           EWMHPlacementUseDynamicWorkingArea, MoveByProgramMethod, Unmanaged, State, SnapGrid,
           SnapAttraction, EdgeMoveDelay, EdgeResizeDelay. EdgeMoveResistance, InitialMapCommand

           In the above list some options are listed as style-option/opposite-style-option. The
           opposite-style-option for entries that have them describes the fvwm default behavior
           and can be used if you want to change the fvwm default behavior.

           Focus policy
               ClickToFocus instructs fvwm to give the focus to a window when it is clicked in.
               The default MouseFocus (or its alias FocusFollowsMouse) tells fvwm to give a
               window the focus as soon as the pointer enters the window, and take it away when
               the pointer leaves the window. SloppyFocus is similar, but doesn’t give up the
               focus if the pointer leaves the window to pass over the root window or a
               ClickToFocus window (unless you click on it, that is), which makes it possible to
               move the mouse out of the way without losing focus. A window with the style
               NeverFocus never receives the focus. This is useful for modules like FvwmButtons.
               for example. Note: Once any of the "FP..." styles has been used, the defaults that
               come with the basic focus policies are not restored when the latter are used
               again. For example, once !FPGrabFocus has been used, using ClickToFocus does not
               restore FPGrabFocus.

               The focus model can be augmented with several additional options. In fvwm-2.5.3
               and later, there are a large number of advanced options beginning with "FP" or
               "!FP". These options shall replace the older options one day and are described
               first. Using any of these new options may limit compatibility with older releases.
               In general, options beginning with "FP" turn a feature on, while those beginning
               with "!FP" turn it off.

           Focusing the window
               With FPEnterToFocus, when the pointer enters a window it receives focus.

               With FPLeaveToUnfocus a window loses focus when the pointer leaves it.

               With FPClickToFocus, FPClickDecorToFocus or FPClickIconToFocus, a window receives
               focus when the inside of the window or the decorations or its icon is clicked.

               The FPFocusByProgram style allows windows to take the focus themselves.

               The !FPFocusByFunction style forbids that a window receives the focus via the
               Focus and FlipFocus commands.

               The FPFocusByFunctionWarpPointer style controls if the pointer is warped to a
               selected window when the Focus command is used.

               FPLenient allows focus on windows that do not want it, like FvwmPager or xclock.

               The FPFocusClickButtons style takes a list of mouse buttons that can be clicked to
               focus or raise a window when the appropriate style is used. The default is to use
               the first three buttons ("123").

               The FPFocusClickModifiers style takes a list of modifier keys just like the Key
               command. The exact combination of modifier keys must be pressed for the click to
               focus or raise a window to work. The default is to use no modifiers ("N").

               With the FPPassFocusClick style, the click that was used to focus a window is
               passed to the application.

               With the FPAllowFocusClickFunction style, the click that was used to focus a
               window can also trigger a normal action that was bound to the window with the
               Mouse command).

               If the FPIgnoreFocusClickMotion style is used, clicking in a window and then
               dragging the pointer with the button held down does not count as the click to
               focus the window. Instead, the application processes these events normally. This
               is useful to select text in a terminal window with the mouse without raising the
               window. However, mouse bindings on the client window are not guaranteed to work
               anymore (see Mouse command). This style forces the initial click to be passed to
               the application. The distance that the pointer must be moved to trigger this is
               controlled by the MoveThreshold command.

               The FPSortWindowlistByFocus and !FPSortWindowlistByFocus styles control whether
               the internal window list is sorted in the order the windows were focused or in the
               order they were created. The latter is the default for ClickToFocus and
               SloppyFocus.

               Clicking the window to raise

               The styles FPClickRaisesFocused, FPClickDecorRaisesFocused and
               FPClickIconRaisesFocused allow one to raise the window when the interior or the
               decorations or the icon of the window is clicked while the window is already
               focused.

               The styles FPClickRaisesUnfocused, FPClickDecorRaisesUnfocused and
               FPClickIconRaisesUnfocused allow one to raise the window when the interior or the
               decorations or the icon of the window is clicked while the window is not yet
               focused.

               With the FPPassRaiseClick style, the click that was used to raise the window is
               passed to the application.

               With the FPAllowRaiseClickFunction style, the click that was used to raise the
               window can also trigger a normal action that was bound to the window with the
               Mouse command.

               If the FPIgnoreRaiseClickMotion style is used, clicking in a window and then
               dragging the pointer with the button held down does not count as the click to
               raise the window. Instead, the application processes these events normally. This
               is useful to select text in a terminal window with the mouse without raising the
               window. However, mouse bindings on the client window are not guaranteed to work
               anymore (see Mouse command. Note that this style forces that the initial click is
               passed to the application. The distance that the pointer must be moved to trigger
               this is controlled by the MoveThreshold command.

               Grabbing the focus when a new window is created

               New normal or transient windows with the FPGrabFocus or FPGrabFocusTransient style
               automatically receive the focus when they are created. FPGrabFocus is the default
               for windows with the ClickToFocus style. Note that even if these styles are
               disabled, the application may take the focus itself. Fvwm can not prevent this.

               The OverrideGrabFocus style instructs fvwm to never take away the focus from such
               a window via the GrabFocus or GrabFocusTransient styles. This can be useful if you
               like to have transient windows receive the focus immediately, for example in a web
               browser, but not while you are working in a terminal window or a text processor.

               The above three styles are accompanied by FPReleaseFocus, FPReleaseFocusTransient
               and FPOverrideReleaseFocus. These control if the focus is returned to another
               window when the window is closed. Otherwise no window or the window under the
               pointer receives the focus.

               ClickToFocusPassesClickOff and ClickToFocusPassesClick controls whether a mouse
               click to focus a window is sent to the application or not. Similarly,
               ClickToFocusRaisesOff/MouseFocusClickRaisesOff and
               ClickToFocusRaises/MouseFocusClickRaises control if the window is raised (but
               depending on the focus model).

               Note: in fvwm versions prior to 2.5.3, the "Click..." options applied only to
               windows with ClickToFocus while the "Mouse..." options applied to windows with a
               different focus policy. This is no longer the case.

               The old GrabFocus style is equivalent to using FPGrabFocus
               FPReleaseFocus.

               The old GrabFocusTransient style is equivalent to using FPGrabFocusTransient +
               FPReleaseFocusTransient.

               Lenience is equivalent to the new style FPLenient.

       Window title
           The Title and !Title options determine whether the window is decorated with a
           title-bar. By default all windows have a title-bar. NoTitle is equivalent to !Title
           but is deprecated.

           Windows with the TitleAtBottom, TitleAtLeft or TitleAtRight style have a title-bar
           below, to the left or to the right of the window instead of above as usual. The
           TitleAtTop style restores the default placement. Even if the window has the !Title
           style set, this affects the WindowShade command. Please check the WindowShade command
           for interactions between that command and these styles. Titles on the left or right
           side of the windows are augmented by the following styles:

           Normally, the text in titles on the left side of a window is rotated counterclockwise
           by 90 degrees from the normal upright position and 90 degrees clockwise for titles on
           the right side. It can also be rotated in the opposite directions with
           LeftTitleRotatedCW if TitleAtLeft is used, and with RightTitleRotatedCCW if
           TitleAtRight is used. The defaults can be restored with LeftTitleRotatedCCW and
           RightTitleRotatedCW. A normal horizontal text may be rotated as well with
           TopTitleRotated if TitleAtTop is used, and with BottomTitleRotated if TitleAtBottom is
           used. The defaults can be restored with TopTitleNotRotated and BottomTitleNotRotated.

           By default the title bar decoration defined using the TitleStyle command is rotated
           following the title text rotation (see the previous paragraph). This can be disabled
           by using the !UseTitleDecorRotation style. UseTitleDecorRotation reverts back to the
           default.

           With the StippledTitle style, titles are drawn with the same effect that is usually
           reserved for windows with the Sticky, StickyAcrossPages or StickyAcrossDesks style.
           !StippledTitle reverts back to normal titles. StippledTitleOff is equivalent to
           !StippledTitle but is deprecated.

           Colorset takes the colorset number as its sole argument and overrides the colors set
           by Color. Instead, the corresponding colors from the given colorset are used. Note
           that all other features of a colorset are not used. Use the Colorset decoration style
           in the TitleStyle and ButtonStyle command for that. To stop using the colorset, the
           colorset number is omitted.

           BorderColorset takes eight positive integers as its arguments and will apply the given
           colorsets to the eight individual components of the window border.

           For backwards compatibility, if one integer is supplied, that is applied to all window
           border components.

           The border is split up into the following definitions, and is the same order as the
           colorsets which will be applied to the border.

                   North, North East, East, South East, South, South West, West, North West

           North, East, South, and West refer to the top, left, bottom, and right sides of the
           window border.

           NE, SE, SW, and NW refer to the window handles.

           NOTE: due to how window handles are rendered, there is no way to make one complete
           edge of a window the same color as defined by either North, South, East, or West.

           The HilightBorderColorset style option works the same as BorderColorset but is used
           when the window has the focus.

           !IconTitle disables displaying icon labels while the opposite style IconTitle enables
           icon labels (default behaviour). NoIconTitle is equivalent to !IconTitle but is
           deprecated.

           IconTitleColorset takes the colorset number as its sole argument and overrides the
           colors set by Color or Colorset. To stop using this colorset, the argument is omitted.

           HilightIconTitleColorset takes the colorset number as its sole argument and overrides
           the colors set by HilightColor or HilightColorset. To stop using this colorset, the
           argument is omitted.

           IconBackgroundColorset takes the colorset number as its sole argument and uses it to
           set a background for the icon picture. By default the icon picture is not drawn onto a
           background image. To restore the default, the argument is omitted.

           IconTitleRelief takes one numeric argument that may be between -50 and +50 pixels and
           defines the thickness of the 3D relief drawn around the icon title. With negative
           values the icon title gets a pressed in look. The default is 2 and it is restored if
           the argument is omitted.

           IconBackgroundRelief takes one numeric argument that may be between -50 and +50 pixels
           and defines the thickness of the 3D relief drawn around the icon picture background
           (if any). With negative values the icon background gets a pressed in look. The default
           is 2 and it is restored if the argument is omitted.

           IconBackgroundPadding takes one numeric argument that may be between 0 and 50 pixels
           and defines the amount of free space between the relief of the icon background picture
           (if any) and the icon picture. The default is 2 and it is restored if the argument is
           omitted.

           The Font and IconFont options take the name of a font as their sole argument. This
           font is used in the window or icon title. By default the font given in the DefaultFont
           command is used. To revert back to the default, use the style without the name
           argument. These styles replace the older WindowFont and IconFont commands.

           The deprecated IndexedWindowName style causes fvwm to use window titles in the form

               name (i)

           where name is the exact window name and i is an integer which represents the i th
           window with name as window name. This has been replaced with:

               TitleFormat %n (%t)

           ExactWindowName restores the default which is to use the exact window name. Deprecated
           in favour of:

               TitleFormat %n

           IndexedIconName and ExactIconName work the same as IndexedWindowName and
           ExactWindowName styles but for the icon titles. Both are deprecated in favour of:

               IconTitleFormat %n (%t)
               IconTitleFormat %n

           TitleFormat describes what the visible name of a window should look like, with the
           following placeholders being valid:

           %n
               Insert the window’s name.

           %i
               Insert the window’s icon name.

           %c
               Insert the window’s class name.

           %r
               Insert the window’s resource name.

           %t
               Insert the window count.

           %I
               Insert the window ID.

           %%
               Insert a literal '%' character.

               Any amount of whitespace may be used, along with other characters to make up the
               string — but a valid TitleFormat string must contain at least one of the
               placeholders mentioned. No quote stripping is performed on the string, so for
               example the following is printed verbatim:

                   TitleFormat " %n " -> [%t] ->      [%c]

               Note: It’s perfectly possible to use a TitleFormat which can result in wiping out
               the visible title altogether. For example:

                   TitleFormat %z

           Simply because the placeholder '%z' isn’t supported. This is not a bug but rather a
           facet of how the formatting parser works.

           + IconTitleFormat describes what the visible icon name of a window should look like,
           with the options being the same as TitleFormat.

       Title buttons
           Button and !Button take a numeric argument which is the number of the title-bar button
           which is to be shown or omitted. NoButton is equivalent to !Button but is deprecated.

           MwmButtons makes the Maximize button look pressed-in when the window is maximized. See
           the MwmDecorMax flag in ButtonStyle for more information. To switch this style off
           again, use the FvwmButtons style.

       Borders
           !Borders suppresses the window border (but not the title) completely. The Borders
           style enables them again. Without borders, all other styles affecting window borders
           are meaningless.

           MwmBorder makes the 3D bevel more closely match Mwm’s. FvwmBorder turns off the
           previous option.

           With the !Handles style, the window does not get the handles in the window corners
           that are commonly used to resize it. With !Handles, the width from the BorderWidth
           style is used. By default, or if Handles is specified, the width from the HandleWidth
           style is used. NoHandles is equivalent to !Handles but is deprecated.

           HandleWidth takes a numeric argument which is the width of the border to place the
           window if it does have resize-handles. Using HandleWidth without an argument restores
           the default.

           CornerLength takes a single numeric argument which is the length, in pixels, of the
           corner handles. The default is the title height. Using CornerLength without an
           argument restores the default.

           BorderWidth takes a numeric argument which is the width of the border to place the
           window if it does not have resize-handles. It is used only if the !Handles style is
           specified too. Using BorderWidth without an argument restores the default.

           DepressableBorder makes the border parts of the window decoration look sunken in when
           a button is pressed over them. This can be disabled again with the FirmBorder style.

       Icons, shading, maximizing, movement, resizing
           Icon takes an (optional) unquoted string argument which is the icon bitmap or pixmap
           to use. Icons specified this way override pixmap icons, but not icon windows or the
           ewmh icon, provided by the client in the application (with the WM_HINTS property or
           with the ewmh NET_WM_ICON property). The _IconOverride style changes the behavior to
           override any client-provided icons; the NoIconOverride style changes the behavior to
           not override any client-provided icons; the default overriding behavior can be
           activated with the NoActiveIconOverride style. With this style, fvwm uses application
           provided icons if the icon is changed but uses the icon provided in the configuration
           file until then.

           There is one exception to these rules, namely

               Style * Icon unknown.xpm

           doesn’t force the unknown.xpm icon on every window, it just sets the default icon like
           the DefaultIcon command. If you really want all windows to have the same icon, you can
           use

               Style ** Icon unknown.xpm

           If the NoIcon attribute is set then the specified window simply disappears when it is
           iconified. The window can be recovered through the window-list. If Icon is set without
           an argument then the NoIcon attribute is cleared but no icon is specified. An example
           which allows only the FvwmPager module icon to exist:

               Style * NoIcon
               Style FvwmPager Icon

           IconBox takes no argument, four numeric arguments (plus optionally a screen
           specification), an X11 geometry string or the string "none":

               IconBox [screen scr-spec] l t r b

           or

               IconBox geometry

           Where l is the left coordinate, t is the top, r is right and b is bottom. Negative
           coordinates indicate distance from the right or bottom of the screen. If the first
           argument is the word screen, the scr-spec argument specifies the RandR screen on which
           the IconBox is defined ´or the additional 'w' for the screen where the window center
           is located. This is only useful with multiple screens. The "l t r b" specification is
           more flexible than an X11 geometry. For example:

               IconBox -80 240 -1 -1

           defines a box that is 80 pixels wide from the right edge, 240 pixels down from the
           top, and continues to the bottom of the screen.

           Perhaps it is easier to use is an X11 geometry string though:

               IconBox 1000x70-1-1

           places an 1000 by 70 pixel icon box on the bottom of the screen starting in the lower
           right hand corner of the screen. One way to figure out a geometry like this is to use
           a window that resizes in pixel increments, for example, xv. Then resize and place the
           xv window where you want the iconbox. Then use FvwmIdent to read the windows geometry.
           The icon box is a region of the screen where fvwm attempts to put icons for any
           matching window, as long as they do not overlap other icons. Multiple icon boxes can
           be defined as overflow areas. When the first icon box is full, the second one is
           filled. All the icon boxes for one style must be defined in one Style command. For
           example:

               Style * IconBox -80 240 -1 -1, \
                 IconBox 1000x70-1-1

           A Style command with the IconBox option replaces any icon box defined previously by
           another Style command for the same style. That’s why the backslash in the previous
           example is required.

           Note: The geometry for the icon box command takes the additional screen specifier "@w"
           in case RandR is used. This designates the screen where the window center is located.
           The additional screen specifier is not allowed anywhere else.

           If you never define an icon box, or you fill all the icon boxes, fvwm has a default
           icon box that covers the screen, it fills top to bottom, then left to right, and has
           an 80x80 pixel grid. To disable all but the default icon box you can use IconBox
           without arguments in a separate Style command. To disable all icon boxes including the
           default icon box, the argument "none" can be specified.

           Hint: You can auto arrange your icons in the icon box with a simple fvwm function. Put
           the "DeiconifyAndRearrange" function below in your configuration file:

               AddToFunc DeiconifyAndRearrange
                + C Iconify off
                + C All (CurrentPage, Iconic) PlaceAgain Icon

           And then replace all places where you call the Iconify command to de-iconify an icon
           with a call to the new function. For example replace

               AddToFunc IconFunc
                + C Iconify off
                + M Raise
                + M Move
                + D Iconify off

               Mouse 1 I A Iconify off

           with

               AddToFunc IconFunc
                + C DeiconifyAndRearrange
                + M Raise
                + M Move
                + D DeiconifyAndRearrange

               Mouse 1 I A DeiconifyAndRearrange

           IconGrid takes 2 numeric arguments greater than zero.

               IconGrid x y

           Icons are placed in an icon box by stepping through the icon box using the x and y
           values for the icon grid, looking for a free space. The default grid is 3 by 3 pixels
           which gives a tightly packed appearance. To get a more regular appearance use a grid
           larger than your largest icon. Use the IconSize argument to clip or stretch an icon to
           a maximum size. An IconGrid definition must follow the IconBox definition that it
           applies to:

               Style * IconBox -80x240-1-1, IconGrid 90 90

           IconFill takes 2 arguments.

               IconFill Bottom Right

           Icons are placed in an icon box by stepping through the icon box using these arguments
           to control the direction the box is filled in. By default the direction is left to
           right, then top to bottom. This would be expressed as:

               IconFill left top

           To fill an icon box in columns instead of rows, specify the vertical direction (top or
           bottom) first. The directions can be abbreviated or spelled out as follows: "t",
           "top", "b", "bot", "bottom", "l", "lft", "left", "r", "rgt", "right". An IconFill
           definition must follow the IconBox definition that it applies to:

               Style * IconBox -80x240-1-1, IconFill b r

           IconSize sets limits on the size of an icon image. Both user-provided and
           application-provided icon images are affected.

               IconSize [ width height [ maxwidth maxheight ] ]

           All arguments are measured in pixels. When all four arguments are passed to IconSize,
           width and height represent the minimum size of an icon, and maxwidth and maxheight
           represent the maximum size of an icon. Icon images that are smaller than the minimum
           size are padded. Icon images that are bigger than the maximum size are clipped.

           If only two arguments are passed to IconSize, width and height represent the absolute
           size of an icon. Icons covered by this style are padded or clipped to achieve the
           given size.

           If no arguments are specified, the default values are used for each dimension. This
           effectively places no limits on the size of an icon.

           The value of "-1" can be used in place of any of the arguments to specify the default
           value for that dimension.

           In addition to the numeric arguments, 1 additional argument can be "Stretched",
           "Adjusted", or "Shrunk".

           Note that module provided icon managers are not affected by this style.

           MiniIcon specifies a pixmap to use as the miniature icon for the window. This
           miniature icon can be drawn in a title-bar button (see ButtonStyle), and can be used
           by various fvwm modules (FvwmIconMan and FvwmPager). It takes the name of a pixmap as
           an argument.

           WindowShadeShrinks and WindowShadeScrolls control if the contents of a window that is
           being shaded with the WindowShade command are scrolled (default) or if they stay in
           place. The shrinking mode is a bit faster

           The WindowShadeSteps option selects the number of steps for animation when shading a
           window with WindowShade. It takes one number as its argument. If the number has a
           trailing 'p' it sets the number of pixels to use as the step size instead of a fixed
           number of steps. 0 disables the animation. This happens too if the argument is omitted
           or invalid.

           The WindowShade command has two modes of operation: busy and lazy shading. Busy
           shading can be 50% slower than lazy shading, but the latter can look strange under
           some conditions, for example, if the window borders, buttons or the title are filled
           with a tiled pixmap. Also, the window handles are not drawn in lazy mode and the
           border relief may only be drawn partially right before the window reaches the shaded
           state or tight after leaves the unshaded state. By default, fvwm uses lazy mode if
           there are no bad visual effects (not counting the window handles) and busy mode
           otherwise. Use the WindowShadeAlwaysLazy or WindowShadeBusy to force using the lazy or
           busy mode. The default setting is restored with WindowShadeLazy.

           ResizeOpaque instructs fvwm to resize the corresponding windows with their contents
           visible instead of using an outline. Since this causes the application to redraw
           frequently it can be quite slow and make the window flicker excessively, depending on
           the amount of graphics the application redraws. The ResizeOutline style (default)
           negates the ResizeOpaque style. Many applications do not like their windows being
           resized opaque, e.g. XEmacs, Netscape or terminals with a pixmap background. If you do
           not like the result, do not use the ResizeOpaque style for these windows. To exempt
           certain windows from opaque resizing you could use these lines in your configuration
           file:

               Style * ResizeOpaque
               Style rxvt ResizeOutline
               Style emacs ResizeOutline

           Sticky makes the window sticky, i.e. it is always visible on each page and each desk.
           The opposite style, Slippery reverts back to the default.

           StickyIcon makes the window sticky when it’s iconified. It de-iconifies on top the
           active desktop. SlipperyIcon reverts back to the default.

           StickyAcrossPages and StickyAcrossPagesIcon work like Sticky and StickyIcon, but stick
           the window only across pages, not desks while StickyAcrossDesks and
           StickyAcrossDesksIcon works the other way round.

           Windows that have been marked as Sticky or StickyAcrossDesks or StickyAcrossPages will
           have stipples drawn on the titlebar. This can be negated with the !StickyStippledTitle
           style. The style StickyStippledTitle puts back the stipples where that window has also
           been marked as Sticky. Note that this is the default style for Sticky windows. Sticky
           icons will have stipples drawn on the icon title. This can be disabled in the same way
           with the !StickyStippledIconTitle style.

           Windows with the StartIconic style are shown as icons initially. Note that some
           applications counteract that by deiconifying themselves. The default is to not iconify
           windows and can be set with the StartNormal style.

           StickyIcon makes the window sticky when it’s iconified. It de-iconifies on top the
           active desktop. SlipperyIcon reverts back to the default.

           StickyIconPage works like StickyIcon, but sticks the icon only across pages, not desks
           while StickyIconDesk works the other way round.

           StippledIconTitle works like StippledTitle in that it draws stipples on the titles of
           icons but doesn’t make the icon sticky.

           IgnoreRestack makes fvwm ignore attempts of clients to raise or lower their own
           windows. By default, the opposite style, AllowRestack is active.

           FixedPosition and FixedUSPosition make fvwm ignore attempts of the user to move the
           window. It is still possible to move the window by resizing it. To allow the user to
           move windows, use the VariablePosition or VariableUSPosition style.

           FixedSize and FixedUSSize make fvwm ignore attempts of the user to resize the window.
           To allow the user to resize windows, use the VariableSize or VariableUSSize style.

           FixedPPosition and FixedPSize make fvwm ignore attempts of the program to move or
           resize its windows. To allow this kind of actions, use the VariablePPosition or
           VariablePSize style. These styles may sometimes affect the initial placement and
           dimensions of new windows (depending on the application). If windows are created at
           strange places, try either the VariablePPosition or !UsePPosition styles. The
           FixedPSize style may screw up window dimensions for some applications. Do Not use this
           style in this case.

           MoveByProgramMethod affects how fvwm reacts to requests by the application to move its
           windows. By default, fvwm tries to detect which method to use, but it sometimes
           detects the wrong method. You may come across a window that travels across the screen
           by a few pixels when the application resizes it, moves to a screen border with the
           frame decorations off screen, that remembers its position for the next time it starts
           but appears in a slighly shifted position, or that attepmts to become full screen but
           has the. Try out both options, UseGravity and IgnoreGravity on the window (and that
           window only) and see if that helps. By default, fvwm uses the AutoDetect method. Once
           the method was detected, it is never changed again. As long as fvwm can not detect the
           proper method, it uses IgnoreGravity. To force fvwm to retry the detection, use one of
           the other two options first and then use AutoDetect again.

           Note: This option was introduced to alleviate a problem with the ICCCM specification.
           The ICCCM clearly states that the UseGravity option should be used, but traditionally
           applications ignored this rule.

           Closable enables the functions Close, Delete and Destroy to be performed on the
           windows. This is on by default. The opposite, !Closable, inhibits the window to be
           closed.

           Iconifiable enables the function Iconify to be performed on the windows. This is on by
           default. The opposite, !Iconifiable, inhibits the window from being iconified.

           Maximizable enables the function Maximize to be performed on the windows. This is on
           by default. The opposite, !Maximizable, inhibits the window from being maximized.

           AllowMaximizeFixedSize enables the function Maximize to be performed on windows that
           are not resizable, unless maximization has been disabled either using the style
           !Maximizable or through WM hints. This is on by default. The opposite,
           !AllowMaximizeFixedSize, inhibits all windows that are not resizable from being
           maximized.

           ResizeHintOverride instructs fvwm to ignore the program supplied minimum and maximum
           size as well as the resize step size (the character size in many applications). This
           can be handy for broken applications that refuse to be resized. Do not use it if you
           do not need it. The default (opposite) style is NoResizeOverride.

           MinWindowSize [ width [ p | c ] height [ p | c ] ] Tells fvwm the minimum width and
           height of a window. The values are the percentage of the total screen area. If the
           letter 'p' is appended to either of the values, the numbers are interpreted as pixels.
           If the letter 'c' is appended to either of the values, the numbers are in terms of the
           client window’s size hints, which can be useful for windows such as terminals to
           specify the number of rows or columns. This command is useful to deal with windows
           that freak out if their window becomes too small. If you omit the parameters or their
           values are invalid, both limits are set to 0 pixels (which is the default value).

           MaxWindowSize [ width [ p | c ] height [ p | c ] ] Tells fvwm the maximum width and
           height of a window. The values are the percentage of the total screen area. If the
           letter 'p' is appended to either of the values, the numbers are interpreted as pixels.
           If the letter 'c' is appended to either of the values, the numbers are in terms of the
           client window’s size hints, which can be useful for windows such as terminals to
           specify the number of rows or columns. This command is useful to force large
           application windows to be fully visible. Neither height nor width may be less than 100
           pixels. If you omit the parameters or their values are invalid, both limits are set to
           32767 pixels (which is the default).

           With IconifyWindowGroups all windows in the same window group are iconified and
           deiconified at once when any window in the group is (de)iconified. The default is
           IconifyWindowGroupsOff, which disables this behavior. Although a number of
           applications use the window group hint, it is rarely used in a proper way, so it is
           probably best to use IconifyWindowGroups only for selected applications.

           The option SnapAttraction affects interactive window movement: If during an
           interactive move the window or icon comes within proximity pixels of another the
           window or icon, it is moved to make the borders adjoin. The default of 0 means that no
           snapping happens. Calling this command without arguments turns off snap attraction and
           restores the default behavior. Please refer also to the SnapGrid option.

           The second argument optional and may be set to one of the five following values: With
           All both icons and windows snap to other windows and other icons. SameType lets
           windows snap only to windows, and icons snap only to icons. With Windows windows snap
           only to other windows. Similarly with Icons icons snap only to other icons. With None
           no snapping takes place. This option can be useful in conjunction with the thirs
           argument if you only want to snap against the screen edges. The default behavior is
           All.

           The third and last optional argument may be set to one of the four following values:

           •   With Screen the already snapping icons or windows, which is controlled by the
               second argument, will snap now also to the screen edges.

           •   ScreenWindows snaps only windows to the screen edges.

           •   ScreenIcons snaps only icons to the screen edges.

           •   ScreenAll snaps windows and icons to the screen edges.

       The option SnapGrid defines an invisible grid on the screen. During an interactive move a
       window or icon is positioned such that its location (top left corner) is coincident with
       the nearest grid point. The default x-grid-size and y-grid-size setting are both 1, which
       is effectively no grid all.

       An interactive move with both SnapGrid and SnapAttraction results in the window being
       moved to be adjacent to the nearest window border (if within snap proximity) or grid
       position. The window moves the shortest distance possible to satisfy both SnapGrid and
       SnapAttraction. Note that the x and y coordinates are not coupled. For example, a window
       may snap to another window on the x axis while snapping to a grid point on the y axis.
       Using this style without arguments reinstates the default settings.

       The styles EdgeMoveDelay and EdgeResizeDelay define how hard it is to change the desktop
       viewport by moving or resizing a window over the edge of the screen. The parameter tells
       how many milliseconds the pointer must spend on the screen edge before fvwm moves the
       viewport. The command EdgeScroll determines how far the viewport is scrolled. If -1 is
       given as the delay, page flipping is disabled completely. The defaults are no delay for
       moving (0) and no flipping for resizing (-1). Using these styles without any argument
       restores the default settings. Note that, with

           EdgeScroll 0 0

       it is still possible to move or resize windows across the edge of the current screen. See
       also EdgeThickness.

       The option EdgeMoveResistance makes it easier to place a window directly adjacent to a
       RandR screen’s edge. It takes one or two parameters. The first parameter tells how many
       pixels over an outside edge of the screen a window’s edge must move before it actually
       moves partially off the screen. The optional second parameter does the same as the first,
       but for inside edges (shared edge between two RandR monitors). If omitted, there is no
       resistance between inside edges. Note that the center of the window being moved determines
       the screen on which the window should be kept. Both values are 0 (no resistance) by
       default. To restore the defaults, the option EdgeMoveResistance can be used without any
       parameters.

       The option InitialMapCommand allows for any valid fvwm command or function to run when the
       window is initially mapped by fvwm. Example:

           Style MyWindow StartsOnPage 0 0, InitialMapCommand Iconify

       This would hence place the window called MyWindow on page 0 0 for the current desk, and
       immediately run the Iconify command on that window.

       Note that should InitialMapCommand be used as a global option for all windows, but there
       is a need that some windows should not have this command applied, then an action of Nop
       can be used on those windows, as in the following example:

           Style * InitialMapCommand Iconify
           Style XTeddy InitialMapCommand Nop

       Window Manager placement
           Applications can place windows at a particular spot on the screen either by window
           manager hints or a geometry specification. When they do neither, then the window
           manager steps in to find a place for the window. Fvwm knows several ways to deal with
           this situation. The default is TileCascadePlacement.

           PositionPlacement [Center|UnderMouse|move-arguments] When used without an argument,
           new windows are placed in the top left corner of the display. With the argument
           Center, all new window appear at the center of the screen, and with UnderMouse,
           windows are centered under the mouse pointer where possible. If the window is unable
           to fit on the screen because the pointer is at the edge of the screen, then the window
           is forced on-screen using this option. If any other move-arguments are given, they are
           interpreted exactly as the Move command does (with the exception that references to
           the current window position do not work as the window has not been placed yet).

           CascadePlacement automatically place new windows in a cascading fashion.

           TileCascadePlacement automatically places new windows in a smart location - a location
           in which they do not overlap any other windows on the screen. If no such position can
           be found CascadePlacement is used as a fall-back method.

           TileManualPlacement This is the same as TileCascadePlacement, but uses ManualPlacement
           as the fall-back method.

           MinOverlapPlacement automatically places new windows in a location in which the
           overlapping area in pixels of other windows is minimized. By default this placement
           policy tries to avoid overlapping icons and windows on higher layers. This can be
           configured with the MinOverlapPlacementPenalties style.

           MinOverlapPercentPlacement is similar to MinOverlapPlacement but tries to minimize the
           overlapped percentages of other windows instead of the overlapped area in pixels. This
           placement policy tries to avoid covering other windows completely and tries even
           harder not to cover small windows. This can be configured with the
           MinOverlapPlacementPenalties and MinOverlapPercentPlacementPenalties styles.

           MinOverlapPlacementPenalties takes at most 6 positive or null decimal arguments:

               normal ontop icon sticky below strut

           if trailing arguments are missing the default is used which is:

               1 5 10 1 0.05 50

           To reset this style to the default values, prefix it with a '!'. This style configures
           the MinOverlapPlacement and MinOverlapPercentPlacement placement policy. The normal
           factor affects normal windows, the ontop factor affects windows with a greater layer
           than the window being placed, the icon factor affects icons, the sticky factor affects
           sticky windows, the below factor affects windows with a smaller layer than the window
           being placed, the strut factor affects the complement of the EWMH working area if the
           window being placed has the EWMHPlacementUseWorkingArea style and windows with an EWMH
           strut hint (i.e., a "please do not cover me" hint) if the window being placed has the
           EWMHPlacementUseDynamicWorkingArea style. These factors represent the amount of area
           that these types of windows (or area) are counted as, when a new window is placed. For
           example, by default the area of ontop windows is counted 5 times as much as normal
           windows. So MinOverlapPlacement and MinOverlapPercentPlacement covers 5 times as much
           area of another window before it will cover an ontop window. To treat ontop windows
           the same as other windows, set this to 1. To really, really avoid putting windows
           under ontop windows, set this to a high value, say 1000. This style affects the window
           already mapped and not the window which is currently placed. There is one exception to
           this rule: in the case of the window being placed has the EWMHPlacementUseWorkingArea
           style the strut factor affects the placed window.

           MinOverlapPercentPlacementPenalties takes at most 4 positive or null integer
           arguments:

               cover_100 cover_95 cover_85 cover_75

           if trailing arguments are missing the defaults are used which are:

               12 6 4 1

           To reset this style to the default values, prefix it with a '!'. This style affects
           the MinOverlapPercentPlacement placement policy and is similar to the
           MinOverlapPlacementPenalties style. The cover_xx factor is used when the window being
           placed covers at least xx percent of the window. This factor is added to the factor
           determined by the MinOverlapPlacementPenalties style.

           ManualPlacement (aka active placement). The user is required to place every new window
           manually. The window only shows as a rubber band until a place is selected manually.
           The window is placed when a mouse button or any key except Escape is pressed. Escape
           aborts manual placement which places the window in the top left corner of the screen.
           If mouse button 2 is pressed during the initial placement of a window (respectively
           Shift and mouse button 1 in case Mwm emulation has been enabled with the Emulate
           command), the user is asked to resize the window too.

           It is possible to define buttons usable to place windows with the Move command and the
           special context 'P' for placement (see Move command). However, you can’t redefine the
           way to also resize the window other than the way it is affected by the Emulate
           command. The button used for placing the window can be checked with the PlacedByButton
           condition (see Current command).

           Example:

               Style * ManualPlacement

               *FvwmEvent: PassID
               *FvwmEvent: add_window GrowDownFunc
               AddToFunc StartFunction
               + I FvwmEvent

               AddToFunc GrowDownFunc
               + I windowid $0 (PlacedByButton 3) \
               Resize bottomright keep -0p

           Now, whenever a window is created and the user presses button 3 to finish initial
           placement, the window is automatically enlarged until it hits the bottom screen
           border.

           Old placement styles DumbPlacement / SmartPlacement / SmartPlacementOff,
           CleverPlacement / CleverPlacementOff, ActivePlacement / RandomPlacement,
           ActivePlacementsHonorsStartsOnPage / ActivePlacementsHonorsStartsOnPageOff are still
           supported but will be removed in the future. The old and new styles can be translated
           according to the following table:

               Style * DumbPlacement, RandomPlacement
               -->
               Style * CascadePlacement

               Style * DumbPlacement, ActivePlacement
               -->
               Style * ManualPlacement

               Style * SmartPlacement, \
               RandomPlacement, CleverPlacementOff
               -->
               Style * TileCascadePlacement

               Style * SmartPlacement, \
               ActivePlacement, CleverPlacementOff
               -->
               Style * TileManualPlacement

               Style * SmartPlacement, CleverPlacement
               -->
               Style * MinOverlapPlacement

               Style * SmartPlacement, \
               ActivePlacement, CleverPlacement
               -->
               Style * MinOverlapPercentPlacement

               Style * ActivePlacementsHonorsStartsOnPage
               -->
               Style * ManualPlacementsHonorsStartsOnPage

               Style * ActivePlacementsHonorsStartsOnPageOff
               -->
               Style * ManualPlacementsHonorsStartsOnPageOff

       Placement policy options and window stacking
           !UsePPosition instructs fvwm to ignore the program specified position (PPosition hint)
           when adding new windows. Using PPosition is required for some applications, but if you
           do not have one of those it’s a real headache. Many programs set PPosition to
           something obnoxious like 0,0 (upper left corner). Note: !UsePPosition is equivalent to
           the deprecated option !UsePPosition

           !UseUSPosition works like !UsePPosition but applies suppresses using the user
           specified position indicated by the program (USPosition hint). It is generally a bad
           thing to override the user’s choice, but some applications misuse the USPosition hint
           to force their windows to a certain spot on the screen without the user’s consent.
           Note: !UseUSPosition is equivalent to the deprecated option !USPosition

           NoUseTransientPPosition and UseTransientPPosition work like !UsePPosition and
           UsePPosition but apply only to transient windows. Note: !UseTransientPPosition is
           equivalent to the deprecated option !TransientPPosition

           NoUseIconPosition instructs fvwm to ignore the program specified icon position
           (IconPosition hint) when iconifying the window. Note: !UseIconPosition is equivalent
           to the deprecated option !IconPosition

           StartsOnDesk takes a numeric argument which is the desktop number on which the window
           should be initially placed. Note that standard Xt programs can also specify this via a
           resource (e.g. "-xrm '*Desk: 1'").

           StartsOnPage takes 1, 2, or 3 numeric arguments. If one or three arguments are given,
           the first (or only) argument is the desktop number. If three arguments are given, the
           2nd and 3rd arguments identify the x,y page position on the virtual window. If two
           arguments are given, they specify the page position, and indicate no desk preference.
           If only one argument is given, StartsOnPage functions exactly like StartsOnDesk. For
           those standard Xt programs which understand this usage, the starting desk/page can
           also be specified via a resource (e.g., "-xrm '*page: 1 0 2'"). StartsOnPage in
           conjunction with SkipMapping is a useful technique when you want to start an app on
           some other page and continue with what you were doing, rather than waiting for it to
           appear.

           StartsOnScreen takes one argument. It must be a valid RandR name. A new window is
           placed on the specified screen. The default is to place windows on the screen that
           contains the mouse pointer at the time the window is created. However, those windows
           which are not placed by fvwm (i.e., those with a USPosition hint from a user specified
           geometry) are normally placed in a position relative to all identified screens.

           StartsOnPageIncludesTransients causes the StartsOnPage style to be applied even for
           transient windows. This is not usually useful, since transients are usually pop ups
           that you want to appear in your visible viewport; but occasionally an application uses
           a transient for something like a startup window that needs to be coerced into place.

           ManualPlacementIgnoresStartsOnPage suppresses StartsOnPage or StartsOnDesk placement
           in the event that both ManualPlacement and SkipMapping are in effect when a window is
           created. This prevents you from interactively placing a window and then wondering
           where it disappeared to, because it got placed on a different desk or page.
           ManualPlacementHonorsStartsOnPage allows this to happen anyway. The option has no
           effect if SkipMapping is not in effect, because fvwm switches to the proper desk/page
           to perform interactive placement. The default is ManualPlacementIgnoresStartsOnPage;
           ManualPlacementHonorsStartsOnPage matches the way the old StartsOnDesk style used to
           handle the situation.

           CaptureHonorsStartsOnPage causes the initial capture (of an already existing window)
           at startup to place the window according to the StartsOnPage and StartsOnScreen desk,
           page and screen specification. CaptureIgnoresStartsOnPage causes fvwm to ignore these
           settings (including StartsOnDesk) on initial capture. The default is
           CaptureIgnoresStartsOnPage.

           RecaptureHonorsStartsOnPage causes a window to be placed according to, or revert to,
           the StartsOnPage and StartsOnScreen desk, page and screen specification on Restart.
           RecaptureIgnoresStartsOnPage causes fvwm to respect the current window position on
           Restart. The default is RecaptureIgnoresStartsOnPage.

           Layer accepts one optional argument: a non-negative integer. This is the layer the
           window is put in. If no argument is given, any previously set value is deleted and the
           default layer is implied.

           StaysOnTop puts the window in the top layer. This layer can be changed by the command
           DefaultLayers; the default is 6.

           StaysPut puts the window in the put layer. This layer can be changed by the command
           DefaultLayers; the default is 4.

           StaysOnBottom puts the window in the bottom layer. This layer can be changed by the
           command DefaultLayers; the default is 2.

           StartsLowered instructs fvwm to put the window initially at the bottom of its layer
           rather than the default StartsRaised.

           StartShaded tells fvwm to shade the window. An optional direction argument may be
           given, which can be one of "North", "South", "West", "East", "NorthWest", "NorthEast",
           "SouthWest", "SouthEast" or if no direction is given, the default is to shade north.

           SkipMapping tells fvwm not to switch to the desk the window is on when it gets mapped
           initially (useful with StartsOnDesk or StartsOnPage).

           KeepWindowGroupsOnDesk makes new windows that have the window group hint set appear on
           the same desk as the other windows of the same group. Since this behavior may be
           confusing, the default setting is ScatterWindowGroups. The window group hint is
           ignored when placing windows in this case.

       Transient windows
           DecorateTransient causes transient windows, which are normally left undecorated, to be
           given the usual fvwm decorations (title bar, buttons, etc.). Note that some pop-up
           windows, such as the xterm menus, are not managed by the window manager and still do
           not receive decorations. NakedTransient (the default) causes transient windows not to
           be given the standard decorations. You can only bind keys or mouse buttons to the
           sides and the client part of an undecorated window ('S' and ´W' contexts in bindings,
           see Mouse and Key commands).

           A window with the RaiseTransient style that has transient windows raises all its
           transients when it is raised. The DontRaiseTransient style disables this behavior. All
           windows are then treated as if they had no transients.

           A window with the LowerTransient style that has transient windows lowers all its
           transients when it is lowered. The DontLowerTransient style disables this behavior.
           All windows are then treated as if they had no transients.

           The StackTransientParent style augments RaiseTransient and LowerTransient styles.
           Raising a window with StackTransientParent style transfers the raise action to the
           main window if the window being raised is a transient and its main window has
           RaiseTransient style; this effect makes raise on a transient act just like raise on
           its main - the whole group is raised. Similar behavior holds for lowering a whole
           group of transients when the main has LowerTransient style. DontStackTransientParent
           turns this behavior off. (Dont)StackTransientParent has no effect if RaiseTransient
           and LowerTransient are not used.

           A reasonable emulation of Motif raise/lower on transients is possible like this

               Style * RaiseTransient
               Style * LowerTransient
               Style * StackTransientParent

       Extended Window Manager Hints styles
           To understand the used terminology in this sub section, please read the Extended
           Window Manager Hints section.

           EWMHDonateIcon instructs fvwm to set the application ewmh icon hint with the icon that
           is used by fvwm if the application does not provide such hint (and if the icon used by
           fvwm is not an icon window). EWMHDonateMiniIcon does the same thing for mini icons.
           This allows compliant pager, taskbar, iconbox ...etc to display the same (mini) icons
           as fvwm. Note that on some hardware (e.g., 8-bit displays) these styles can slow down
           window mapping and that in general only one of these styles is needed by a compliant
           application. EWMHDontDonateIcon and EWMHDontDonateMiniIcon restore the defaults which
           are to not set any ewmh (mini) icons hints.

           By default, if an application provides an ewmh icon hint of small size (i.e., height
           and width less than or equal to 22), then fvwm uses this icon as its mini icon.
           EWMHMiniIconOverride instructs fvwm to ignore ewmh icons and to use the mini icon
           provided by the MiniIcon style. EWMHNoMiniIconOverride restores the default.

           EWMHUseStackingOrderHints causes fvwm to use EWMH hints and respect EWMH hints which
           change the window layer. EWMHIgnoreStackingOrderHints causes fvwm to ignore EWMH layer
           hints.

           An application can ask for some reserved space on the desktop by a hint. In the EWMH
           terminology such a hint is called a strut and it is used to compute the working area
           and may be used for window placement and in the maximize command. EWMHIgnoreStrutHints
           causes fvwm to ignore such hints, as EWMHUseStrutHints, causes fvwm to use it which is
           the default.

           EWMHIgnoreStateHints causes fvwm to ignore initial EWMH state hints when a new window
           is mapped. The default EWMHUseStateHints causes fvwm to accept such hints.

           EWMHIgnoreWindowType causes fvwm to ignore EWMH window type specification. The default
           !EWMHIgnoreWindowType causes fvwm to style windows of specified types as such.

           EWMHMaximizeIgnoreWorkingArea causes fvwm to ignore the EWMH working area when it
           executes a Maximize command. With EWMHMaximizeUseWorkingArea the EWMH working area is
           used as with EWMHMaximizeUseDynamicWorkingArea the EWMH dynamic working area is used
           (the default).

           EWMHPlacementIgnoreWorkingArea causes fvwm to ignore the EWMH working area when it
           places (or places again) a window. With EWMHPlacementUseWorkingArea the EWMH working
           area is taken in account as with EWMHPlacementUseDynamicWorkingArea the EWMH dynamic
           working area is taken in account (the default). Note that with the MinOverlapPlacement
           and MinOverlapPercentPlacement placement policy, the way the EWMH (dynamic) working
           area is taken in account is configurable with the MinOverlapPlacementPenalties style.

       Miscellaneous
           The BackingStore, BackingStoreOff and BackingStoreWindowDefault determine if the X
           server uses backing store for the window or not. BackingStore means that the X server
           tries to keep the obscured parts of a window in memory. This is usually slower if the
           client runs on the same machine as the X server, but can be much faster if the
           connection is slow (see also SaveUnder below). BackingStoreOff disables backing store
           for the window. By default, fvwm does not enable or disable backing store itself but
           leaves is as the window requested it. To revert back to the application’s choice, use
           the BackingStoreWindowDefault style.

           Note: This style is useless if the X server does not allow backing store.

           SaveUnder enables the corresponding window attribute in the X server. For a window
           using this style, the X server tries to store the graphics below it in memory which is
           usually slower if the client runs on the same machine as the X server. SaveUnder may
           speed up fvwm if the connection to the X server is slow (e.g. over a modem link). To
           disable save under, use the SaveUnderOff style. This is the default. See also
           BackingStore above.

           Note: This style is useless if the X server does not allow save under.

           ParentalRelativity enables clients that use a background pixmap of type ParentRelative
           to achieve transparency. Fvwm modules that support transparent colorsets require this
           setting. Opacity is the default and should be used for all non-transparent clients for
           better performance.

           MwmDecor makes fvwm attempt to recognize and respect the mwm decoration hints that
           applications occasionally use. To switch this style off, use the NoDecorHint style.

           MwmFunctions makes fvwm attempt to recognize and respect the mwm prohibited operations
           hints that applications occasionally use. HintOverride makes fvwm shade out operations
           that mwm would prohibit, but it lets you perform the operation anyway. NoFuncHint
           allows turns off the mwm hints completely.

           OLDecor makes fvwm attempt to recognize and respect the olwm and olvwm hints that many
           older XView and OLIT applications use. Switch this option off with NoOLDecor.

           UseDecor This style is deprecated and will be removed in the future. There are plans
           to replace it with a more flexible solution in fvwm-3.0.

           UseDecor accepts one argument: the name of a decor created with AddToDecor. If no
           decor name is specified, the "Default" decor is used. Windows do not actually contain
           decors, but are always assigned to one. If the decor is later modified with
           AddToDecor, the changes are visible for all windows which are assigned to it. The
           decor for a window can be reassigned with ChangeDecor.

           UseStyle This style is deprecated and will be removed in the future. There are plans
           to replace it with a more flexible solution in fvwm-3.0.

           UseStyle takes one arg, which is the name of another style. That way you can have
           unrelated window names easily inherit similar traits without retyping. For example:

               Style rxvt UseStyle XTerm

           Warning: If a style is built from one or more parent styles and the parent styles are
           changed, the derived style is not modified. To achieve this you have to issue the
           UseStyle line again.

           Unmanaged Windows with the Unmanaged style option are ignored by fvwm. They are not
           decorated, can not be moved or resized, etc. You probably want to use Bugopts
           RaiseOverUnmanaged too. This option can be turned off with the !Unmanaged style.

           State sets the initial value of one of the 32 user defined states which are associated
           with each window. The state number ranges from 0 to 31 and must be given as an
           argument. The states have no meaning in fvwm, but they can be checked in conditional
           commands like Next with the State condition and manipulated with the State command.

               # turn on state 11 for xterms ...
               Style xterm State 11
               # ... but not for rxvts.
               Style rxvt !State 11

           Windows with the WindowListSkip styles do not appear in the menu that is created with
           the WindowList command or the lists shown in modules like FvwmIconMan. In the modules,
           the style can usually be ignored with an option. Please refer to the man page of the
           module in question for further information. To disable this feature, use the default
           style WindowListHit.

           The styles CirculateSkip and CirculateHit control whether the window is considered by
           conditional commands, for example Next, Prev or All. Windows with CirculateSkip, are
           never selected by conditional commands. However, the styles can be overridden
           explicitly in the condition with the CirculateHit, CirculateHitIcon or
           CirculateHitShaded conditions, and some conditional commands, e.g. Current and All, do
           this by default. The styles CirculateSkipIcon, CirculateHitIcon, CirculateSkipShaded
           and CirculateHitShaded work like CirculateSkip and CirculateHit but apply only to
           iconic or shaded windows. Note: if multiple ...Skip... options are combined, windows
           are only selected if they match none of the given conditions. So, with

               Style * CirculateSkipIcon, CirculateSkipShaded

           only windows that are neither iconic nor shaded are selected. Note: For historical
           reasons, the conditional commands understand the names of these styles as condition
           names. Take care not to confuse them.

       Examples

           # Change default fvwm behavior to no title-
           # bars on windows! Also define a default icon.

           Style *       !Title,                      \
                         Icon unknown1.xpm,           \
                         BorderWidth 4,               \
                         HandleWidth 5

           # now, window specific changes:
           Style Fvwm* !Handles, Sticky,              \
                       WindowListSkip,                \
                       BorderWidth 0
           Style FvwmPager   StaysOnTop, BorderWidth 0
           Style *lock       !Handles, Sticky,        \
                             StaysOnTop, WindowListSkip
           Style xbiff       Sticky, WindowListSkip
           Style FvwmButtons !Handles, Sticky,        \
                             WindowListSkip
           Style sxpm        !Handles

           # Put title-bars back on xterms only!
           Style xterm     Title, Color black/grey

           Style rxvt        Icon term.xpm
           Style xterm       Icon rterm.xpm
           Style xcalc       Icon xcalc.xpm
           Style xbiff       Icon mail1.xpm
           Style xmh         Icon mail1.xpm,         \
                             StartsOnDesk 2
           Style xman        Icon xman.xpm
           Style matlab      Icon math4.xpm,         \
                             StartsOnDesk 3
           Style xmag        Icon magnifying_glass2.xpm
           Style xgraph      Icon graphs.xpm
           Style FvwmButtons Icon toolbox.xpm
           Style Maker       StartsOnDesk 1
           Style signal      StartsOnDesk 3

           # Fire up Netscape on the second desk, in the
           # middle of my 3x3 virtual desktop, and do not
           # bother me with it...
           Style Netscape* SkipMapping,              \
                     StartsOnPage 1 1 1

       Note that all properties for a window are or’ed together. In the above example "FvwmPager"
       gets the property StaysOnTop via an exact window name match but also gets !Handles, Sticky
       and WindowListSkip by a match to "Fvwm*". It gets !Title by virtue of a match to "*". If
       conflicting styles are specified for a window, then the last style specified is used.

       WindowStyle options
           sets attributes (styles) on the selected window. The options are exactly the same as
           for the Style command.

WINDOW STYLES

       AddButtonStyle button [state] [style] [-- [!]flag ...]
           Adds a button style to button. button can be a button number, or one of "All", "Left"
           or "Right". state can be "ActiveUp", "ActiveDown", "InactiveUp" or "InactiveDown", or
           "Active" (the same as both "ActiveUp" and "ActiveDown") or "Inactive" (the same as
           both "InactiveUp" and "InactiveDown") or any of these 6 with "Toggled" prepended. The
           "Active" states apply to the focused window, the "Inactive" ones apply to all other
           windows. The "Up" states apply to the non pressed buttons, the "Down" ones apply to
           pressed buttons. The "Toggled" prefix refers to maximized, shaded or sticky windows
           that have the corresponding MwmDecor... button style set. Additionally, the following
           shortcuts may be used: "AllNormal", "AllToggled", "AllActive", "AllInactive", "AllUp",
           "AllDown". They are actually different masks for 4 individual states from 8 total.
           These are supported too: "AllActiveUp", "AllActiveDown", "AllInactiveUp",
           "AllInactiveDown".

           If state is omitted, then the style is added to every state. If the style and flags
           are enclosed in parentheses, then multiple state definitions can be placed on a single
           line. Flags for additional button styles cannot be changed after definition.

           Buttons are drawn in the order of definition, beginning with the most recent button
           style, followed by those added with AddButtonStyle. To clear the button style stack,
           change style flags, or for descriptions of available styles and flags, see the
           ButtonStyle command.

           Examples:

               **ButtonStyle** 1 Pixmap led.xpm -- Top Left
               **ButtonStyle** 1 ActiveDown HGradient 8 grey black
               **ButtonStyle All** --  UseTitleStyle
               AddButtonStyle 1 \
                       ActiveUp (Pixmap a.xpm) \
                       ActiveDown (Pixmap b.xpm -- Top)
               AddButtonStyle 1 Vector 4 50x30@1 70x70@0 30x70@0 50x30@1

           Initially for this example all button states are set to a pixmap. The second line
           replaces the "ActiveDown" state with a gradient (it overrides the pixmap assigned to
           it in the line before, which assigned the same style to every state). Then, the
           UseTitleStyle flag is set for all buttons, which causes fvwm to draw any styles set
           with TitleStyle before drawing the buttons. Finally, AddButtonStyle is used to place
           additional pixmaps for both "ActiveUp" and "ActiveDown" states and a vector button
           style is drawn on top of all states.

       AddTitleStyle [state] [style] [-- [!]flag ...]
           Adds a title style to the title-bar. state can be "ActiveUp", "ActiveDown",
           "InactiveUp" or "InactiveDown", or "Active" (the same as both "ActiveUp" and
           "ActiveDown") or "Inactive" (the same as both "InactiveUp" and "InactiveDown") or any
           of these 6 with "Toggled" prepended. If state is omitted, then the style is added to
           every state. If the style and flags are enclosed in parentheses, then multiple state
           definitions can be placed on a single line. This command is quite similar to the
           AddButtonStyle command.

           Title-bars are drawn in the order of definition, beginning with the most recent
           TitleStyle, followed by those added with AddTitleStyle. To clear the title style
           stack, change style flags, or for the descriptions of available styles and flags, see
           the TitleStyle and ButtonStyle commands.

       AddToDecor decor
           This command is deprecated and will be removed in the future. There are plans to
           replace it with a more flexible solution in fvwm-3.0.

           Add or divert commands to the decor named decor. A decor is a name given to the set of
           commands which affect button styles, title-bar styles and border styles. If decor does
           not exist it is created; otherwise the existing decor is modified. Note: Earlier
           versions allowed to use the HilightColor, HilightColorset and WindowFont commands in
           decors. This is no longer possible. Please use the Style command with the Hilight...
           and Font options.

           New decors start out exactly like the "default" decor without any style definitions. A
           given decor may be applied to a set of windows with the UseDecor option of the Style
           command. Modifying an existing decor affects all windows which are currently assigned
           to it.

           AddToDecor is similar in usage to the AddToMenu and AddToFunc commands, except that
           menus and functions are replaced by ButtonStyle, AddButtonStyle, TitleStyle,
           AddTitleStyle and BorderStyle commands. Decors created with AddToDecor can be
           manipulated with ChangeDecor, DestroyDecor, UpdateDecor and the Style option.

           The following example creates a decor "FlatDecor" and style "FlatStyle". They are
           distinct entities:

               AddToDecor FlatDecor
               + ButtonStyle All Active (-- flat) Inactive (-- flat)
               + TitleStyle  -- flat
               + BorderStyle -- HiddenHandles NoInset

               Style FlatStyle \
                       UseDecor FlatDecor, HandleWidth 4, Colorset 0, HilightColorset 1

               Style xterm UseStyle FlatStyle

           An existing window’s decor may be reassigned with ChangeDecor. A decor can be
           destroyed with DestroyDecor.

               DestroyDecor FlatDecor
               AddToDecor FlatDecor ...

               Style FlatStyle UseDecor FlatDecor

           and now apply the style again:

               Style xterm UseStyle FlatStyle

       BorderStyle state [style] [-- [!]flag ...]
           Defines a border style for windows. state can be either "Active" or "Inactive". If
           state is omitted, then the style is set for both states. If the style and flags are
           enclosed in parentheses, then multiple state definitions can be specified per line.

           style is a subset of the available button styles, and can only be TiledPixmap (uniform
           pixmaps which match the bevel colors work best this way) or Colorset. If a '!' is
           prefixed to any flag, the behavior is negated. If style is not specified, then one can
           change flags without resetting the style.

           The HiddenHandles flag hides the corner handle dividing lines on windows with handles
           (this option has no effect for !Handles windows). By default, HiddenHandles is
           disabled.

           The NoInset flag supplements HiddenHandles. If given, the inner bevel around the
           window frame is not drawn. If HiddenHandles is not specified, the frame looks a little
           strange.

           Raised causes a raised relief pattern to be drawn (default). Sunk causes a sunken
           relief pattern to be drawn. Flat inhibits the relief pattern from being drawn.

           To decorate the active and inactive window borders with a textured pixmap, one might
           specify:

               BorderStyle Active TiledPixmap marble.xpm
               BorderStyle Inactive TiledPixmap granite.xpm
               BorderStyle Active -- HiddenHandles NoInset

           To clear the style for both states:

               BorderStyle Simple

           To clear for a single state:

               BorderStyle Active Simple

           To unset a flag for a given state:

               BorderStyle Inactive -- !NoInset

           title-bar buttons can inherit the border style with the UseBorderStyle flag (see
           ButtonStyle).

       ButtonState [ActiveDown bool] [Inactive bool] [InactiveDown bool]
           The ButtonState command controls which states of the window titles and title buttons
           are used. The default is to use all four states: "ActiveUp", "ActiveDown",
           "InactiveUp" and "InactiveDown" (see ButtonStyle and TitleStyle commands). The bool
           argument after the key word controls if the designated state is used ("True") or not
           ("False"). The bool flag is the same as other commands, and not limited to just "True"
           or "False"; "Yes" and "No" may also be used. The "ActiveUp" state cannot be
           deactivated. If no arguments are provided or the given arguments are invalid, the
           default is restored.

           If ActiveDown argument is "False", no different button style for the pressed down
           buttons used, instead "ActiveUp" state is used even when button is pressed.

           If Inactive argument is "False", focused and unfocused windows look similarly, the
           corresponding "Active" states are always used.

           If InactiveDown argument is "False" (only applied when Inactive is "True"), the
           pressed titles and title buttons in non-focused windows are drawn using "InactiveUp"
           or "ActiveUp" states depending on the values of the other key words.

       ButtonStyle button [state] [style] [-- [!]flag ...]
           Sets the button style for a title-bar button. button is the title-bar button number
           between 0 and 9, or one of "All", "Left", "Right", or "Reset". Button numbering is
           described in the Mouse command section. If the style and flags are enclosed in
           parentheses, then multiple state definitions can be specified per line.

           state refers to which button state should be set. Button states are defined as
           follows: "ActiveUp" and "ActiveDown" refer to the un-pressed and pressed states for
           buttons on active windows; while the "InactiveUp" and "InactiveDown" states denote
           buttons on inactive windows. The shortcut "Active" denotes both "ActiveUp" and
           "ActiveDown" states. Shortcut "Inactive" denotes both "InactiveUp" and "InactiveDown"
           states. The similar state names like just described, but with the "Toggled" prefix are
           used instead for title buttons which have one of the MwmDecorMax, MwmDecorShade,
           MwmDecorStick or MwmDecorLayer hints, if the window is maximized, shaded, sticky or
           placed on specific layer, respectively.

               AddToDecor Default
               + ButtonStyle 6                   \
                 Vector 4 50x25@1 85x75@0 15x75@0 50x25@1
               + ButtonStyle 6 ToggledActiveUp   \
                 Vector 4 50x75@0 85x25@1 15x25@0 50x75@0
               + ButtonStyle 6 ToggledActiveDown \
                 Vector 4 50x75@0 85x25@1 15x25@0 50x75@0
               + ButtonStyle 6 ToggledInactive   \
                 Vector 4 50x75@0 85x25@1 15x25@0 50x75@0
               + ButtonStyle 6 - MwmDecorShade
               Mouse 0 6 N WindowShade

           Additionally, the following shortcuts may be used: "AllNormal", "AllToggled",
           "AllActive", "AllInactive", "AllUp", "AllDown". They are actually different masks for
           4 individual states from 8 total. These are supported too: "AllActiveUp",
           "AllActiveDown", "AllInactiveUp", "AllInactiveDown".

           If state is specified, that particular button state is set. If state is omitted, every
           state is set. Specifying a style destroys the current style (use AddButtonStyle to
           avoid this).

           If style is omitted, then state-dependent flags can be set for the primary button
           style without destroying the current style. Examples (each line should be considered
           independent):

               ButtonStyle Left -- flat
               ButtonStyle All ActiveUp (-- flat) Inactive (-- flat)

           The first line sets every state of the left buttons to flat, while the second sets
           only the "ActiveUp" and "Inactive" states of every button to flat (only flags are
           changed; the buttons' individual styles are not changed).

           If you want to reset all buttons to their defaults:

               ButtonStyle Reset

           To reset the "ActiveUp" button state of button 1 to the default:

               ButtonStyle 1 ActiveUp Default

           To reset all button states of button 1 to the default of button number 2:

               ButtonStyle 1 Default 2

           For any button, multiple state definitions can be given on one line by enclosing the
           style and flags in parentheses. If only one definition per line is given the
           parentheses can be omitted.

           flags affect the specified state. If a '!' is prefixed to any flag, its behavior is
           negated. The available state-dependent flags for all styles are described here (the
           ButtonStyle entry deals with state-independent flags).

           Raised causes a raised relief pattern to be drawn.

           Sunk causes a sunken relief pattern to be drawn.

           Flat inhibits the relief pattern from being drawn.

           UseTitleStyle causes the given button state to render the current title style before
           rendering the buttons' own styles. The Raised, Flat and Sunk TitleStyle flags are
           ignored since they are redundant in this context.

           UseBorderStyle causes the button to inherit the decorated BorderStyle options.

           Raised, Sunk and Flat are mutually exclusive, and can be specified for the initial
           ButtonStyle only. UseTitleStyle and UseBorderStyle are also mutually exclusive (both
           can be off however). The default is Raised with both UseBorderStyle and UseTitleStyle
           left unset.

           Important

           for the "ActiveDown" and "InactiveDown" states: When a button is pressed, the relief
           is inverted. Because of this, to obtain the raised look in "ActiveDown" or
           "InactiveDown" states you must specify the opposite of the desired relief (i.e. Sunk
           for "ActiveDown" or "InactiveDown"). This behavior is consistent, but may seem
           confusing at first. The same applies to the "Toggled" states.

           Button styles are classified as non-destructive, partially destructive, or fully
           destructive. Non-destructive styles do not affect the image. Partially destructive
           styles can obscure some or all parts of the underlying image (i.e. Pixmap). Fully
           destructive styles obscure the entire underlying image (i.e. Solid or one of the
           gradient styles). Thus, if stacking styles with AddButtonStyle (or AddTitleStyle for
           title-bars), use care in sequencing styles to minimize redraw.

           The available styles are:

           Simple, Default, Solid, Colorset, Vector, ?Gradient, Pixmap, AdjustedPixmap,
           ShrunkPixmap, StretchedPixmap, TiledPixmap, MiniIcon

           The description of these styles and their arguments follow:

           The Simple style does nothing. There are no arguments, and this style is an example of
           a non-destructive button style.

           The Default style conditionally accepts one argument: a number which specifies the
           default button number to load. If the style command given is ButtonStyle or
           AddButtonStyle, the argument is optional (if given, it overrides the current button).
           If a command other than ButtonStyle or AddButtonStyle is used, the number must be
           specified.

           The Solid style fills the button with a solid color. The relief border color is not
           affected. The color is specified as a single argument. This style is fully
           destructive.

           The Colorset cs [alpha] style fills the button with the Colorset cs. The optional
           alpha argument is a percentage between 0 and 100. It causes fvwm to merge the colorset
           background onto the button using this percentage. If the percentage is 0 the colorset
           background is hidden and if it is 100 the colorset background is fully applied. The
           default is 100. So, the destructiveness depends on the alpha argument.

           The Vector num X[offsetp]xY[offsetp]@C ... style draws a line pattern. Since this is a
           standard button style, the keyword Vector is optional, num is a number of point
           specifications of the form X[offsetp]xY[offsetp]@C ... X and Y are point coordinates
           inside the button, given in percents (from 0 to 100). An optional absolute offset in
           pixels, can be given as "+<offset>p" for a positive or "-<offset>p" for a negative
           offset.

           C specifies a line color (0 - the shadow color, 1 - the highlight color, 2 - the
           background color, 3 - the foreground color, 4 - only move the point, do not draw). The
           first point color is not used. You can use up to 10000 points in a line pattern. This
           style is partially destructive.

           The specification is a little cumbersome:

               ButtonStyle 2 Vector 4 50x30@1 70x70@0 30x70@0 50x30@1

           then the button 2 decoration uses a 4-point pattern consisting of a line from
           (x=50,y=30) to (70,70) in the shadow color (@0), and then to (30,70) in the shadow
           color, and finally to (50,30) in the highlight color (@1). Is that too confusing? See
           the fvwm web pages for some examples with screenshots.

           A more complex example of Vector:

               ButtonStyle 8 Vector 10 45x65@2 45x75@3 \
               20x75@3 20x50@3 35x50@3 35x65@1 35x25@1 \
               75x25@1 75x65@0 35x65@0
               ButtonStyle 0 Vector 10 45x65@2 45x75@0 \
               20x75@0 20x50@1 45x50@1 45x65@0 75x65@3 \
               75x25@3 35x25@3 35x47@3

           The Gradient styles denote color gradients. Fill in the question mark with any one of
           the defined gradient types. Please refer to the Color Gradients section for a
           description of the gradient syntax. The gradient styles are fully destructive.

           The Pixmap style displays a pixmap. A pixmap should be specified as an argument. For
           example, the following would give button number 2 the same pixmap for all 4 states (2
           active and 2 inactive), and button number 4 all different pixmaps.

               ButtonStyle 2 Pixmap my_pixmap.xpm
               ButtonStyle 4 \
               ActiveUp (Pixmap activeup.xpm) \
               ActiveDown (Pixmap activedown.xpm) \
               Inactive (Pixmap inactiveup.xpm)
               ButtonStyle 4 \
               InactiveDown Pixmap inactivedown.xpm

           The pixmap specification can be given as an absolute or relative pathname (see
           ImagePath). If the pixmap cannot be found, the button style reverts to Simple. Flags
           specific to the Pixmap style are Left, Right, Top, and Bottom. These can be used to
           justify the pixmap (default is centered for both directions). Pixmap transparency is
           used for the color "None." This style is partially destructive.

           The AdjustedPixmap style is similar to the Pixmap style. But the image is resized to
           exactly fit the button.

           The ShrunkPixmap style is similar to the Pixmap style. But if the image is bigger than
           the button the image is resized to fit into the button.

           The StretchedPixmap style is similar to the Pixmap style. But if the image is smaller
           than the button the image is resized to cover the button.

           The TiledPixmap style accepts a pixmap to be tiled as the button background. One
           pixmap is specified as an argument. Pixmap transparency is not used. This style is
           fully destructive.

           The MiniIcon style draws the window’s miniature icon in the button, which is specified
           with the MiniIcon option of the Style command. This button style accepts no arguments.
           Example:

               Style *     MiniIcon mini-bx2.xpm
               Style xterm MiniIcon mini-term.xpm
               Style Emacs MiniIcon mini-doc.xpm

               ButtonStyle 1 MiniIcon

       ButtonStyle button - [!]flag ...
           Sets state-independent flags for the specified button. State-independent flags affect
           button behavior. Each flag is separated by a space. If a '!' is prefixed to the flag
           then the behavior is negated. The special flag Clear clears any existing flags.

           The following flags are usually used to tell fvwm which buttons should be affected by
           mwm function hints (see MwmFunctions option of the Style command. This is not done
           automatically since you might have buttons bound to complex functions, for instance.

           MwmDecorMenu should be assigned to title-bar buttons which display a menu. The default
           assignment is the leftmost button. When a window with the MwmFunctions Style option
           requests not to show this button, it is hidden.

           MwmDecorMin should be assigned to title-bar buttons which minimize or iconify the
           window. The default assignment is the second button over from the rightmost button.
           When a window with the MwmFunctions Style option requests not to show this button, it
           is hidden.

           MwmDecorMax should be assigned to title-bar buttons which maximize the window. The
           default assignment is the rightmost button. When a window with the MwmFunctions Style
           option requests not to show this button, it is hidden. When the window is maximized,
           the vector pattern on the button looks pressed in.

           MwmDecorShade should be assigned to title-bar buttons which shade the window (see
           WindowShade command). When the window is shaded, the vector pattern on the button
           looks pressed in.

           MwmDecorStick should be assigned to title-bar buttons which make the window sticky.
           When the window is sticky, the vector pattern on the button looks pressed in.

           The flag MwmDecorLayer layer should be assigned to title-bar buttons which place the
           window in the layer numbered layer. When the window is on that specific layer, the
           vector pattern on the button looks pressed in.

       ChangeDecor decor
           This command is deprecated and will be removed in the future. There are plans to
           replace it with a more flexible solution in fvwm-3.0.

           Changes the decor of a window to decor. decor is "Default" or the name of a decor
           defined with AddToDecor. If decor is invalid, nothing occurs. If called from somewhere
           in a window or its border, then that window is affected. If called from the root
           window the user is allowed to select the target window. ChangeDecor only affects
           attributes which can be set using the AddToDecor command.

               ChangeDecor CustomDecor1

       DestroyDecor [recreate] decor
           This command is deprecated and will be removed in the future. There are plans to
           replace it with a more flexible solution in fvwm-3.0.

           Deletes the decor defined with AddToDecor, so that subsequent references to it are no
           longer valid. Windows using this decor revert to the "Default" decor. The optional
           parameter recreate tells fvwm not to throw away the decor completely but to throw away
           only its contents. If the decor is created again later, windows do not use it before
           the UseDecor style is applied again unless the decor was destroyed with the recreate
           option. The decor named "Default" cannot be destroyed.

               DestroyDecor CustomDecor1

       TitleStyle [justification] [Height [num]] [MinHeight [num]]
           Sets attributes for the title-bar. Justifications can be Centered, RightJustified or
           LeftJustified. Height sets the title bar’s height to an amount in pixels. MinHeight
           sets the minimal height in pixels of the title bar. Defaults are Centered, the
           window’s font height and no minimal height. To reset the font height to the default
           value, omit the num argument after the Height keyword. The MinHeight height is reset
           by Height or if given with no argument. Example:

               TitleStyle LeftJustified Height 24

       TitleStyle [state] [style] [-- [!]flag ...]
           Sets the style for the title-bar. See also AddTitleStyle and ButtonStyle state can be
           one of "ActiveUp", "ActiveDown", "InactiveUp", or "InactiveDown". Shortcuts like
           "Active" and "Inactive" are allowed. The states with the "Toggled" prefix are allowed
           too, the title itself does not use "Toggled" states, but these states are used for the
           buttons with ButtonStyle UseTitleStyle. If state is omitted, then the style is added
           to every state. If parentheses are placed around the style and flags, then multiple
           state definitions can be given per line. style can be omitted so that flags can be set
           while not destroying the current style.

           If a '!' is prefixed to any flag, its behavior is negated. Valid flags for each state
           include Raised, Flat and Sunk (these are mutually exclusive). The default is Raised.
           See the note in ButtonStyle regarding the "ActiveDown" state. Examples:

               TitleStyle ActiveUp HGradient 16 navy black
               TitleStyle \
               ActiveDown (Solid red -- flat) \
               Inactive (TiledPixmap wood.xpm)
               TitleStyle \
               ActiveUp (-- Flat) \
               ActiveDown (-- Raised) \
               InactiveUp (-- Flat) \
               InactiveDown (-- Sunk)

           This sets the "ActiveUp" state to a horizontal gradient, the "ActiveDown" state to
           solid red, and the "Inactive" states to a tiled wood pixmap. Finally, "ActiveUp" and
           "InactiveUp" are set to look flat, while "ActiveDown" set to be sunk (the Raised flag
           for the "ActiveDown" state causes it to appear sunk due to relief inversion), and
           "InactiveDown" is set to look raised. An example which sets flags for all states:

               TitleStyle -- flat

           For a flattened look:

               TitleStyle -- flat
               ButtonStyle All Active (-- flat) Inactive (-- flat)

           TitleStyle accepts all the ButtonStyle styles and arguments:

           Simple, Default, Solid, Colorset, Vector, ?Gradient, Pixmap, AdjustedPixmap,
           ShrunkPixmap, StretchedPixmap, TiledPixmap, MiniIcon.

           See the ButtonStyle command for a description of all these styles and their arguments.

           In addition to these styles TitleStyle accepts a powerful MultiPixmap option. This
           allows you to specify different pixmaps, colorsets or colors for different parts of
           the titlebar. Some of them are tiled or stretched to fit a particular space; others
           are discrete "transition" images. The definable sections are:

           Main
               The full titlebar

           LeftMain
               Left of title text

           RightMain
               Right of title text

           UnderText
               Underneath title text

           LeftOfText
               just to the left of the title text

           RightOfText
               just to the right of the title text

           LeftEnd
               at the far left end of the titlebar (just after left buttons if any)

           RightEnd
               at the far right end of the titlebar (just before right buttons if any)

           Buttons
               under buttons in case of UseTitleStyle

           LeftButtons
               under left buttons in case of UseTitleStyle

           RightButtons
               under right buttons in case of UseTitleStyle

       None of these are mandatory except for Main (or, if you do not define Main you must define
       both LeftMain and RightMain). If no Buttons pixmaps are defined and UseTitleStyle is
       specified for one or more buttons, Main, LeftMain or RightMain are used as appropriate.

       The syntax for this style type is:

           MultiPixmap section style arg, ...

       continuing for whatever you want to define. The style can be either TiledPixmap,
       AdjustedPixmap, Colorset or Solid. See the ButtonStyle command for the description of
       these styles. In the case of a transition section, LeftEnd, LeftOfText, RightOfText or
       RightEnd, AdjustedPixmap only resize the pixmap in the "y" direction. For the Colorset and
       Solid styles a width of the half of the title bar height is assumed for the transition
       sections.

       An example:

           MultiPixmap Main AdjustedPixmap foo.xpm, \
                 UnderText TiledPixmap bar.xpm, \
                 Buttons Colorset 2

       Note that the old syntax is still supported: if the style is omitted, TiledPixmap is
       assumed and adding "(stretched)" between the section and the file name implies
       AdjustedPixmap. UpdateDecor [decor]:: This command is deprecated and will be removed in
       the future. There are plans to replace it with a more flexible solution in fvwm-3.0.

       This command is kept mainly for backward compatibility. Since all elements of a decor are
       updated immediately when they are changed, this command is mostly useless.

       Updates window decorations. decor is an optional argument which specifies the decor to
       update. If given, only windows which are assigned to that particular decor are updated.
       This command is useful, for instance, after a ButtonStyle, TitleStyle or BorderStyle
       (possibly used in conjunction with AddToDecor). Specifying an invalid decor results in all
       windows being updated.

                                            2024-07-25                             FVWM3STYLES(1)