'\" t .\" Title: fvwm3styles .\" Author: [see the "AUTHOR(S)" section] .\" Generator: Asciidoctor 2.0.20 .\" Date: 2024-03-09 .\" Manual: \ \& .\" Source: \ \& .\" Language: English .\" .TH "FVWM3STYLES" "1" "2024-03-09" "\ \&" "\ \&" .ie \n(.g .ds Aq \(aq .el .ds Aq ' .ss \n[.ss] 0 .nh .ad l .de URL \fI\\$2\fP <\\$1>\\$3 .. .als MTO URL .if \n[.g] \{\ . mso www.tmac . am URL . ad l . . . am MTO . ad l . . . LINKSTYLE blue R < > .\} .SH "NAME" fvwm3styles \- fvwm styles .SH "CONTROLLING WINDOW STYLES" .sp For readability, the commands in this section are not sorted alphabetically. The description of the \fBStyle\fP command can be found at the end of this section. .sp \fBFocusStyle\fP \fIstylename\fP \fIoptions\fP .RS 4 works exactly like the \fBStyle\fP 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. \fBFocusStyle\fP is meant to make the configuration file more readable. Example: .sp .if n .RS 4 .nf .fam C FocusStyle * EnterToFocus, !LeaveToUnfocus .fam .fi .if n .RE .sp is equivalent to .sp .if n .RS 4 .nf .fam C Style * FPEnterToFocus, !FPLeaveToUnfocus .fam .fi .if n .RE .RE .sp \fBDestroyStyle\fP \fIstyle\fP .RS 4 deletes the style named \fIstyle\fP. The changes take effect immediately. Note that \fIstyle\fP is not a wild\-carded search string, but rather a case\-sensitive string that should exactly match the original \fBStyle\fP command. .sp Destroying style "*" can be done, but isn\(cqt really to be recommended. For example: .sp .if n .RS 4 .nf .fam C DestroyStyle Application* .fam .fi .if n .RE .sp This removes all settings for the style named "Application*", NOT all styles starting with "Application". .RE .sp \fBDestroyWindowStyle\fP .RS 4 deletes the styles set by the \fBWindowStyle\fP command on the selected window. The changes take effect immediately. .RE .sp \fBUpdateStyles\fP .RS 4 All pending updates of all windows\*(Aq styles and looks are applied immediately. E.g. if \fBStyle\fP, \fIWindowStyle\fP or \fITitleStyle\fP commands were issued inside a fvwm function. .RE .sp \fBStyle\fP \fIstylename\fP \fIoptions\fP ... .RS 4 The \fBStyle\fP command is used to set attributes of a window to values other than the default or to set the window manager default styles. .sp \fIstylename\fP can be a window\(cqs name, class, visible name, or resource string. It may contain the wildcards \*(Aq\fB\*(Aq and \*(Aq?\*(Aq, which are matched in the usual Unix filename manner. Multiple style options in a single *Style\fP 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). .sp 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". .sp 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. .sp \fIoptions\fP is a comma separated list containing one or more of the following keywords. Each group of style names is separated by slashes (\*(Aq/\*(Aq). The last style in these groups is the default. \fIBorderWidth\fP, \fIHandleWidth\fP, \fI!Icon\fP / \fIIcon\fP, \fIMiniIcon\fP, \fIIconBox\fP, \fIIconGrid\fP, \fIIconFill\fP, \fIIconSize\fP, \fI!Title\fP / \fITitle\fP, \fITitleAtBottom\fP / \fITitleAtLeft\fP / \fITitleAtRight\fP / \fITitleAtTop\fP, \fILeftTitleRotatedCW\fP / \fILeftTitleRotatedCCW\fP, \fIRightTitleRotatedCCW\fP / \fIRightTitleRotatedCW\fP, \fITopTitleRotated\fP / \fITopTitleNotRotated\fP, \fIBottomTitleRotated\fP / \fIBottomTitleNotRotated\fP, \fI!UseTitleDecorRotation\fP / \fIUseTitleDecorRotation\fP, \fIStippledTitle\fP / \fI!StippledTitle\fP, \fIStippledIconTitle\fP / \fI!StippledIconTitle\fP, \fIIndexedWindowName\fP / \fIExactWindowName\fP, \fIIndexedIconName\fP / \fIExactIconName\fP, \fITitleFormat\fP / \fIIconTitleFormat\fP / \fI!Borders\fP / \fIBorders\fP, \fI!Handles\fP / \fIHandles\fP, \fIWindowListSkip\fP / \fIWindowListHit\fP, \fICirculateSkip\fP / \fICirculateHit\fP, \fICirculateSkipShaded\fP / \fICirculateHitShaded\fP, \fICirculateSkipIcon\fP / \fICirculateHitIcon\fP, \fILayer\fP, \fIStaysOnTop\fP / \fIStaysOnBottom\fP / \fIStaysPut\fP, \fISticky\fP / \fISlippery\fP, \fIStickyAcrossPages\fP / \fI!StickyAcrossPages\fP, \fIStickyAcrossDesks\fP / \fI!StickyAcrossDesks\fP, \fI!StickyStippledTitle\fP / \fIStickyStippledTitle\fP, \fI!StickyStippledIconTitle\fP / \fIStickyStippledIconTitle\fP, \fIStartIconic\fP / \fIStartNormal\fP, \fIColorset\fP, \fIHilightColorset\fP, \fIBorderColorset\fP, \fIHilightBorderColorset\fP, \fIIconTitleColorset\fP, \fIHilightIconTitleColorset\fP, \fIIconBackgroundColorset\fP, \fIIconTitleRelief\fP, \fIIconBackgroundRelief\fP, \fIIconBackgroundPadding\fP, \fIFont\fP, \fIIconFont\fP, \fIStartsOnDesk\fP / \fIStartsOnPage\fP / \fIStartsAnyWhere\fP, \fIStartsOnScreen\fP, \fIStartShaded\fP / \fI!StartShaded\fP, \fIManualPlacementHonorsStartsOnPage\fP / \fIManualPlacementIgnoresStartsOnPage\fP, \fICaptureHonorsStartsOnPage\fP / \fICaptureIgnoresStartsOnPage\fP, \fIRecaptureHonorsStartsOnPage\fP / \fIRecaptureIgnoresStartsOnPage\fP, \fIStartsOnPageIncludesTransients\fP / \fIStartsOnPageIgnoresTransients\fP, \fIIconTitle\fP / \fI!IconTitle\fP, \fIMwmButtons\fP / \fIFvwmButtons\fP, \fIMwmBorder\fP / \fIFvwmBorder\fP, \fIMwmDecor\fP / \fI!MwmDecor\fP, \fIMwmFunctions\fP / \fI!MwmFunctions\fP, \fIHintOverride\fP / \fI!HintOverride\fP, \fI!Button\fP / \fIButton\fP, \fIResizeHintOverride\fP / \fI!ResizeHintOverride\fP, \fIOLDecor\fP / \fI!OLDecor\fP, \fIStickyIcon\fP / \fISlipperyIcon\fP, \fIStickyAcrossPagesIcon\fP / \fI!StickyAcrossPagesIcon\fP, \fIStickyAcrossDesksIcon\fP / \fI!StickyAcrossDesksIcon\fP, \fIManualPlacement\fP / \fICascadePlacement\fP / \fIMinOverlapPlacement\fP / \fIMinOverlapPercentPlacement\fP / \fITileManualPlacement\fP / \fITileCascadePlacement\fP / \fIPositionPlacement\fP, \fIMinOverlapPlacementPenalties\fP, \fIMinOverlapPercentPlacementPenalties\fP, \fIDecorateTransient\fP / \fINakedTransient\fP, \fIDontRaiseTransient\fP / \fIRaiseTransient\fP, \fIDontLowerTransient\fP / \fILowerTransient\fP, \fIDontStackTransientParent\fP / \fIStackTransientParent\fP, \fISkipMapping\fP / \fIShowMapping\fP, \fIScatterWindowGroups\fP / \fIKeepWindowGroupsOnDesk\fP, \fIUseDecor\fP, \fIUseStyle\fP, \fI!UsePPosition\fP / \fINoPPosition\fP / \fIUsePPosition\fP, \fI!UseUSPosition\fP, \fINoUSPosition\fP / \fIUseUSPosition\fP, \fI!UseTransientPPosition\fP, \fINoTransientPPosition\fP / \fIUseTransientPPosition\fP, \fI!UseTransientUSPosition\fP / \fINoTransientUSPosition\fP / \fIUseTransientUSPosition\fP, \fI!UseIconPosition\fP / \fINoIconPosition\fP / \fIUseIconPosition\fP, \fILenience\fP / \fI!Lenience\fP, \fIClickToFocus\fP / \fISloppyFocus\fP / \fIMouseFocus\fP|\fIFocusFollowsMouse\fP / \fINeverFocus\fP, \fIClickToFocusPassesClickOff\fP / \fIClickToFocusPassesClick\fP, \fIClickToFocusRaisesOff\fP / \fIClickToFocusRaises\fP, \fIMouseFocusClickRaises\fP / \fIMouseFocusClickRaisesOff\fP, \fIGrabFocus\fP / \fIGrabFocusOff\fP, \fIGrabFocusTransientOff\fP / \fIGrabFocusTransient\fP, \fIFPFocusClickButtons\fP, \fIFPFocusClickModifiers\fP, \fI!FPSortWindowlistByFocus\fP / \fIFPSortWindowlistByFocus\fP, \fIFPClickRaisesFocused\fP / \fI!FPClickRaisesFocused\fP, \fIFPClickDecorRaisesFocused\fP / \fI!FPClickDecorRaisesFocused\fP, \fIFPClickIconRaisesFocused\fP / \fI!FPClickIconRaisesFocused\fP, \fI!FPClickRaisesUnfocused\fP / \fIFPClickRaisesUnfocused\fP, \fIFPClickDecorRaisesUnfocused\fP / \fI!FPClickDecorRaisesUnfocused\fP, \fIFPClickIconRaisesUnfocused\fP / \fI!FPClickIconRaisesUnfocused\fP, \fIFPClickToFocus\fP / \fI!FPClickToFocus\fP, \fIFPClickDecorToFocus\fP / \fI!FPClickDecorToFocus\fP, \fIFPClickIconToFocus\fP / \fI!FPClickIconToFocus\fP, \fI!FPEnterToFocus\fP / \fIFPEnterToFocus\fP, \fI!FPLeaveToUnfocus\fP / \fIFPLeaveToUnfocus\fP, \fI!FPFocusByProgram\fP / \fIFPFocusByProgram\fP, \fI!FPFocusByFunction\fP / \fIFPFocusByFunction\fP, \fIFPFocusByFunctionWarpPointer\fP / \fI!FPFocusByFunctionWarpPointer\fP, \fIFPLenient\fP / \fI!FPLenient\fP, \fI!FPPassFocusClick\fP / \fIFPPassFocusClick\fP, \fI!FPPassRaiseClick\fP / \fIFPPassRaiseClick\fP, \fIFPIgnoreFocusClickMotion\fP / \fI!FPIgnoreFocusClickMotion\fP, \fIFPIgnoreRaiseClickMotion\fP / \fI!FPIgnoreRaiseClickMotion\fP, \fI!FPAllowFocusClickFunction\fP / \fIFPAllowFocusClickFunction\fP, \fI!FPAllowRaiseClickFunction\fP / \fIFPAllowRaiseClickFunction\fP, \fIFPGrabFocus\fP / \fI!FPGrabFocus\fP, \fI!FPGrabFocusTransient\fP / \fIFPGrabFocusTransient\fP, \fIFPOverrideGrabFocus\fP / \fI!FPOverrideGrabFocus\fP, \fIFPReleaseFocus\fP / \fI!FPReleaseFocus\fP, \fI!FPReleaseFocusTransient\fP / \fIFPReleaseFocusTransient\fP, \fIFPOverrideReleaseFocus\fP / \fI!FPOverrideReleaseFocus\fP, \fIStartsLowered\fP / \fIStartsRaised\fP, \fIIgnoreRestack\fP / \fIAllowRestack\fP, \fIFixedPosition\fP / \fIVariablePosition\fP, \fIFixedUSPosition\fP / \fIVariableUSPosition\fP, \fIFixedPPosition\fP / \fIVariablePPosition\fP, \fIFixedSize\fP / \fIVariableSize\fP, \fIFixedUSSize\fP / \fIVariableUSSize\fP, \fIFixedPSize\fP / \fIVariablePSize\fP, \fI!Closable\fP / \fIClosable\fP, \fI!Iconifiable\fP / \fIIconifiable\fP, \fI!Maximizable\fP / \fIMaximizable\fP, \fI!AllowMaximizeFixedSize\fP / \fIAllowMaximizeFixedSize\fP, \fIIconOverride\fP / \fINoIconOverride\fP / \fINoActiveIconOverride\fP, \fIDepressableBorder\fP / \fIFirmBorder\fP, \fIMinWindowSize\fP, \fIMaxWindowSize\fP, \fIIconifyWindowGroups\fP / \fIIconifyWindowGroupsOff\fP, \fIResizeOpaque\fP / \fIResizeOutline\fP, \fIBackingStore\fP / \fIBackingStoreOff\fP / \fIBackingStoreWindowDefault\fP, \fIOpacity\fP / \fIParentalRelativity\fP, \fISaveUnder\fP / \fISaveUnderOff\fP, \fIWindowShadeShrinks\fP / \fIWindowShadeScrolls\fP, \fIWindowShadeSteps\fP, \fIWindowShadeAlwaysLazy\fP / \fIWindowShadeBusy\fP / \fIWindowShadeLazy,\fP \fIEWMHDonateIcon\fP / \fIEWMHDontDonateIcon\fP, \fIEWMHDonateMiniIcon\fP / \fIEWMHDontDonateMiniIcon\fP, \fIEWMHMiniIconOverride\fP / \fIEWMHNoMiniIconOverride\fP, \fIEWMHUseStackingOrderHints\fP / \fIEWMHIgnoreStackingOrderHints\fP, \fIEWMHIgnoreStateHints\fP / \fIEWMHUseStateHints\fP, \fIEWMHIgnoreStrutHints\fP / \fIEWMHUseStrutHints\fP, \fIEWMHIgnoreWindowType\fP / \fI!EWMHIgnoreWindowType\fP, \fIEWMHMaximizeIgnoreWorkingArea\fP / \fIEWMHMaximizeUseWorkingArea\fP / \fIEWMHMaximizeUseDynamicWorkingArea\fP, \fIEWMHPlacementIgnoreWorkingArea\fP / \fIEWMHPlacementUseWorkingArea\fP / \fIEWMHPlacementUseDynamicWorkingArea\fP, \fIMoveByProgramMethod\fP, \fIUnmanaged\fP, \fIState\fP, \fISnapGrid\fP, \fISnapAttraction\fP, \fIEdgeMoveDelay\fP, \fIEdgeResizeDelay\fP. \fIEdgeMoveResistance\fP, \fIInitialMapCommand\fP .sp 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. .sp \fBFocus policy\fP .RS 4 \fIClickToFocus\fP instructs fvwm to give the focus to a window when it is clicked in. The default \fIMouseFocus\fP (or its alias \fIFocusFollowsMouse\fP) 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. \fISloppyFocus\fP is similar, but doesn\(cqt 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 \fINeverFocus\fP never receives the focus. This is useful for modules like \fBFvwmButtons\fP. 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. .sp 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. .RE .sp \fBFocusing the window\fP .RS 4 With \fIFPEnterToFocus\fP, when the pointer enters a window it receives focus. .sp With \fIFPLeaveToUnfocus\fP a window loses focus when the pointer leaves it. .sp With \fIFPClickToFocus\fP, \fIFPClickDecorToFocus\fP or \fIFPClickIconToFocus\fP, a window receives focus when the inside of the window or the decorations or its icon is clicked. .sp The \fIFPFocusByProgram\fP style allows windows to take the focus themselves. .sp The !\fIFPFocusByFunction\fP style forbids that a window receives the focus via the \fBFocus\fP and \fBFlipFocus\fP commands. .sp The \fIFPFocusByFunctionWarpPointer\fP style controls if the pointer is warped to a selected window when the \fBFocus\fP command is used. .sp \fIFPLenient\fP allows focus on windows that do not want it, like \fBFvwmPager\fP or xclock. .sp The \fIFPFocusClickButtons\fP 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"). .sp The \fIFPFocusClickModifiers\fP style takes a list of modifier keys just like the \fBKey\fP 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"). .sp With the \fIFPPassFocusClick\fP style, the click that was used to focus a window is passed to the application. .sp With the \fIFPAllowFocusClickFunction\fP style, the click that was used to focus a window can also trigger a normal action that was bound to the window with the \fBMouse\fP command). .sp If the \fIFPIgnoreFocusClickMotion\fP 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 \fBMouse\fP 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 \fBMoveThreshold\fP command. .sp The \fIFPSortWindowlistByFocus\fP and !\fIFPSortWindowlistByFocus\fP 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 \fIClickToFocus\fP and \fISloppyFocus\fP. .sp \fBClicking the window to raise\fP .sp The styles \fIFPClickRaisesFocused\fP, \fIFPClickDecorRaisesFocused\fP and \fIFPClickIconRaisesFocused\fP 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. .sp The styles \fIFPClickRaisesUnfocused\fP, \fIFPClickDecorRaisesUnfocused\fP and \fIFPClickIconRaisesUnfocused\fP 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. .sp With the \fIFPPassRaiseClick\fP style, the click that was used to raise the window is passed to the application. .sp With the \fIFPAllowRaiseClickFunction\fP style, the click that was used to raise the window can also trigger a normal action that was bound to the window with the \fBMouse\fP command. .sp If the \fIFPIgnoreRaiseClickMotion\fP 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 \fBMouse\fP 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 \fBMoveThreshold\fP command. .sp \fBGrabbing the focus when a new window is created\fP .sp New normal or transient windows with the \fIFPGrabFocus\fP or \fIFPGrabFocusTransient\fP style automatically receive the focus when they are created. \fIFPGrabFocus\fP is the default for windows with the \fIClickToFocus\fP style. Note that even if these styles are disabled, the application may take the focus itself. Fvwm can not prevent this. .sp The \fIOverrideGrabFocus\fP style instructs fvwm to never take away the focus from such a window via the \fIGrabFocus\fP or \fIGrabFocusTransient\fP 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. .sp The above three styles are accompanied by \fIFPReleaseFocus\fP, \fIFPReleaseFocusTransient\fP and \fIFPOverrideReleaseFocus\fP. 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. .sp \fIClickToFocusPassesClickOff\fP and \fIClickToFocusPassesClick\fP controls whether a mouse click to focus a window is sent to the application or not. Similarly, \fIClickToFocusRaisesOff\fP/\fIMouseFocusClickRaisesOff\fP and \fIClickToFocusRaises\fP/\fIMouseFocusClickRaises\fP control if the window is raised (but depending on the focus model). .sp Note: in fvwm versions prior to 2.5.3, the "Click..." options applied only to windows with \fIClickToFocus\fP while the "Mouse..." options applied to windows with a different focus policy. This is no longer the case. .sp The old \fIGrabFocus\fP style is equivalent to using \fIFPGrabFocus\fP .br \fIFPReleaseFocus\fP. .sp The old \fIGrabFocusTransient\fP style is equivalent to using \fIFPGrabFocusTransient\fP + \fIFPReleaseFocusTransient\fP. .sp \fILenience\fP is equivalent to the new style \fIFPLenient\fP. .RE .RE .sp \fBWindow title\fP .RS 4 The \fITitle\fP and !Title options determine whether the window is decorated with a title\-bar. By default all windows have a title\-bar. \fINoTitle\fP is equivalent to \fI!Title\fP but is deprecated. .sp Windows with the \fITitleAtBottom\fP, \fITitleAtLeft\fP or \fITitleAtRight\fP style have a title\-bar below, to the left or to the right of the window instead of above as usual. The \fITitleAtTop\fP style restores the default placement. Even if the window has the \fI!Title\fP style set, this affects the \fBWindowShade\fP command. Please check the \fBWindowShade\fP 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: .sp 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 \fILeftTitleRotatedCW\fP if \fITitleAtLeft\fP is used, and with \fIRightTitleRotatedCCW\fP if \fITitleAtRight\fP is used. The defaults can be restored with \fILeftTitleRotatedCCW\fP and \fIRightTitleRotatedCW\fP. A normal horizontal text may be rotated as well with \fITopTitleRotated\fP if \fITitleAtTop\fP is used, and with \fIBottomTitleRotated\fP if \fITitleAtBottom\fP is used. The defaults can be restored with \fITopTitleNotRotated\fP and \fIBottomTitleNotRotated\fP. .sp By default the title bar decoration defined using the \fBTitleStyle\fP command is rotated following the title text rotation (see the previous paragraph). This can be disabled by using the !\fIUseTitleDecorRotation\fP style. \fIUseTitleDecorRotation\fP reverts back to the default. .sp With the \fIStippledTitle\fP style, titles are drawn with the same effect that is usually reserved for windows with the \fISticky\fP, \fIStickyAcrossPages\fP or \fIStickyAcrossDesks\fP style. \fI!StippledTitle\fP reverts back to normal titles. \fIStippledTitleOff\fP is equivalent to \fI!StippledTitle\fP but is deprecated. .sp \fBColorset\fP takes the colorset number as its sole argument and overrides the colors set by \fIColor\fP. Instead, the corresponding colors from the given colorset are used. Note that all other features of a colorset are not used. Use the \fBColorset\fP decoration style in the \fBTitleStyle\fP and \fIButtonStyle\fP command for that. To stop using the colorset, the colorset number is omitted. .sp \fIBorderColorset\fP takes eight positive integers as its arguments and will apply the given colorsets to the eight individual components of the window border. .sp For backwards compatibility, if one integer is supplied, that is applied to all window border components. .sp The border is split up into the following definitions, and is the same order as the colorsets which will be applied to the border. .sp .if n .RS 4 .nf .fam C North, North East, East, South East, South, South West, West, North West .fam .fi .if n .RE .sp \fINorth\fP, \fIEast\fP, \fISouth\fP, and \fIWest\fP refer to the top, left, bottom, and right sides of the window border. .sp \fINE\fP, \fISE\fP, \fISW\fP, and \fINW\fP refer to the window handles. .sp \fBNOTE\fP: 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 \fINorth\fP, \fISouth\fP, \fIEast\fP, or \fIWest\fP. .sp The \fIHilightBorderColorset\fP style option works the same as \fIBorderColorset\fP but is used when the window has the focus. .sp !\fIIconTitle\fP disables displaying icon labels while the opposite style \fIIconTitle\fP enables icon labels (default behaviour). \fINoIconTitle\fP is equivalent to \fI!IconTitle\fP but is deprecated. .sp \fIIconTitleColorset\fP takes the colorset number as its sole argument and overrides the colors set by \fIColor\fP or \fIColorset\fP. To stop using this colorset, the argument is omitted. .sp \fIHilightIconTitleColorset\fP takes the colorset number as its sole argument and overrides the colors set by \fBHilightColor\fP or \fIHilightColorset\fP. To stop using this colorset, the argument is omitted. .sp \fIIconBackgroundColorset\fP 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. .sp \fIIconTitleRelief\fP 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. .sp \fIIconBackgroundRelief\fP 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. .sp \fIIconBackgroundPadding\fP 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. .sp The \fIFont\fP and \fIIconFont\fP 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 \fBDefaultFont\fP command is used. To revert back to the default, use the style without the name argument. These styles replace the older \fBWindowFont\fP and \fIIconFont\fP commands. .sp The deprecated \fIIndexedWindowName\fP style causes fvwm to use window titles in the form .sp .if n .RS 4 .nf .fam C name (i) .fam .fi .if n .RE .sp where \fIname\fP is the exact window name and \fIi\fP is an integer which represents the \fIi th\fP window with \fIname\fP as window name. This has been replaced with: .sp .if n .RS 4 .nf .fam C TitleFormat %n (%t) .fam .fi .if n .RE .sp \fIExactWindowName\fP restores the default which is to use the exact window name. Deprecated in favour of: .sp .if n .RS 4 .nf .fam C TitleFormat %n .fam .fi .if n .RE .sp \fIIndexedIconName\fP and \fIExactIconName\fP work the same as \fIIndexedWindowName\fP and \fIExactWindowName\fP styles but for the icon titles. Both are deprecated in favour of: .sp .if n .RS 4 .nf .fam C IconTitleFormat %n (%t) IconTitleFormat %n .fam .fi .if n .RE .sp \fITitleFormat\fP describes what the visible name of a window should look like, with the following placeholders being valid: .sp \fB%n\fP .RS 4 Insert the window\(cqs name. .RE .sp \fB%i\fP .RS 4 Insert the window\(cqs icon name. .RE .sp \fB%c\fP .RS 4 Insert the window\(cqs class name. .RE .sp \fB%r\fP .RS 4 Insert the window\(cqs resource name. .RE .sp \fB%t\fP .RS 4 Insert the window count. .RE .sp \fB%I\fP .RS 4 Insert the window ID. .RE .sp \fB%%\fP .RS 4 Insert a literal \*(Aq%\*(Aq character. .sp Any amount of whitespace may be used, along with other characters to make up the string \(em but a valid \fITitleFormat\fP 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: .sp .if n .RS 4 .nf .fam C TitleFormat " %n " \-> [%t] \-> [%c] .fam .fi .if n .RE .sp Note: It\(cqs perfectly possible to use a \fITitleFormat\fP which can result in wiping out the visible title altogether. For example: .sp .if n .RS 4 .nf .fam C TitleFormat %z .fam .fi .if n .RE .RE .sp Simply because the placeholder \*(Aq%z\*(Aq isn\(cqt supported. This is not a bug but rather a facet of how the formatting parser works. .sp + \fIIconTitleFormat\fP describes what the visible icon name of a window should look like, with the options being the same as \fITitleFormat\fP. .RE .sp \fBTitle buttons\fP .RS 4 \fIButton\fP and !\fIButton\fP take a numeric argument which is the number of the title\-bar button which is to be shown or omitted. \fINoButton\fP is equivalent to \fI!Button\fP but is deprecated. .sp \fIMwmButtons\fP makes the \fBMaximize\fP button look pressed\-in when the window is maximized. See the \fIMwmDecorMax\fP flag in \fBButtonStyle\fP for more information. To switch this style off again, use the \fBFvwmButtons\fP style. .RE .sp \fBBorders\fP .RS 4 !\fIBorders\fP suppresses the window border (but not the title) completely. The \fIBorders\fP style enables them again. Without borders, all other styles affecting window borders are meaningless. .sp \fIMwmBorder\fP makes the 3D bevel more closely match Mwm\(cqs. \fIFvwmBorder\fP turns off the previous option. .sp With the !\fIHandles\fP style, the window does not get the handles in the window corners that are commonly used to resize it. With \fI!Handles\fP, the width from the \fIBorderWidth\fP style is used. By default, or if \fIHandles\fP is specified, the width from the \fIHandleWidth\fP style is used. \fINoHandles\fP is equivalent to \fI!Handles\fP but is deprecated. .sp \fIHandleWidth\fP 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. .sp \fIBorderWidth\fP 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 \fI!Handles\fP style is specified too. Using BorderWidth without an argument restores the default. .sp \fIDepressableBorder\fP 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 \fIFirmBorder\fP style. .RE .sp \fBIcons, shading, maximizing, movement, resizing\fP .RS 4 \fIIcon\fP 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 \fINET_WM_ICON property). The _IconOverride\fP style changes the behavior to override any client\-provided icons; the \fINoIconOverride\fP style changes the behavior to not override any client\-provided icons; the default overriding behavior can be activated with the \fINoActiveIconOverride\fP 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. .sp There is one exception to these rules, namely .sp .if n .RS 4 .nf .fam C Style * Icon unknown.xpm .fam .fi .if n .RE .sp doesn\(cqt 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 .sp .if n .RS 4 .nf .fam C Style ** Icon unknown.xpm .fam .fi .if n .RE .sp If the \fINoIcon\fP attribute is set then the specified window simply disappears when it is iconified. The window can be recovered through the window\-list. If \fIIcon\fP is set without an argument then the \fINoIcon\fP attribute is cleared but no icon is specified. An example which allows only the \fBFvwmPager\fP module icon to exist: .sp .if n .RS 4 .nf .fam C Style * NoIcon Style FvwmPager Icon .fam .fi .if n .RE .sp \fIIconBox\fP takes no argument, four numeric arguments (plus optionally a screen specification), an X11 geometry string or the string "none": .sp .if n .RS 4 .nf .fam C IconBox [screen scr\-spec] l t r b .fam .fi .if n .RE .sp or .sp .if n .RS 4 .nf .fam C IconBox geometry .fam .fi .if n .RE .sp Where \fIl\fP is the left coordinate, \fIt\fP is the top, \fIr\fP is right and \fIb\fP is bottom. Negative coordinates indicate distance from the right or bottom of the screen. If the first argument is the word \fIscreen\fP, the \fIscr\-spec\fP argument specifies the RandR screen on which the IconBox is defined ´or the additional \*(Aqw\*(Aq 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: .sp .if n .RS 4 .nf .fam C IconBox \-80 240 \-1 \-1 .fam .fi .if n .RE .sp 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. .sp Perhaps it is easier to use is an X11 geometry string though: .sp .if n .RS 4 .nf .fam C IconBox 1000x70\-1\-1 .fam .fi .if n .RE .sp 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 \fBStyle\fP command. For example: .sp .if n .RS 4 .nf .fam C Style * IconBox \-80 240 \-1 \-1, \(rs IconBox 1000x70\-1\-1 .fam .fi .if n .RE .sp A Style command with the IconBox option replaces any icon box defined previously by another Style command for the same style. That\(cqs why the backslash in the previous example is required. .sp Note: The geometry for the icon box command takes the additional screen specifier "@w" in case RandR isused. This designates the screen where the window center is located. The additional screen specifier is not allowed anywhere else. .sp 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 \fBStyle\fP command. To disable all icon boxes including the default icon box, the argument "none" can be specified. .sp 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: .sp .if n .RS 4 .nf .fam C AddToFunc DeiconifyAndRearrange + C Iconify off + C All (CurrentPage, Iconic) PlaceAgain Icon .fam .fi .if n .RE .sp And then replace all places where you call the \fBIconify\fP command to de\-iconify an icon with a call to the new function. For example replace .sp .if n .RS 4 .nf .fam C AddToFunc IconFunc + C Iconify off + M Raise + M Move + D Iconify off Mouse 1 I A Iconify off .fam .fi .if n .RE .sp with .sp .if n .RS 4 .nf .fam C AddToFunc IconFunc + C DeiconifyAndRearrange + M Raise + M Move + D DeiconifyAndRearrange Mouse 1 I A DeiconifyAndRearrange .fam .fi .if n .RE .sp \fIIconGrid\fP takes 2 numeric arguments greater than zero. .sp .if n .RS 4 .nf .fam C IconGrid x y .fam .fi .if n .RE .sp Icons are placed in an icon box by stepping through the icon box using the \fIx\fP and \fIy\fP 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 \fIIconSize\fP argument to clip or stretch an icon to a maximum size. An \fIIconGrid\fP definition must follow the \fBIconBox\fP definition that it applies to: .sp .if n .RS 4 .nf .fam C Style * IconBox \-80x240\-1\-1, IconGrid 90 90 .fam .fi .if n .RE .sp \fIIconFill\fP takes 2 arguments. .sp .if n .RS 4 .nf .fam C IconFill Bottom Right .fam .fi .if n .RE .sp 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: .sp .if n .RS 4 .nf .fam C IconFill left top .fam .fi .if n .RE .sp 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 \fBIconFill\fP definition must follow the \fBIconBox\fP definition that it applies to: .sp .if n .RS 4 .nf .fam C Style * IconBox \-80x240\-1\-1, IconFill b r .fam .fi .if n .RE .sp \fIIconSize\fP sets limits on the size of an icon image. Both user\-provided and application\-provided icon images are affected. .sp .if n .RS 4 .nf .fam C IconSize [ width height [ maxwidth maxheight ] ] .fam .fi .if n .RE .sp All arguments are measured in pixels. When all four arguments are passed to \fIIconSize,\fP \fIwidth\fP and \fIheight\fP represent the minimum size of an icon, and \fImaxwidth\fP and \fImaxheight\fP 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. .sp If only two arguments are passed to \fIIconSize,\fP \fIwidth\fP and \fIheight\fP represent the absolute size of an icon. Icons covered by this style are padded or clipped to achieve the given size. .sp If no arguments are specified, the default values are used for each dimension. This effectively places no limits on the size of an icon. .sp The value of "\-1" can be used in place of any of the arguments to specify the default value for that dimension. .sp In addition to the numeric arguments, 1 additional argument can be "Stretched", "Adjusted", or "Shrunk". .sp Note that module provided icon managers are not affected by this style. .sp \fIMiniIcon\fP specifies a pixmap to use as the miniature icon for the window. This miniature icon can be drawn in a title\-bar button (see \fBButtonStyle\fP), and can be used by various fvwm modules (\fBFvwmIconMan\fP and \fBFvwmPager\fP). It takes the name of a pixmap as an argument. .sp \fIWindowShadeShrinks\fP and \fIWindowShadeScrolls\fP control if the contents of a window that is being shaded with the \fBWindowShade\fP command are scrolled (default) or if they stay in place. The shrinking mode is a bit faster .sp The \fIWindowShadeSteps\fP option selects the number of steps for animation when shading a window with \fBWindowShade\fP. It takes one number as its argument. If the number has a trailing \*(Aq\fIp\fP\*(Aq 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. .sp The \fBWindowShade\fP 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 \fIWindowShadeAlwaysLazy or WindowShadeBusy\fP to force using the lazy or busy mode. The default setting is restored with \fIWindowShadeLazy\fP. .sp \fIResizeOpaque\fP 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 \fIResizeOutline\fP style (default) negates the \fIResizeOpaque\fP 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 \fIResizeOpaque\fP style for these windows. To exempt certain windows from opaque resizing you could use these lines in your configuration file: .sp .if n .RS 4 .nf .fam C Style * ResizeOpaque Style rxvt ResizeOutline Style emacs ResizeOutline .fam .fi .if n .RE .sp \fISticky\fP makes the window sticky, i.e. it is always visible on each page and each desk. The opposite style, \fISlippery\fP reverts back to the default. .sp \fIStickyIcon\fP makes the window sticky when it\(cqs iconified. It de\-iconifies on top the active desktop. \fISlipperyIcon\fP reverts back to the default. .sp \fIStickyAcrossPages\fP and \fIStickyAcrossPagesIcon\fP work like \fISticky\fP and \fIStickyIcon\fP, but stick the window only across pages, not desks while \fIStickyAcrossDesks and StickyAcrossDesksIcon\fP works the other way round. .sp Windows that have been marked as \fISticky\fP or \fIStickyAcrossDesks\fP or \fIStickyAcrossPages\fP will have stipples drawn on the titlebar. This can be negated with the !\fIStickyStippledTitle\fP style. The style \fIStickyStippledTitle\fP puts back the stipples where that window has also been marked as \fISticky\fP. Note that this is the default style for \fISticky\fP windows. Sticky icons will have stipples drawn on the icon title. This can be disabled in the same way with the !\fIStickyStippledIconTitle\fP style. .sp Windows with the \fIStartIconic\fP 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 \fIStartNormal\fP style. .sp \fIStickyIcon\fP makes the window sticky when it\(cqs iconified. It de\-iconifies on top the active desktop. \fISlipperyIcon\fP reverts back to the default. .sp \fIStickyIconPage\fP works like \fIStickyIcon\fP, but sticks the icon only across pages, not desks while \fIStickyIconDesk\fP works the other way round. .sp \fIStippledIconTitle\fP works like \fIStippledTitle\fP in that it draws stipples on the titles of icons but doesn\(cqt make the icon sticky. .sp \fIIgnoreRestack\fP makes fvwm ignore attempts of clients to raise or lower their own windows. By default, the opposite style, \fIAllowRestack\fP is active. .sp \fIFixedPosition\fP and \fIFixedUSPosition\fP 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 \fIVariablePosition\fP or \fIVariableUSPosition\fP style. .sp \fIFixedSize\fP and \fIFixedUSSize\fP make fvwm ignore attempts of the user to resize the window. To allow the user to resize windows, use the \fIVariableSize\fP or \fIVariableUSSize\fP style. .sp \fIFixedPPosition\fP and \fIFixedPSize\fP make fvwm ignore attempts of the program to move or resize its windows. To allow this kind of actions, use the \fIVariablePPosition\fP or \fIVariablePSize\fP 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 \fIVariablePPosition\fP or \fI!UsePPosition\fP styles. The \fIFixedPSize\fP style may screw up window dimensions for some applications. Do Not use this style in this case. .sp \fIMoveByProgramMethod\fP 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, \fIUseGravity\fP and \fIIgnoreGravity\fP on the window (and that window only) and see if that helps. By default, fvwm uses the \fIAutoDetect\fP method. Once the method was detected, it is never changed again. As long as fvwm can not detect the proper method, it uses \fIIgnoreGravity\fP. To force fvwm to retry the detection, use one of the other two options first and then use \fIAutoDetect\fP again. .sp Note: This option was introduced to alleviate a problem with the ICCCM specification. The ICCCM clearly states that the \fIUseGravity\fP option should be used, but traditionally applications ignored this rule. .sp \fIClosable\fP enables the functions \fBClose\fP, \fBDelete\fP and \fBDestroy\fP to be performed on the windows. This is on by default. The opposite, \fI!Closable\fP, inhibits the window to be closed. .sp \fIIconifiable\fP enables the function \fBIconify\fP to be performed on the windows. This is on by default. The opposite, \fI!Iconifiable\fP, inhibits the window from being iconified. .sp \fIMaximizable\fP enables the function \fBMaximize\fP to be performed on the windows. This is on by default. The opposite, \fI!Maximizable\fP, inhibits the window from being maximized. .sp \fIAllowMaximizeFixedSize\fP enables the function \fBMaximize\fP to be performed on windows that are not resizable, unless maximization has been disabled either using the style \fI!Maximizable\fP or through WM hints. This is on by default. The opposite, \fI!AllowMaximizeFixedSize\fP, inhibits all windows that are not resizable from being maximized. .sp \fIResizeHintOverride\fP 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 \fINoResizeOverride\fP. .sp \fIMinWindowSize [ width [ p | c ] height [ p | c ] ]\fP Tells fvwm the minimum width and height of a window. The values are the percentage of the total screen area. If the letter \*(Aq\fIp\fP\*(Aq is appended to either of the values, the numbers are interpreted as pixels. If the letter \*(Aq\fIc\fP\*(Aq is appended to either of the values, the numbers are in terms of the client window\(cqs 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). .sp \fIMaxWindowSize [ width [ p | c ] height [ p | c ] ]\fP Tells fvwm the maximum width and height of a window. The values are the percentage of the total screen area. If the letter \*(Aq\fIp\fP\*(Aq is appended to either of the values, the numbers are interpreted as pixels. If the letter \*(Aq\fIc\fP\*(Aq is appended to either of the values, the numbers are in terms of the client window\(cqs 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 \fIheight\fP nor \fIwidth\fP 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). .sp With \fIIconifyWindowGroups\fP 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 \fIIconifyWindowGroupsOff\fP, 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 \fIIconifyWindowGroups\fP only for selected applications. .sp The option \fISnapAttraction\fP affects interactive window movement: If during an interactive move the window or icon comes within \fIproximity\fP 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 \fISnapGrid\fP option. .sp The second argument optional and may be set to one of the five following values: With \fIAll\fP both icons and windows snap to other windows and other icons. \fISameType\fP lets windows snap only to windows, and icons snap only to icons. With \fIWindows\fP windows snap only to other windows. Similarly with \fIIcons\fP icons snap only to other icons. With \fINone\fP 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 \fIAll\fP. .sp The third and last optional argument may be set to one of the four following values: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} With \fIScreen\fP the already snapping icons or windows, which is controlled by the second argument, will snap now also to the screen edges. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} \fIScreenWindows\fP snaps only windows to the screen edges. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} \fIScreenIcons\fP snaps only icons to the screen edges. .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ . sp -1 . IP \(bu 2.3 .\} \fIScreenAll\fP snaps windows and icons to the screen edges. .RE .RE .sp The option \fISnapGrid\fP 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 \fIx\-grid\-size\fP and \fIy\-grid\-size\fP setting are both 1, which is effectively no grid all. .sp An interactive move with both \fISnapGrid\fP and \fISnapAttraction\fP 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 \fISnapGrid\fP and \fISnapAttraction\fP. 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. .sp The styles \fIEdgeMoveDelay\fP and \fIEdgeResizeDelay\fP 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 \fBEdgeScroll\fP 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 .sp .if n .RS 4 .nf .fam C EdgeScroll 0 0 .fam .fi .if n .RE .sp it is still possible to move or resize windows across the edge of the current screen. See also \fBEdgeThickness\fP. .sp The option \fIEdgeMoveResistance\fP makes it easier to place a window directly adjacent to a RandR screen\(cqs edge. It takes one or two parameters. The first parameter tells how many pixels over an outside edge of the screen a window\(cqs 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 \fIEdgeMoveResistance\fP can be used without any parameters. .sp The option \fIInitialMapCommand\fP allows for any valid fvwm command or function to run when the window is initially mapped by fvwm. Example: .sp .if n .RS 4 .nf .fam C Style MyWindow StartsOnPage 0 0, InitialMapCommand Iconify .fam .fi .if n .RE .sp This would hence place the window called \fIMyWindow\fP on page 0 0 for the current desk, and immediately run the \fBIconify\fP command on that window. .sp Note that should \fIInitialMapCommand\fP 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 \fBNop\fP can be used on those windows, as in the following example: .sp .if n .RS 4 .nf .fam C Style * InitialMapCommand Iconify Style XTeddy InitialMapCommand Nop .fam .fi .if n .RE .sp \fBWindow Manager placement\fP .RS 4 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 \fITileCascadePlacement\fP. .sp \fIPositionPlacement\fP [\fICenter\fP|\fIUnderMouse\fP|\fImove\-arguments\fP] When used without an argument, new windows are placed in the top left corner of the display. With the argument \fICenter\fP, all new window appear at the center of the screen, and with \fIUnderMouse\fP, 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 \fImove\-arguments\fP are given, they are interpreted exactly as the \fBMove\fP command does (with the exception that references to the current window position do not work as the window has not been placed yet). .sp \fICascadePlacement\fP automatically place new windows in a cascading fashion. .sp \fITileCascadePlacement\fP 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 \fICascadePlacement\fP is used as a fall\-back method. .sp \fITileManualPlacement\fP This is the same as \fITileCascadePlacement\fP, but uses \fIManualPlacement\fP as the fall\-back method. .sp \fIMinOverlapPlacement\fP 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 \fIMinOverlapPlacementPenalties\fP style. .sp \fIMinOverlapPercentPlacement\fP is similar to \fIMinOverlapPlacement\fP 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 \fIMinOverlapPlacementPenalties\fP and \fIMinOverlapPercentPlacementPenalties\fP styles. .sp \fIMinOverlapPlacementPenalties\fP takes at most 6 positive or null decimal arguments: .sp .if n .RS 4 .nf .fam C normal ontop icon sticky below strut .fam .fi .if n .RE .sp if trailing arguments are missing the default is used which is: .sp .if n .RS 4 .nf .fam C 1 5 10 1 0.05 50 .fam .fi .if n .RE .sp To reset this style to the default values, prefix it with a \*(Aq!\*(Aq. This style configures the \fIMinOverlapPlacement\fP and \fIMinOverlapPercentPlacement\fP placement policy. The \fInormal\fP factor affects normal windows, the \fIontop\fP factor affects windows with a greater layer than the window being placed, the \fIicon\fP factor affects icons, the \fIsticky\fP factor affects sticky windows, the \fIbelow\fP factor affects windows with a smaller layer than the window being placed, the \fIstrut\fP factor affects the complement of the EWMH working area if the window being placed has the \fIEWMHPlacementUseWorkingArea\fP style and windows with an EWMH strut hint (i.e., a "please do not cover me" hint) if the window being placed has the \fIEWMHPlacementUseDynamicWorkingArea\fP 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 \fIMinOverlapPlacement\fP and \fIMinOverlapPercentPlacement\fP 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 \fIEWMHPlacementUseWorkingArea\fP style the \fIstrut\fP factor affects the placed window. .sp \fIMinOverlapPercentPlacementPenalties\fP takes at most 4 positive or null integer arguments: .sp .if n .RS 4 .nf .fam C cover_100 cover_95 cover_85 cover_75 .fam .fi .if n .RE .sp if trailing arguments are missing the defaults are used which are: .sp .if n .RS 4 .nf .fam C 12 6 4 1 .fam .fi .if n .RE .sp To reset this style to the default values, prefix it with a \*(Aq!\*(Aq. This style affects the \fIMinOverlapPercentPlacement\fP placement policy and is similar to the \fIMinOverlapPlacementPenalties\fP style. The \fIcover_xx\fP factor is used when the window being placed covers at least \fIxx\fP percent of the window. This factor is added to the factor determined by the \fIMinOverlapPlacementPenalties\fP style. .sp \fIManualPlacement\fP (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 \fIEscape\fP 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 \fIShift\fP and mouse button 1 in case Mwm emulation has been enabled with the \fBEmulate\fP command), the user is asked to resize the window too. .sp It is possible to define buttons usable to place windows with the \fBMove\fP command and the special context \*(AqP\*(Aq for placement (see \fBMove\fP command). However, you can\(cqt redefine the way to also resize the window other than the way it is affected by the \fBEmulate\fP command. The button used for placing the window can be checked with the \fIPlacedByButton\fP condition (see \fBCurrent\fP command). .sp Example: .sp .if n .RS 4 .nf .fam C Style * ManualPlacement *FvwmEvent: PassID *FvwmEvent: add_window GrowDownFunc AddToFunc StartFunction + I FvwmEvent AddToFunc GrowDownFunc + I windowid $0 (PlacedByButton 3) \(rs Resize bottomright keep \-0p .fam .fi .if n .RE .sp 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. .sp \fIOld placement styles\fP 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: .sp .if n .RS 4 .nf .fam C Style * DumbPlacement, RandomPlacement \-\-> Style * CascadePlacement Style * DumbPlacement, ActivePlacement \-\-> Style * ManualPlacement Style * SmartPlacement, \(rs RandomPlacement, CleverPlacementOff \-\-> Style * TileCascadePlacement Style * SmartPlacement, \(rs ActivePlacement, CleverPlacementOff \-\-> Style * TileManualPlacement Style * SmartPlacement, CleverPlacement \-\-> Style * MinOverlapPlacement Style * SmartPlacement, \(rs ActivePlacement, CleverPlacement \-\-> Style * MinOverlapPercentPlacement Style * ActivePlacementsHonorsStartsOnPage \-\-> Style * ManualPlacementsHonorsStartsOnPage Style * ActivePlacementsHonorsStartsOnPageOff \-\-> Style * ManualPlacementsHonorsStartsOnPageOff .fam .fi .if n .RE .RE .sp \fBPlacement policy options and window stacking\fP .RS 4 \fI!UsePPosition\fP 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\(cqs a real headache. Many programs set PPosition to something obnoxious like 0,0 (upper left corner). Note: \fI!UsePPosition\fP is equivalent to the deprecated option \fI!UsePPosition\fP .sp \fI!UseUSPosition\fP works like \fI!UsePPosition\fP but applies suppresses using the user specified position indicated by the program (USPosition hint). It is generally a bad thing to override the user\(cqs choice, but some applications misuse the USPosition hint to force their windows to a certain spot on the screen without the user\(cqs consent. Note: \fI!UseUSPosition\fP is equivalent to the deprecated option \fI!USPosition\fP .sp \fINoUseTransientPPosition\fP and \fIUseTransientPPosition\fP work like \fI!UsePPosition\fP and \fIUsePPosition\fP but apply only to transient windows. Note: \fI!UseTransientPPosition\fP is equivalent to the deprecated option \fI!TransientPPosition\fP .sp \fINoUseIconPosition\fP instructs fvwm to ignore the program specified icon position (IconPosition hint) when iconifying the window. Note: \fI!UseIconPosition\fP is equivalent to the deprecated option \fI!IconPosition\fP .sp \fIStartsOnDesk\fP 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 \*(Aq*Desk: 1\*(Aq"). .sp \fIStartsOnPage\fP 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, \fIStartsOnPage\fP functions exactly like \fIStartsOnDesk\fP. For those standard Xt programs which understand this usage, the starting desk/page can also be specified via a resource (e.g., "\-xrm \*(Aq*page: 1 0 2\*(Aq"). \fIStartsOnPage\fP in conjunction with \fISkipMapping\fP 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. .sp \fIStartsOnScreen\fP 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. .sp \fIStartsOnPageIncludesTransients\fP causes the \fIStartsOnPage\fP 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. .sp \fIManualPlacementIgnoresStartsOnPage\fP suppresses \fIStartsOnPage\fP or \fIStartsOnDesk\fP placement in the event that both \fIManualPlacement\fP and \fISkipMapping\fP 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. \fIManualPlacementHonorsStartsOnPage\fP allows this to happen anyway. The option has no effect if \fISkipMapping\fP is not in effect, because fvwm switches to the proper desk/page to perform interactive placement. The default is \fIManualPlacementIgnoresStartsOnPage\fP; \fIManualPlacementHonorsStartsOnPage\fP matches the way the old \fIStartsOnDesk\fP style used to handle the situation. .sp \fICaptureHonorsStartsOnPage\fP causes the initial capture (of an already existing window) at startup to place the window according to the \fIStartsOnPage\fP and \fIStartsOnScreen\fP desk, page and screen specification. \fICaptureIgnoresStartsOnPage\fP causes fvwm to ignore these settings (including \fIStartsOnDesk\fP) on initial capture. The default is \fICaptureIgnoresStartsOnPage\fP. .sp \fIRecaptureHonorsStartsOnPage\fP causes a window to be placed according to, or revert to, the \fIStartsOnPage\fP and \fIStartsOnScreen\fP desk, page and screen specification on \fBRestart\fP. \fIRecaptureIgnoresStartsOnPage\fP causes fvwm to respect the current window position on \fBRestart\fP. The default is \fIRecaptureIgnoresStartsOnPage\fP. .sp \fILayer\fP 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. .sp \fIStaysOnTop\fP puts the window in the top layer. This layer can be changed by the command \fBDefaultLayers\fP; the default is 6. .sp \fIStaysPut\fP puts the window in the put layer. This layer can be changed by the command \fBDefaultLayers\fP; the default is 4. .sp \fIStaysOnBottom\fP puts the window in the bottom layer. This layer can be changed by the command \fBDefaultLayers\fP; the default is 2. .sp \fIStartsLowered\fP instructs fvwm to put the window initially at the bottom of its layer rather than the default \fIStartsRaised\fP. .sp \fIStartShaded\fP tells fvwm to shade the window. An optional direction argument may be given, which can be one of "\fINorth\fP", "\fISouth\fP", "\fIWest\fP", "\fIEast\fP", "\fINorthWest\fP", "\fINorthEast\fP", "\fISouthWest\fP", "\fISouthEast\fP" or if no direction is given, the default is to shade north. .sp \fISkipMapping\fP tells fvwm not to switch to the desk the window is on when it gets mapped initially (useful with \fIStartsOnDesk\fP or \fIStartsOnPage\fP). .sp \fIKeepWindowGroupsOnDesk\fP 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 \fIScatterWindowGroups\fP. The window group hint is ignored when placing windows in this case. .RE .sp \fBTransient windows\fP .RS 4 \fIDecorateTransient\fP 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. \fINakedTransient\fP (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 (\*(AqS\*(Aq and ´W\*(Aq contexts in bindings, see \fBMouse\fP and \fIKey\fP commands). .sp A window with the \fIRaiseTransient\fP style that has transient windows raises all its transients when it is raised. The \fIDontRaiseTransient\fP style disables this behavior. All windows are then treated as if they had no transients. .sp A window with the \fILowerTransient\fP style that has transient windows lowers all its transients when it is lowered. The \fIDontLowerTransient\fP style disables this behavior. All windows are then treated as if they had no transients. .sp The \fIStackTransientParent\fP style augments \fIRaiseTransient\fP and \fILowerTransient\fP styles. Raising a window with \fIStackTransientParent\fP style transfers the raise action to the main window if the window being raised is a transient and its main window has \fIRaiseTransient\fP 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 \fILowerTransient\fP style. \fIDontStackTransientParent\fP turns this behavior off. \fI(Dont)StackTransientParent\fP has no effect if \fIRaiseTransient\fP and \fILowerTransient\fP are not used. .sp A reasonable emulation of Motif raise/lower on transients is possible like this .sp .if n .RS 4 .nf .fam C Style * RaiseTransient Style * LowerTransient Style * StackTransientParent .fam .fi .if n .RE .RE .sp \fBExtended Window Manager Hints styles\fP .RS 4 To understand the used terminology in this sub section, please read the \fBExtended Window Manager Hints\fP section. .sp \fIEWMHDonateIcon\fP 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). \fIEWMHDonateMiniIcon\fP 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. \fIEWMHDontDonateIcon\fP and \fIEWMHDontDonateMiniIcon\fP restore the defaults which are to not set any ewmh (mini) icons hints. .sp 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. \fIEWMHMiniIconOverride\fP instructs fvwm to ignore ewmh icons and to use the mini icon provided by the \fIMiniIcon\fP style. \fIEWMHNoMiniIconOverride\fP restores the default. .sp \fIEWMHUseStackingOrderHints\fP causes fvwm to use EWMH hints and respect EWMH hints which change the window layer. \fIEWMHIgnoreStackingOrderHints\fP causes fvwm to ignore EWMH layer hints. .sp 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. \fIEWMHIgnoreStrutHints\fP causes fvwm to ignore such hints, as \fIEWMHUseStrutHints\fP, causes fvwm to use it which is the default. .sp \fIEWMHIgnoreStateHints\fP causes fvwm to ignore initial EWMH state hints when a new window is mapped. The default \fIEWMHUseStateHints\fP causes fvwm to accept such hints. .sp \fIEWMHIgnoreWindowType\fP causes fvwm to ignore EWMH window type specification. The default \fI!EWMHIgnoreWindowType\fP causes fvwm to style windows of specified types as such. .sp \fIEWMHMaximizeIgnoreWorkingArea\fP causes fvwm to ignore the EWMH working area when it executes a \fBMaximize\fP command. With \fIEWMHMaximizeUseWorkingArea\fP the EWMH working area is used as with \fIEWMHMaximizeUseDynamicWorkingArea\fP the EWMH dynamic working area is used (the default). .sp \fIEWMHPlacementIgnoreWorkingArea\fP causes fvwm to ignore the EWMH working area when it places (or places again) a window. With \fIEWMHPlacementUseWorkingArea\fP the EWMH working area is taken in account as with \fIEWMHPlacementUseDynamicWorkingArea\fP the EWMH dynamic working area is taken in account (the default). Note that with the \fIMinOverlapPlacement\fP and \fIMinOverlapPercentPlacement\fP placement policy, the way the EWMH (dynamic) working area is taken in account is configurable with the \fIMinOverlapPlacementPenalties\fP style. .RE .sp \fBMiscellaneous\fP .RS 4 The \fIBackingStore\fP, \fIBackingStoreOff\fP and \fIBackingStoreWindowDefault\fP determine if the X server uses backing store for the window or not. \fIBackingStore\fP 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 \fISaveUnder\fP below). \fIBackingStoreOff\fP 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\(cqs choice, use the \fIBackingStoreWindowDefault\fP style. .sp Note: This style is useless if the X server does not allow backing store. .sp \fISaveUnder\fP 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. \fISaveUnder\fP 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 \fISaveUnderOff\fP style. This is the default. See also \fIBackingStore\fP above. .sp Note: This style is useless if the X server does not allow save under. .sp \fIParentalRelativity\fP enables clients that use a background pixmap of type \fIParentRelative\fP to achieve transparency. Fvwm modules that support transparent colorsets require this setting. \fIOpacity\fP is the default and should be used for all non\-transparent clients for better performance. .sp \fIMwmDecor\fP makes fvwm attempt to recognize and respect the mwm decoration hints that applications occasionally use. To switch this style off, use the \fINoDecorHint\fP style. .sp \fIMwmFunctions\fP makes fvwm attempt to recognize and respect the mwm prohibited operations hints that applications occasionally use. \fIHintOverride\fP makes fvwm shade out operations that mwm would prohibit, but it lets you perform the operation anyway. \fINoFuncHint\fP allows turns off the mwm hints completely. .sp \fIOLDecor\fP 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 \fINoOLDecor\fP. .sp \fIUseDecor\fP 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. .sp \fIUseDecor\fP accepts one argument: the name of a decor created with \fBAddToDecor\fP. 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 \fBAddToDecor\fP, the changes are visible for all windows which are assigned to it. The decor for a window can be reassigned with \fBChangeDecor\fP. .sp \fIUseStyle\fP 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. .sp \fIUseStyle\fP 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: .sp .if n .RS 4 .nf .fam C Style rxvt UseStyle XTerm .fam .fi .if n .RE .sp 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 \fIUseStyle\fP line again. .sp \fIUnmanaged\fP Windows with the \fIUnmanaged\fP style option are ignored by fvwm. They are not decorated, can not be moved or resized, etc. You probably want to use \fBBugopts RaiseOverUnmanaged\fP too. This option can be turned off with the \fI!Unmanaged\fP style. .sp \fIState\fP 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 \fBNext\fP with the \fIState\fP condition and manipulated with the \fBState\fP command. .sp .if n .RS 4 .nf .fam C # turn on state 11 for xterms ... Style xterm State 11 # ... but not for rxvts. Style rxvt !State 11 .fam .fi .if n .RE .sp Windows with the \fIWindowListSkip\fP styles do not appear in the menu that is created with the \fBWindowList\fP command or the lists shown in modules like \fBFvwmIconMan\fP. 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 \fIWindowListHit\fP. .sp The styles \fICirculateSkip\fP and \fICirculateHit\fP control whether the window is considered by conditional commands, for example \fBNext\fP, \fIPrev\fP or \fIAll\fP. Windows with \fICirculateSkip\fP, are never selected by conditional commands. However, the styles can be overridden explicitly in the condition with the \fICirculateHit\fP, \fICirculateHitIcon\fP or \fICirculateHitShaded\fP conditions, and some conditional commands, e.g. \fBCurrent\fP and \fIAll\fP, do this by default. The styles \fICirculateSkipIcon\fP, \fICirculateHitIcon\fP, \fICirculateSkipShaded\fP and \fICirculateHitShaded\fP work like \fICirculateSkip\fP and \fICirculateHit\fP 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 .sp .if n .RS 4 .nf .fam C Style * CirculateSkipIcon, CirculateSkipShaded .fam .fi .if n .RE .sp 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. .RE .sp \fBExamples\fP .RS 4 .RE .sp .if n .RS 4 .nf .fam C # Change default fvwm behavior to no title\- # bars on windows! Also define a default icon. Style * !Title, \(rs Icon unknown1.xpm, \(rs BorderWidth 4, \(rs HandleWidth 5 # now, window specific changes: Style Fvwm* !Handles, Sticky, \(rs WindowListSkip, \(rs BorderWidth 0 Style FvwmPager StaysOnTop, BorderWidth 0 Style *lock !Handles, Sticky, \(rs StaysOnTop, WindowListSkip Style xbiff Sticky, WindowListSkip Style FvwmButtons !Handles, Sticky, \(rs 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, \(rs StartsOnDesk 2 Style xman Icon xman.xpm Style matlab Icon math4.xpm, \(rs 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, \(rs StartsOnPage 1 1 1 .fam .fi .if n .RE .sp Note that all properties for a window are or\(cqed together. In the above example "FvwmPager" gets the property \fIStaysOnTop\fP via an exact window name match but also gets \fI!Handles\fP, \fISticky\fP and \fIWindowListSkip\fP by a match to "Fvwm*". It gets \fI!Title\fP by virtue of a match to "*". If conflicting styles are specified for a window, then the last style specified is used. .sp \fBWindowStyle\fP \fIoptions\fP .RS 4 sets attributes (styles) on the selected window. The \fIoptions\fP are exactly the same as for the \fBStyle\fP command. .RE .SH "WINDOW STYLES" .sp \fBAddButtonStyle\fP button [\fIstate\fP] [\fIstyle\fP] [\-\- [!]\fIflag\fP ...] .RS 4 Adds a button style to \fIbutton\fP. \fIbutton\fP can be a button number, or one of "\fIAll\fP", "\fILeft\fP" or "\fIRight\fP". \fIstate\fP can be "\fIActiveUp\fP", "\fIActiveDown\fP", "\fIInactiveUp\fP" or "\fIInactiveDown\fP", or "\fIActive\fP" (the same as both "ActiveUp" and "ActiveDown") or "\fIInactive\fP" (the same as both "InactiveUp" and "InactiveDown") or any of these 6 with "\fIToggled\fP" 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 \fIMwmDecor...\fP button style set. Additionally, the following shortcuts may be used: "\fIAllNormal\fP", "\fIAllToggled\fP", "\fIAllActive\fP", "\fIAllInactive\fP", "\fIAllUp\fP", "\fIAllDown\fP". They are actually different masks for 4 individual states from 8 total. These are supported too: "\fIAllActiveUp\fP", "\fIAllActiveDown\fP", "\fIAllInactiveUp\fP", "\fIAllInactiveDown\fP". .sp If \fIstate\fP is omitted, then the style is added to every state. If the \fIstyle\fP and \fIflags\fP are enclosed in parentheses, then multiple \fIstate\fP definitions can be placed on a single line. \fIFlags\fP for additional button styles cannot be changed after definition. .sp Buttons are drawn in the order of definition, beginning with the most recent button style, followed by those added with \fBAddButtonStyle\fP. To clear the button style stack, change style flags, or for descriptions of available styles and flags, see the \fBButtonStyle\fP command. .sp Examples: .sp .if n .RS 4 .nf .fam C **ButtonStyle** 1 Pixmap led.xpm \-\- Top Left **ButtonStyle** 1 ActiveDown HGradient 8 grey black **ButtonStyle All** \-\- UseTitleStyle AddButtonStyle 1 \(rs ActiveUp (Pixmap a.xpm) \(rs ActiveDown (Pixmap b.xpm \-\- Top) AddButtonStyle 1 Vector 4 50x30@1 70x70@0 30x70@0 50x30@1 .fam .fi .if n .RE .sp 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 \fIUseTitleStyle\fP flag is set for all buttons, which causes fvwm to draw any styles set with \fBTitleStyle\fP before drawing the buttons. Finally, \fBAddButtonStyle\fP is used to place additional pixmaps for both "ActiveUp" and "ActiveDown" states and a vector button style is drawn on top of all states. .RE .sp \fBAddTitleStyle\fP [\fIstate\fP] [\fIstyle\fP] [\-\- [!]\fIflag\fP ...] .RS 4 Adds a title style to the title\-bar. \fIstate\fP can be "\fIActiveUp\fP", "\fIActiveDown\fP", "\fIInactiveUp\fP" or "\fIInactiveDown\fP", or "\fIActive\fP" (the same as both "ActiveUp" and "ActiveDown") or "\fIInactive\fP" (the same as both "InactiveUp" and "InactiveDown") or any of these 6 with "Toggled" prepended. If \fIstate\fP is omitted, then the style is added to every state. If the \fIstyle\fP and \fIflags\fP are enclosed in parentheses, then multiple \fIstate\fP definitions can be placed on a single line. This command is quite similar to the \fBAddButtonStyle\fP command. .sp Title\-bars are drawn in the order of definition, beginning with the most recent \fBTitleStyle\fP, followed by those added with \fBAddTitleStyle\fP. To clear the title style stack, change style flags, or for the descriptions of available styles and flags, see the \fBTitleStyle\fP and \fBButtonStyle\fP commands. .RE .sp \fBAddToDecor\fP \fIdecor\fP .RS 4 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. .sp Add or divert commands to the decor named \fIdecor\fP. A decor is a name given to the set of commands which affect button styles, title\-bar styles and border styles. If \fIdecor\fP does not exist it is created; otherwise the existing \fIdecor\fP is modified. Note: Earlier versions allowed to use the \fBHilightColor\fP, \fBHilightColorset\fP and \fBWindowFont\fP commands in decors. This is no longer possible. Please use the \fBStyle\fP command with the \fIHilight...\fP and \fIFont\fP options. .sp 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 \fIUseDecor\fP option of the \fBStyle\fP command. Modifying an existing decor affects all windows which are currently assigned to it. .sp \fBAddToDecor\fP is similar in usage to the \fBAddToMenu\fP and \fBAddToFunc\fP commands, except that menus and functions are replaced by \fBButtonStyle\fP, \fBAddButtonStyle\fP, \fBTitleStyle\fP, \fBAddTitleStyle\fP and \fBBorderStyle\fP commands. Decors created with \fBAddToDecor\fP can be manipulated with \fBChangeDecor\fP, \fBDestroyDecor\fP, \fBUpdateDecor\fP and the \fBStyle\fP option. .sp The following example creates a decor "FlatDecor" and style "FlatStyle". They are distinct entities: .sp .if n .RS 4 .nf .fam C AddToDecor FlatDecor + ButtonStyle All Active (\-\- flat) Inactive (\-\- flat) + TitleStyle \-\- flat + BorderStyle \-\- HiddenHandles NoInset Style FlatStyle \(rs UseDecor FlatDecor, HandleWidth 4, Colorset 0, HilightColorset 1 Style xterm UseStyle FlatStyle .fam .fi .if n .RE .sp An existing window\(cqs decor may be reassigned with \fBChangeDecor\fP. A decor can be destroyed with \fBDestroyDecor\fP. .sp .if n .RS 4 .nf .fam C DestroyDecor FlatDecor AddToDecor FlatDecor ... Style FlatStyle UseDecor FlatDecor .fam .fi .if n .RE .sp and now apply the style again: .sp .if n .RS 4 .nf .fam C Style xterm UseStyle FlatStyle .fam .fi .if n .RE .RE .sp \fBBorderStyle\fP \fIstate\fP [\fIstyle\fP] [\-\- [!]\fIflag\fP ...] .RS 4 Defines a border style for windows. \fIstate\fP can be either "\fIActive\fP" or "\fIInactive\fP". If \fIstate\fP is omitted, then the style is set for both states. If the \fIstyle\fP and \fIflags\fP are enclosed in parentheses, then multiple \fIstate\fP definitions can be specified per line. .sp \fIstyle\fP is a subset of the available button styles, and can only be \fITiledPixmap\fP (uniform pixmaps which match the bevel colors work best this way) or \fIColorset\fP. If a \*(Aq!\*(Aq is prefixed to any \fIflag\fP, the behavior is negated. If \fIstyle\fP is not specified, then one can change flags without resetting the style. .sp The \fIHiddenHandles\fP flag hides the corner handle dividing lines on windows with handles (this option has no effect for !\fIHandles\fP windows). By default, \fIHiddenHandles\fP is disabled. .sp The \fINoInset\fP flag supplements \fIHiddenHandles\fP. If given, the inner bevel around the window frame is not drawn. If \fIHiddenHandles\fP is not specified, the frame looks a little strange. .sp \fIRaised\fP causes a raised relief pattern to be drawn (default). \fISunk\fP causes a sunken relief pattern to be drawn. \fIFlat\fP inhibits the relief pattern from being drawn. .sp To decorate the active and inactive window borders with a textured pixmap, one might specify: .sp .if n .RS 4 .nf .fam C BorderStyle Active TiledPixmap marble.xpm BorderStyle Inactive TiledPixmap granite.xpm BorderStyle Active \-\- HiddenHandles NoInset .fam .fi .if n .RE .sp To clear the style for both states: .sp .if n .RS 4 .nf .fam C BorderStyle Simple .fam .fi .if n .RE .sp To clear for a single state: .sp .if n .RS 4 .nf .fam C BorderStyle Active Simple .fam .fi .if n .RE .sp To unset a flag for a given state: .sp .if n .RS 4 .nf .fam C BorderStyle Inactive \-\- !NoInset .fam .fi .if n .RE .sp title\-bar buttons can inherit the border style with the \fIUseBorderStyle\fP flag (see \fBButtonStyle\fP). .RE .sp \fBButtonState\fP [ActiveDown \fIbool\fP] [Inactive \fIbool\fP] [InactiveDown \fIbool\fP] .RS 4 The \fBButtonState\fP 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 \fBButtonStyle\fP and \fBTitleStyle\fP commands). The \fIbool\fP argument after the key word controls if the designated state is used ("True") or not ("False"). The \fIbool\fP 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. .sp If \fIActiveDown\fP argument is "False", no different button style for the pressed down buttons used, instead "ActiveUp" state is used even when button is pressed. .sp If \fIInactive\fP argument is "False", focused and unfocused windows look similarly, the corresponding "Active" states are always used. .sp If \fIInactiveDown\fP argument is "False" (only applied when \fIInactive\fP 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. .RE .sp \fBButtonStyle\fP button [\fIstate\fP] [\fIstyle\fP] [\-\- [!]\fIflag\fP ...] .RS 4 Sets the button style for a title\-bar button. \fIbutton\fP is the title\-bar button number between 0 and 9, or one of "\fIAll\fP", "\fILeft\fP", "\fIRight\fP", or "\fIReset\fP". Button numbering is described in the \fBMouse\fP command section. If the \fIstyle\fP and \fIflags\fP are enclosed in parentheses, then multiple \fIstate\fP definitions can be specified per line. .sp \fIstate\fP refers to which button state should be set. Button states are defined as follows: "\fIActiveUp\fP" and "\fIActiveDown\fP" refer to the un\-pressed and pressed states for buttons on active windows; while the "\fIInactiveUp\fP" and "\fIInactiveDown\fP" states denote buttons on inactive windows. The shortcut "\fIActive\fP" denotes both "ActiveUp" and "ActiveDown" states. Shortcut "\fIInactive\fP" 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 \fIMwmDecorMax\fP, \fIMwmDecorShade\fP, \fIMwmDecorStick\fP or \fIMwmDecorLayer\fP hints, if the window is maximized, shaded, sticky or placed on specific layer, respectively. .sp .if n .RS 4 .nf .fam C AddToDecor Default + ButtonStyle 6 \(rs Vector 4 50x25@1 85x75@0 15x75@0 50x25@1 + ButtonStyle 6 ToggledActiveUp \(rs Vector 4 50x75@0 85x25@1 15x25@0 50x75@0 + ButtonStyle 6 ToggledActiveDown \(rs Vector 4 50x75@0 85x25@1 15x25@0 50x75@0 + ButtonStyle 6 ToggledInactive \(rs Vector 4 50x75@0 85x25@1 15x25@0 50x75@0 + ButtonStyle 6 \- MwmDecorShade Mouse 0 6 N WindowShade .fam .fi .if n .RE .sp Additionally, the following shortcuts may be used: "\fIAllNormal\fP", "\fIAllToggled\fP", "\fIAllActive\fP", "\fIAllInactive\fP", "\fIAllUp\fP", "\fIAllDown\fP". They are actually different masks for 4 individual states from 8 total. These are supported too: "\fIAllActiveUp\fP", "\fIAllActiveDown\fP", "\fIAllInactiveUp\fP", "\fIAllInactiveDown\fP". .sp If \fIstate\fP is specified, that particular button state is set. If \fIstate\fP is omitted, every state is set. Specifying a style destroys the current style (use \fBAddButtonStyle\fP to avoid this). .sp If \fIstyle\fP 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): .sp .if n .RS 4 .nf .fam C ButtonStyle Left \-\- flat ButtonStyle All ActiveUp (\-\- flat) Inactive (\-\- flat) .fam .fi .if n .RE .sp 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\*(Aq individual styles are not changed). .sp If you want to reset all buttons to their defaults: .sp .if n .RS 4 .nf .fam C ButtonStyle Reset .fam .fi .if n .RE .sp To reset the "ActiveUp" button state of button 1 to the default: .sp .if n .RS 4 .nf .fam C ButtonStyle 1 ActiveUp Default .fam .fi .if n .RE .sp To reset all button states of button 1 to the default of button number 2: .sp .if n .RS 4 .nf .fam C ButtonStyle 1 Default 2 .fam .fi .if n .RE .sp For any button, multiple \fIstate\fP definitions can be given on one line by enclosing the \fIstyle\fP and \fIflags\fP in parentheses. If only one definition per line is given the parentheses can be omitted. .sp \fIflags\fP affect the specified \fIstate\fP. If a \*(Aq!\*(Aq is prefixed to any \fIflag\fP, its behavior is negated. The available state\-dependent flags for all styles are described here (the \fBButtonStyle\fP entry deals with state\-independent flags). .sp \fIRaised\fP causes a raised relief pattern to be drawn. .sp \fISunk\fP causes a sunken relief pattern to be drawn. .sp \fIFlat\fP inhibits the relief pattern from being drawn. .sp \fIUseTitleStyle\fP causes the given button state to render the current title style before rendering the buttons\*(Aq own styles. The \fIRaised\fP, \fIFlat\fP and \fISunk\fP \fBTitleStyle\fP flags are ignored since they are redundant in this context. .sp \fIUseBorderStyle\fP causes the button to inherit the decorated \fBBorderStyle\fP options. .sp \fIRaised\fP, \fISunk\fP and \fIFlat\fP are mutually exclusive, and can be specified for the initial \fBButtonStyle\fP only. \fIUseTitleStyle\fP and \fIUseBorderStyle\fP are also mutually exclusive (both can be off however). The default is \fIRaised\fP with both \fIUseBorderStyle and UseTitleStyle\fP left unset. .sp \fBImportant\fP .sp 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. \fISunk\fP for "ActiveDown" or "InactiveDown"). This behavior is consistent, but may seem confusing at first. The same applies to the "Toggled" states. .sp 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. \fIPixmap\fP). Fully destructive styles obscure the entire underlying image (i.e. \fISolid\fP or one of the \fIgradient\fP styles). Thus, if stacking styles with \fBAddButtonStyle\fP (or \fBAddTitleStyle\fP for title\-bars), use care in sequencing styles to minimize redraw. .sp The available styles are: .sp \fISimple\fP, \fIDefault\fP, \fISolid\fP, \fIColorset\fP, \fIVector\fP, \fI?Gradient\fP, \fIPixmap\fP, \fIAdjustedPixmap\fP, \fIShrunkPixmap\fP, \fIStretchedPixmap\fP, \fITiledPixmap\fP, \fIMiniIcon\fP .sp The description of these styles and their arguments follow: .sp The \fISimple\fP style does nothing. There are no arguments, and this style is an example of a non\-destructive button style. .sp The \fIDefault\fP style conditionally accepts one argument: a number which specifies the default button number to load. If the style command given is \fBButtonStyle\fP or \fBAddButtonStyle\fP, the argument is optional (if given, it overrides the current button). If a command other than \fBButtonStyle\fP or \fBAddButtonStyle\fP is used, the number must be specified. .sp The \fISolid\fP 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. .sp The \fIColorset\fP \fIcs\fP [\fIalpha\fP] style fills the button with the Colorset \fIcs\fP. The optional \fIalpha\fP 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 \fIalpha\fP argument. .sp The \fIVector\fP \fInum\fP \fIX\fP\fB[\fP\fIoffset\fP\fBp]x\fP\fIY\fP\fB[\fP\fIoffset\fP\fBp]@C ...\fP style draws a line pattern. Since this is a standard button style, the keyword \fIVector\fP is optional, \fInum\fP is a number of point specifications of the form \fIX\fP\fB[\fP\fIoffset\fP\fBp]x\fP\fIY\fP\fB[\fP\fIoffset\fP\fBp]@C ...\fP \fIX\fP and \fIY\fP are point coordinates inside the button, given in percents (from 0 to 100). An optional absolute \fIoffset\fP in pixels, can be given as "+p" for a positive or "\-p" for a negative offset. .sp \fIC\fP 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. .sp The specification is a little cumbersome: .sp .if n .RS 4 .nf .fam C ButtonStyle 2 Vector 4 50x30@1 70x70@0 30x70@0 50x30@1 .fam .fi .if n .RE .sp 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. .sp A more complex example of \fIVector\fP: .sp .if n .RS 4 .nf .fam C ButtonStyle 8 Vector 10 45x65@2 45x75@3 \(rs 20x75@3 20x50@3 35x50@3 35x65@1 35x25@1 \(rs 75x25@1 75x65@0 35x65@0 ButtonStyle 0 Vector 10 45x65@2 45x75@0 \(rs 20x75@0 20x50@1 45x50@1 45x65@0 75x65@3 \(rs 75x25@3 35x25@3 35x47@3 .fam .fi .if n .RE .sp The \fIGradient\fP styles denote color gradients. Fill in the question mark with any one of the defined gradient types. Please refer to the \fBColor Gradients\fP section for a description of the gradient syntax. The gradient styles are fully destructive. .sp The \fIPixmap\fP 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. .sp .if n .RS 4 .nf .fam C ButtonStyle 2 Pixmap my_pixmap.xpm ButtonStyle 4 \(rs ActiveUp (Pixmap activeup.xpm) \(rs ActiveDown (Pixmap activedown.xpm) \(rs Inactive (Pixmap inactiveup.xpm) ButtonStyle 4 \(rs InactiveDown Pixmap inactivedown.xpm .fam .fi .if n .RE .sp The pixmap specification can be given as an absolute or relative pathname (see \fBImagePath\fP). If the pixmap cannot be found, the button style reverts to \fISimple\fP. Flags specific to the \fIPixmap\fP style are \fILeft\fP, \fIRight\fP, \fITop\fP, and \fIBottom\fP. 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. .sp The \fIAdjustedPixmap\fP style is similar to the \fIPixmap\fP style. But the image is resized to exactly fit the button. .sp The \fIShrunkPixmap\fP style is similar to the \fIPixmap\fP style. But if the image is bigger than the button the image is resized to fit into the button. .sp The \fIStretchedPixmap\fP style is similar to the \fIPixmap\fP style. But if the image is smaller than the button the image is resized to cover the button. .sp The \fITiledPixmap\fP 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. .sp The \fIMiniIcon\fP style draws the window\(cqs miniature icon in the button, which is specified with the \fIMiniIcon\fP option of the \fBStyle\fP command. This button style accepts no arguments. Example: .sp .if n .RS 4 .nf .fam C Style * MiniIcon mini\-bx2.xpm Style xterm MiniIcon mini\-term.xpm Style Emacs MiniIcon mini\-doc.xpm ButtonStyle 1 MiniIcon .fam .fi .if n .RE .RE .sp \fBButtonStyle\fP \fIbutton\fP \- [!]\fIflag\fP ... .RS 4 Sets state\-independent flags for the specified \fIbutton\fP. State\-independent flags affect button behavior. Each \fIflag\fP is separated by a space. If a \*(Aq!\*(Aq is prefixed to the flag then the behavior is negated. The special flag \fIClear\fP clears any existing flags. .sp The following flags are usually used to tell fvwm which buttons should be affected by mwm function hints (see \fIMwmFunctions\fP option of the \fBStyle\fP command. This is not done automatically since you might have buttons bound to complex functions, for instance. .sp \fIMwmDecorMenu\fP should be assigned to title\-bar buttons which display a menu. The default assignment is the leftmost button. When a window with the \fIMwmFunctions\fP \fBStyle\fP option requests not to show this button, it is hidden. .sp \fIMwmDecorMin\fP 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 \fIMwmFunctions\fP \fBStyle\fP option requests not to show this button, it is hidden. .sp \fIMwmDecorMax\fP should be assigned to title\-bar buttons which maximize the window. The default assignment is the rightmost button. When a window with the \fIMwmFunctions\fP \fBStyle\fP option requests not to show this button, it is hidden. When the window is maximized, the vector pattern on the button looks pressed in. .sp \fIMwmDecorShade\fP should be assigned to title\-bar buttons which shade the window (see \fBWindowShade\fP command). When the window is shaded, the vector pattern on the button looks pressed in. .sp \fIMwmDecorStick\fP 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. .sp The flag \fIMwmDecorLayer\fP \fIlayer\fP should be assigned to title\-bar buttons which place the window in the layer numbered \fIlayer\fP. When the window is on that specific layer, the vector pattern on the button looks pressed in. .RE .sp \fBChangeDecor\fP \fIdecor\fP .RS 4 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. .sp Changes the decor of a window to \fIdecor\fP. \fIdecor\fP is "Default" or the name of a decor defined with \fBAddToDecor\fP. If \fIdecor\fP 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. \fBChangeDecor\fP only affects attributes which can be set using the \fBAddToDecor\fP command. .sp .if n .RS 4 .nf .fam C ChangeDecor CustomDecor1 .fam .fi .if n .RE .RE .sp \fBDestroyDecor\fP [recreate] \fIdecor\fP .RS 4 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. .sp Deletes the \fIdecor\fP defined with \fBAddToDecor\fP, so that subsequent references to it are no longer valid. Windows using this \fIdecor\fP revert to the "Default" decor. The optional parameter \fIrecreate\fP 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 \fIUseDecor\fP style is applied again unless the decor was destroyed with the \fIrecreate\fP option. The decor named "Default" cannot be destroyed. .sp .if n .RS 4 .nf .fam C DestroyDecor CustomDecor1 .fam .fi .if n .RE .RE .sp \fBTitleStyle\fP [\fIjustification\fP] [Height [\fInum\fP]] [MinHeight [\fInum\fP]] .RS 4 Sets attributes for the title\-bar. Justifications can be \fICentered\fP, \fIRightJustified\fP or \fILeftJustified\fP. \fIHeight\fP sets the title bar\(cqs height to an amount in pixels. \fIMinHeight\fP sets the minimal height in pixels of the title bar. Defaults are \fICentered\fP, the window\(cqs font height and no minimal height. To reset the font height to the default value, omit the \fInum\fP argument after the \fIHeight\fP keyword. The \fIMinHeight\fP height is reset by \fIHeight\fP or if given with no argument. Example: .sp .if n .RS 4 .nf .fam C TitleStyle LeftJustified Height 24 .fam .fi .if n .RE .RE .sp \fBTitleStyle\fP [\fIstate\fP] [\fIstyle\fP] [\-\- [!]\fIflag\fP ...] .RS 4 Sets the style for the title\-bar. See also \fBAddTitleStyle\fP and \fBButtonStyle\fP \fIstate\fP can be one of "\fIActiveUp\fP", "\fIActiveDown\fP", "\fIInactiveUp\fP", or "\fIInactiveDown\fP". Shortcuts like "\fIActive\fP" and "\fIInactive\fP" 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 \fBButtonStyle\fP \fIUseTitleStyle\fP. If \fIstate\fP is omitted, then the \fIstyle\fP is added to every state. If parentheses are placed around the \fIstyle\fP and \fIflags\fP, then multiple state definitions can be given per line. \fIstyle\fP can be omitted so that flags can be set while not destroying the current style. .sp If a \*(Aq!\*(Aq is prefixed to any \fIflag\fP, its behavior is negated. Valid flags for each state include \fIRaised\fP, \fIFlat\fP and \fISunk\fP (these are mutually exclusive). The default is \fIRaised\fP. See the note in \fBButtonStyle\fP regarding the "\fIActiveDown\fP" state. Examples: .sp .if n .RS 4 .nf .fam C TitleStyle ActiveUp HGradient 16 navy black TitleStyle \(rs ActiveDown (Solid red \-\- flat) \(rs Inactive (TiledPixmap wood.xpm) TitleStyle \(rs ActiveUp (\-\- Flat) \(rs ActiveDown (\-\- Raised) \(rs InactiveUp (\-\- Flat) \(rs InactiveDown (\-\- Sunk) .fam .fi .if n .RE .sp 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 \fIRaised\fP 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: .sp .if n .RS 4 .nf .fam C TitleStyle \-\- flat .fam .fi .if n .RE .sp For a flattened look: .sp .if n .RS 4 .nf .fam C TitleStyle \-\- flat ButtonStyle All Active (\-\- flat) Inactive (\-\- flat) .fam .fi .if n .RE .sp \fBTitleStyle\fP accepts all the \fBButtonStyle\fP styles and arguments: .sp \fISimple\fP, \fIDefault\fP, \fISolid\fP, \fIColorset\fP, \fIVector\fP, \fI?Gradient\fP, \fIPixmap\fP, \fIAdjustedPixmap\fP, \fIShrunkPixmap\fP, \fIStretchedPixmap\fP, \fITiledPixmap\fP, \fIMiniIcon\fP. .sp See the \fBButtonStyle\fP command for a description of all these styles and their arguments. .sp In addition to these styles \fBTitleStyle\fP accepts a powerful \fIMultiPixmap\fP 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 \fIsections\fP are: .sp \fIMain\fP .RS 4 The full titlebar .RE .sp \fILeftMain\fP .RS 4 Left of title text .RE .sp \fIRightMain\fP .RS 4 Right of title text .RE .sp \fIUnderText\fP .RS 4 Underneath title text .RE .sp \fILeftOfText\fP .RS 4 just to the left of the title text .RE .sp \fIRightOfText\fP .RS 4 just to the right of the title text .RE .sp \fILeftEnd\fP .RS 4 at the far left end of the titlebar (just after left buttons if any) .RE .sp \fIRightEnd\fP .RS 4 at the far right end of the titlebar (just before right buttons if any) .RE .sp \fIButtons\fP .RS 4 under buttons in case of \fIUseTitleStyle\fP .RE .sp \fILeftButtons\fP .RS 4 under left buttons in case of \fIUseTitleStyle\fP .RE .sp \fIRightButtons\fP .RS 4 under right buttons in case of \fIUseTitleStyle\fP .RE .RE .sp None of these are mandatory except for \fIMain\fP (or, if you do not define \fIMain\fP you must define both \fILeftMain\fP and \fIRightMain\fP). If no \fIButtons\fP pixmaps are defined and \fIUseTitleStyle\fP is specified for one or more buttons, \fIMain\fP, \fILeftMain\fP or \fIRightMain\fP are used as appropriate. .sp The syntax for this style type is: .sp .if n .RS 4 .nf .fam C MultiPixmap section style arg, ... .fam .fi .if n .RE .sp continuing for whatever you want to define. The \fIstyle\fP can be either \fITiledPixmap\fP, \fIAdjustedPixmap\fP, \fIColorset\fP or \fISolid\fP. See the \fBButtonStyle\fP command for the description of these styles. In the case of a transition section, \fILeftEnd\fP, \fILeftOfText\fP, \fIRightOfText\fP or \fIRightEnd\fP, \fIAdjustedPixmap\fP only resize the pixmap in the "y" direction. For the \fIColorset\fP and \fISolid\fP styles a width of the half of the title bar height is assumed for the transition sections. .sp An example: .sp .if n .RS 4 .nf .fam C MultiPixmap Main AdjustedPixmap foo.xpm, \(rs UnderText TiledPixmap bar.xpm, \(rs Buttons Colorset 2 .fam .fi .if n .RE .sp Note that the old syntax is still supported: if the style is omitted, \fITiledPixmap\fP is assumed and adding "(stretched)" between the section and the file name implies \fIAdjustedPixmap\fP. \fBUpdateDecor\fP [\fIdecor\fP]:: 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. .sp 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. .sp Updates window decorations. \fIdecor\fP is an optional argument which specifies the \fIdecor\fP to update. If given, only windows which are assigned to that particular \fIdecor\fP are updated. This command is useful, for instance, after a \fBButtonStyle\fP, \fBTitleStyle\fP or \fBBorderStyle\fP (possibly used in conjunction with \fBAddToDecor\fP). Specifying an invalid decor results in all windows being updated.