# FvwmPager(1)

## NAME

FvwmPager - The fvwm pager module

## SYNOPSIS

FvwmPager [ -transient ] [ alias ] [ first desk [ last desk ] ]

FvwmPager is spawned by fvwm, so no command line invocation will work.

FvwmPager displays a miniature view of the fvwm virtual desktop(s) showing all desk numbers between first desk and last desk. If last desk is omitted only the first desk is shown. If both desk numbers are omitted, the current desk is used instead. If you use an asterisk, *, in place of first desk the pager will always show the current desktop, even when you switch desks. If you iconify FvwmPager, its icon on the virtual desktop will be a functional version of the pager only showing the current desktop.

FvwmPager is launched via the Module FvwmPager command from fvwm’s config file, and can be launched from functions, menus, key bindings, and so on. If the pager is started with the -transient option, the next time a button is released the pager is closed. Note that this option only works if the window style of the pager window is Sticky (see the fvwm man page). You should use the StaysOnTop style too.

The following example shows how to launch two pagers from your config file when fvwm starts. The first is a pager which will show all desks from 0 to 3, and the second is a pager which only shows the current desk.

    AddToFunc StartFunction Module FvwmPager 0 3
    AddToFunc StartFunction Module FvwmPager *

FvwmPager is configured via an fvwm module configuration alias. If an alias is given, FvwmPager will use the alias for the configuration and name of the window. If no alias is given, the default "FvwmPager" alias is used. See the CONFIGURATION section below for a full list of configuration options.

## DESCRIPTION

FvwmPager displays a miniature view of the fvwm virtual desktop(s) showing the position of all windows and pages within each visible desktop. If DeskHilight is set, the location of each monitor within the desktop is also shown. The pager can be used as a reference to the location of windows and monitors in the virtual desktops.

The pager can show labels with the names of the virtual desktops and monitors. The labels can be shown individually or together. By default the desk labels are shown, to disable them use NoDeskLabels. To show the monitor labels, use the MonitorLabels option. The labels can be used as buttons to move the monitors to new desktops. See the LABELS configuration section for more details.

The mouse can be used to change the current page/desk, to drag windows to new locations, or send windows fvwm commands. The default behavior is mouse 1 (left button) will switch desk/page a monitor is currently viewing to the area clicked. Mouse 2 (middle) can be used to drag windows to new locations or focus them. And mouse 3 (right) can Scroll the view port to the location clicked.

The mouse behavior can be configured, which button does what, and allow sending custom commands to fvwm. See the MOUSE BEHAVIOUR configuration section below for a more detailed description of mouse behavior and how to customize it.

FvwmPager fully supports multiple monitors and fvwm’s DesktopConfiguration. The Monitor option can be used to show only the windows and virtual desktop area used by specific monitor. See MONITOR AND DESKTOP CONFIGURATION for details on ways to configure the pager to work with per-monitor or shared desktop configurations.

When iconified, FvwmPager’s icon on the desktop is a fully functional pager that only shows the current desk. This icon pager responds to all the same clicks as described above. This is useful by allowing full pager that shows multiple virtual desktops to be iconified to a smaller pager that only shows the current desk. Note that the FvwmPager icon must be visible via 'Style FvwmPager Icon', and not overridden, for this to work.

FvwmPager will compute its initial window size based on your monitor(s) configuration. By default it makes a pager 1/32 the size of your monitor(s) resolution (see DesktopScale) and matches either the global aspect ratio or a single monitor if Monitor is set. Both the size of the pager (see Geometry) and desktop layout (see Cols and Rows) can be configured.

Using the SendToModule fvwm command, some of FvwmPager’s configurations can be modified while running. This allows showing/hiding labels, changing which monitor is being tracked, and a few other things. See the SENDING COMMANDS.

## CONFIGURATION

FvwmPager is configured via a module configuration alias in fvwm’s configuration file. The default alias is "FvwmPager" and can be configured using lines of the form:

    *FvwmPager: Option parameters

When FvwmPager is launched with an optional alias, that alias will be used for the configuration instead. For example to start a pager that shows the current desk on a single monitor, use the following:

    DestroyModuleConfig FvwmPagerDP2:*
    *FvwmPagerDP2: Monitor DP-2
    *FvwmPagerDP2: Font None
    *FvwmPagerDP2: MiniIcons
    AddToFunc StartFunction Module FvwmPager FvwmPagerDP2 *

The full list of configuration options and their parameters are listed below.

## CONFIGURATION OPTIONS

The configuration options are split into two groups to help organize the large list of configuration options the pager has. Below you can find configuration options for the GEOMETRY, LABELS, HILIGHTING, WINDOW LOOKS, BALLOON WINDOWS, MOUSE BEHAVIOUR, MONITOR AND DESKTOP CONFIGURATION, DESK STYLES, and MISCELLANEOUS.

### GEOMETRY

Configures the size of the pager along with how the desktops are arranged in a grid when viewing more than one desktop.

*FvwmPager: Geometry geometry

  Completely or partially specifies the pager’s window size and location as a geometry string, 'WIDTHxHEIGHT+X+Y'. If both width and height are set, FvwmPager will use that size, and not respect the aspect ratio of the monitors. To maintain an undistorted aspect ratio, set one dimension to zero. For example 400x0 will make a 400 pixel wide window whose height matches the monitors aspect ratio.

  If X or Y are included in the geometry string, the pager will open at the specified position. The sign specifies which edge to measure from: +X from the left edge, -X from right edge, +Y from top edge, or -Y from bottom edge.

*FvwmPager: DesktopScale number

  If the Geometry is not specified, then a desktop reduction factor is used to calculate the pager’s size. The pager will scale a single page to be 1/number of the actual size. The final size of the pager window is then based off the number of pages and/or desks shown. For example, A number of 10 will make each page a tenth of the actual size. A default of 32 is used to size the pager.

*FvwmPager: Rows rows

  FvwmPager can show multiple virtual desktops at once. The desktops can be arranged in a horizontal line (one row, the default behavior), a vertical line (one column), or in a grid with multiple rows and columns. This configures the number of rows used.

*FvwmPager: Columns columns

  Tells FvwmPager how many columns of desks to use when laying out the grid of desktops.

*FvwmPager: IconGeometry geometry

  Specifies a size (optional) and location (optional) for the pager’s icon window. Since there is no easy way for FvwmPager to determine the height of the icon’s label, you will have to make an allowance for the icon label height when using negative y-coordinates in the icon location specification (used to specify a location relative to the bottom instead of the top of the screen).

### LABELS

FvwmPager can add labels to each virtual desktop shown. The labels can show the name of the desktops and/or the name of the monitors. Labels can be used as buttons to move monitors between virtual desktops. They can be positioned either above or below each desktop. If ShapeLabels is set, only the labels on the current desktop are shown.

*FvwmPager: Font font-name

  Specified a font to use to label the desktops. If font_name is "None" then no desktop or monitor labels will be displayed. Note, if MonitorLabels or DeskLabels is used after Font none, the labels will be shown with a default font.

*FvwmPager: LabelsBelow

  Causes the pager to draw desk labels below the corresponding desk.

*FvwmPager: LabelsAbove

  Causes the pager to draw desk labels above the corresponding desk. Useful for canceling the effect of the LabelsBelow option.

*FvwmPager: ShapeLabels

  Causes the pager to hide the labels of all but the current desk.

*FvwmPager: NoShapeLabels

  Causes the pager to show the labels of all visible desks. Useful for canceling the effect of the ShapeLabels option.

*FvwmPager: DeskLabels

  Tells FvwmPager to display a label for each desk. If LabelHilight is set, the active desk will be highlighted. This is the default state, but this is useful for undoing Font none or NoDeskLabels.

*FvwmPager: NoDeskLabels

  Tells FvwmPager to not display desk labels.

*FvwmPager: MonitorLabels

  Tells FvwmPager to display a row of monitor labels. If LabelHilight is set, the monitor label on the desktop the monitor is currently viewing will be highlighted using the hilight color. Clicking on a monitor label will move that monitor to the selected desktop. This option is goes well with 'DesktopConfiguration shared' to be able to control which monitor is moved to a selected desktop.

*FvwmPager: NoMonitorLabels

  Tells FvwmPager to not display monitor labels, the default state.

### HILIGHTING

FvwmPager will highlight the current location of each monitor in the virtual desktop. This can highlight both the area inside the desk, and the desk labels. Which labels are highlighted is a combination of the DesktopConfiguration and the below options.

*FvwmPager: DeskHilight

  Highlight the area shown by all active monitors with the current highlight color/pixmap. The default behavior.

*FvwmPager: NoDeskHilight

  Don’t highlight the active monitor location.

*FvwmPager: LabelHilight

  Highlight the label of the current monitor and/or desk. What is highlighted depends on a combination of what DesktopConfiguration is used and which labels are shown. This is the default state.

*FvwmPager: NoLabelHilight

  Don’t highlight the current labels. This is useful when using pixmaps or transparent colorsets, to remove the filled rectangle on the highlighted label.

### WINDOW LOOKS

The following options can be used to specify the general look of the mini windows. This includes labels, borders, mini icons, and how to deal with small windows. By default windows use the foreground (border and labels) and background of the colorset used in fvwm. See 'DESK STYLES' below for options to configure custom colors.

*FvwmPager: WindowFont font-name

  Specify a font to use to label the mini windows in the pager. If not specified, or set to "None", the window labels will be omitted. Window labels are often far bigger than the mini window has space for, due to how tiny the mini windows are and how long window names are. 'BALLOON WINDOWS' below can be configured to have a popup label that appears when the mouse hovers over the window.

  Note, for backwards compatibility the option SmallFont is an alias for this option.

*FvwmPager: WindowLabelFormat format

  This specifies a printf() like format for the labels in the mini window. Possible flags are: %t, %i, %c, and %r for the window’s title, icon title, class, or resource name, respectively. The default is "%i".

*FvwmPager: WindowBorderWidth n

  Specifies the width of the border drawn around the mini windows. This also affects the minimum size of the mini windows, which will be 2 * WindowBorderWidth + WindowMinSize. The default is 1.

*FvwmPager: Window3DBorders

  Specifies that the mini windows should have a 3D borders based on the mini window background. This option only works when windows are configured using colorsets. See both WindowColorset and FocusColorset under 'DESK STYLES' below.

*FvwmPager: MiniIcons

  Allow the pager to display a window’s mini icon in the pager, if it has one, instead of showing the window’s label. Note, when setting custom MiniIcons in fvwm, you may need to add the 'EWMHMiniIconOverride' style for applications that supply an icon.

*FvwmPager: WindowMinSize n

  Specifies the minimum size as n pixels of the mini windows. This does not include the width of the border, so the actual minimum size is 2 * WindowBorderWidth + WindowMinSize. The default is 3.

*FvwmPager: HideSmallWindows

  Tells FvwmPager to not show windows that are the minimum size. Useful for tiny pagers where small windows will appear out of place.

### BALLOON WINDOWS

Balloon windows provide popup labels for each window when the mouse hovers over it. The label, font, color, and position of these balloon windows can be configured below.

*FvwmPager: Balloons type

  Show a balloon describing the window when the pointer is moved into a window in the pager. The default format (the window’s icon name) can be changed using BalloonStringFormat. If type is "Pager" balloons are just shown for an un-iconified pager. If type is "Icon" balloons are just shown for an iconified pager. If type is "All" (or any unused non blank value) balloons are always shown. If type is "None" balloons are never shown (the default behavior).

*FvwmPager: BalloonFont font-name

  Specifies a font to use for the balloon text. Defaults to fixed.

*FvwmPager: BalloonStringFormat format

  The same as WindowLabelFormat, this specifies the string to display in the balloons. Possible flags are: %t, %i, %c, and %r for the window’s title, icon title, class, or resource name, respectively. The default is "%i".

*FvwmPager: BalloonBorderWidth number

  Sets the width of the balloon window’s border. Defaults to 1.

*FvwmPager: BalloonYOffset number

  The balloon window is positioned to be horizontally centered against the pager window it is describing. The vertical position may be set as an offset. Negative offsets of -n are placed n pixels above the pager window, positive offsets of +n are placed n pixels below. Offsets of -1 and 1 represent the balloon window close to the original window without a gap. Offsets of 0 are not permitted, as this would permit direct transit from pager window to balloon window, causing an event loop. Defaults to +3. The offset will change sign automatically, as needed, to keep the balloon on the screen.

### MOUSE BEHAVIOUR

The mouse can be used to change the current virtual desk/page, Scroll through the pages, move windows and more using the mouse. These actions can be configured using the following Mouse options. Each mouse button <N> can have a single action bound to it. Only the primary mouse buttons, 1 - 5 are supported. The default bindings are as follows:

    *FvwmPager: Mouse 1 ChangePage
    *FvwmPager: Mouse 2 MoveWindow FlipFocus NoWarp
    *FvwmPager: Mouse 3 Scroll
    *FvwmPager: Mouse 4 Nop
    *FvwmPager: Mouse 5 Nop

The mouse bindings and additional behaviors can be configured using the following options.

*FvwmPager: Mouse <N> ChangePage

  Change the virtual page and/or desktop currently visible, base on the location clicked. The exact behavior depends on which DesktopConfiguration is used what mode the pager is in. In general the pager will only change desk/page if it is absolutely clear which monitor to move. The behavior for each DesktopConfiguration is:

  - global: Clicks on labels or pages will move all monitors to the desktop and/or page clicked.

  - per-monitor: Clicks on monitor labels will move that monitor to the corresponding desktop. Clicks on desk labels will do nothing. Clicks on a page will move the monitor corresponding to the area clicked to that page.

  - shared: The only way to move monitors between desktops is to click on the monitor labels. Clicks on pages will move the current monitor (if any) on that desktop to the corresponding page.

*FvwmPager: Mouse <N> MoveWindow [command]

  Move a window by clicking and dragging it to a new location. If the window is moved out of the pager, the window is moved to the pointer and can continued to be move on the current monitor. The distance a window must be moved to be registered is set by the MoveThreshold option, with a default of 3 pixels. Windows moved less than the MoveThreshold, will have the optional fvwm command (if set) sent to them. The default is command "FlipFocus NoWarp". Setting the SendCmdAfterMove option will also send the command after the window is placed in its new location. Note, by default the EWMH working area is honored, and windows placement will be adjusted to fit inside the working area of the monitor they are placed on. To turn this off use the IgnoreWorkingArea option.

*FvwmPager: Mouse <N> WindowCmd command

  Send the fvwm command to the window clicked. This can be used to focus, maximize, iconify, windows from the pager.

*FvwmPager: Mouse <N> Scroll

  Clicking on a page will center the view port at that point using the fvwm Scroll command. Holding the button down and dragging will cause the view port Scroll to follow the mouse. This works best with global DesktopConfiguration.

*FvwmPager: Mouse <N> Cmd command

  Clicking anywhere on the pager will send the command to fvwm. This can be used to make the mouse wheel change virtual desktops on a pager that is only viewing the active desktop.

*FvwmPager: Mouse <N> Nop

  This does nothing. Useful for disabling the default bindings.

*FvwmPager: MoveThreshold pixels

  Defines the distance the pointer has to be moved before a window being dragged with button 2 is actually moved. The default value is three pixels. If the pointer moved less that this amount the window snaps back to its original position when the button is released. If pixels is less than zero the default value is used. The value set with the MoveThreshold command in fvwm is inherited by FvwmPager but can be overridden with this option.

*FvwmPager: SloppyFocus

  If the SloppyFocus option is used, you do not need to click into the mini window in the pager to give the real window the focus. Simply putting the pointer over the window inside the pager is enough.

  Note: This option interferes slightly with the MouseFocus and SloppyFocus styles of fvwm. Sometimes, if you click into the pager window to change pages or desks and then move the pointer to a place on the screen where a window of the new page will appear, this new window does not get the input focus. This may happen if you drag the pointer over one of the mini windows in the pager. There is nothing that can be done about this - except not using SloppyFocus in the pager.

*FvwmPager: SendCmdAfterMove

  After moving a window using the pager, send the configured command, "FlipFocus NoWarp" by default, to the window. By default the command is only sent on a click, not a move.

*FvwmPager: IgnoreWorkingArea

  After moving a window, ignore the working area when placing the window. This makes it so the window’s position will no longer be adjusted to fit inside the working area of the monitor it is placed in.

### MONITOR AND DESKTOP CONFIGURATION

FvwmPager supports multiple monitors and the per-monitor and shared DesktopConfiguration. FvwmPager can further be configured to show only a single monitor or to interact with the monitors in specific ways.

*FvwmPager: Monitor RandRName

  Tells FvwmPager to display windows only on RandRName monitor. This is especially meaningful when the DesktopConfiguration command is set to shared. If RandRName is none, the monitor is unset, and the pager will show windows on all monitors.

*FvwmPager: CurrentMonitor RandRName

  When viewing only the current desktop, either via the icon pager or running FvwmPager *, the current desktop is updated each time any monitor changes desktops. This may not be preferable if using per-monitor or shared mode. This option sets the current monitor to RandRName, and the current desk is only updated when that monitor changes desks, ignoring changes from any other monitor. If RandRName is none, the current_monitor is unset, reverting to default behavior.

*FvwmPager: CurrentDeskPerMonitor

  When viewing only the current desktop, either via the icon pager or running FvwmPager *, this option makes the pager show the windows on the desktop each monitor is viewing independently. For example, the area of the pager for monitor 0 would show its windows on desktop 2, while the area of the pager for monitor 1 would show its windows on desktop 1, the desktop it is currently viewing. When used with DeskLabels, there will be one desk label per monitor stating the desk each monitor is viewing, and use MonitorLabels to get the monitor names associated with each desk.

*FvwmPager: CurrentDeskGlobal

  This option cancels setting CurrentDeskPerMonitor, reverting to the default.

*FvwmPager: IsShared

  Setting this option tells fvwm to use shared mode, which is designed to work best with DesktopConfiguration shared. In this mode, each desktop shows only the windows and area occupied by the last monitor to view that desktop. Pair this with MonitorLabels to change the desktop of each monitor by clicking on their label.

*FvwmPager: IsNotShared

  This setting turns off the previous, IsShared, setting.

### DESK STYLES

These configuration options can be used to configure the look of each desk the pager shows individually. The options all take one or two parameters, The first optional parameter is the desk to configure and the second is the value to set. If the desk is not provided, or a "*" is used, the setting applies to all desktops.

Colorsets are preferred over color names. Once a colorset is configured, the related color settings will have no affect. When using colorsets, the pager will update if the colorset is changed in fvwm. Color names are still supported, and any valid 'X11/rgb.txt' name is accepted. For best results, don’t mix colorsets and color names.

Note setting an option for all desks will override any previous options set, so make sure to set the global options for all desks first, and the individual options for single desks second. For example, to make all desks use colorsets 10 and 11 except desk 2 which uses colorsets 12 and 13, use the following:

    *FvwmPager: Colorset 10
    *FvwmPager: HilightColorset 11
    *FvwmPager: Colorset 2 12
    *FvwmPager: HilightColorset 2 13

#### COLORSETS

*FvwmPager: Colorset [desk] colorset

  Sets the colorset number used by each desktop. This colorset is used for the foreground text in the DeskLabels and MonitorLabels, and the background color for each desktop. The colorset can also set a pixmap to use for the background, or be transparent. This colorset overrides and sets both Fore and Back below.

*FvwmPager: HilightColorset [desk] colorset

  Sets the colorset for the highlighted monitor location and labels. The foreground color is used for the text in highlighted labels, and the background sets the color of both the labels and active monitor locations. In addition pixmaps or transparency can be used for the background instead. This colorset overrides and sets both HiFore and HiBack below.

*FvwmPager: WindowColorset [desk] colorset

  Sets the colorset the mini windows use. The foreground is used for the border and text labels, while the background color is used for the window itself. If Windows3DBorders is specified, the hilight and shadow colors from the colorset are used to for the 3D beveled borders. Supports pixmaps and transparent colorsets too.

*FvwmPager: FocusColorset [desk] colorset

  Sets the colorset for the focused mini window. This is the same as WindowColorset, except it applies to the focus window.

*FvwmPager: WindowColorsets WindowColorset FocusColorset

  This option is for backwards compatibility, and sets both the window WindowColorset and the FocusColorset for all desktops. Use the individual commands to set per desktop colorsets.

*FvwmPager: BalloonColorset [desk] colorset

  Sets the colorset used for both the foreground, background, and borders of the balloon window.

#### COLORS

*FvwmPager: Fore [desk] color

  Sets the foreground color, which is used to write desktop labels and to draw the page-grid lines.

*FvwmPager: Back [desk] color

  Sets the background color, which is used for the background of each desk.

  For backwards compatibility the option, '*FvwmPager: DeskColor [desk] color', is an alias for this option and works the same.

*FvwmPager: HiFore [desk] color

  Sets the foreground color the for text used in the highlighted DeskLabels and MonitorLabels if DeskHilight is set.

*FvwmPager: HiBack [desk] color

  Sets the background color the for the highlighted labels when using DeskLabels or MonitorLabels, and sets the color used for the location of any active monitors. Has no effect if DeskHilight is not set.

  For backwards compatibility the option, '*FvwmPager: Hilight [desk] color', is an alias for this option and works the same.

*FvwmPager: WindowFore [desk] color

  Sets the foreground color for the mini windows. This color is used for the borders and any text labels in the windows.

*FvwmPager: WindowBack [desk] color

  Sets the background color for the mini windows.

*FvwmPager: FocusFore [desk] color

  Same as WindowFore, except it sets the foreground color of the focused window.

*FvwmPager: FocusBack [desk] color

  Same as WindowBack, except it sets the background color of the focused window.

*FvwmPager: WindowColors WindowFore WindowBack FocusFore FocusBack

  This option is for backwards compatibility, and sets all four colors WindowFore, WindowBack, FocusFore, and FocusBack in a single command for all desktops. Use the individual commands to set per desktop colors.

*FvwmPager: BalloonFore [desk] color

  Specifies the color for text in the balloon window. If omitted it defaults to the foreground color for the window being described.

*FvwmPager: BalloonBack [desk] color

  Specifies the background color for the balloon window. If omitted it defaults to the background color for the window being described.

*FvwmPager: BalloonBorderColor [desk] color

  Sets the color of the balloon window’s border. Defaults to black.

#### PIXMAPS

*FvwmPager: Pixmap [desk] pixmap

  Sets the pixmap to be used as the background image instead of the Back color for the desktop desk.

  For backwards compatibility the option, '*FvwmPager: DeskPixmap [desk] pixmap', is an alias for this option and works the same.

*FvwmPager: HilightPixmap [desk] pixmap

  Sets the pixmap to be used as the background image of the active monitor locations instead of 'Hilight' color for the desktop desk.

*FvwmPager: LabelPixmap [desk] True|False

  By default pixmaps are drawn in the root window for each desk, which covers the labels. Turning this option off by using False, F, or 0, will draw pixmaps only over the virtual desktop window, making the labels easier to see. This option can be turned back on with True, T, or 1. Note, disabling this will not work with transparent colorsets.

### MISCELLANEOUS

*FvwmPager: UseSkipList

  Tells FvwmPager to not show the windows that are using the WindowListSkip style.

*FvwmPager: StartIconic

  Causes the pager to start iconified.

*FvwmPager: NoStartIconic

  Causes the pager to start normally. Useful for canceling the effect of the StartIconic option.

*FvwmPager: SolidSeparators

  By default the pages of the virtual desktop are separated by dashed lines in the pager window. This option causes FvwmPager to use solid lines instead.

*FvwmPager: NoSeparators

  Turns off the lines separating the pages of the virtual desktop.

## SENDING COMMANDS

Using the SendToModule command, FvwmPager can be sent the following list of commands: Monitor, CurrentMonitor, DeskLabels, NoDeskLabels, MonitorLabels, NoMonitorLabels, CurrentDeskPerMonitor, CurrentDeskGlobal, IsShared, and IsNotShared. Each command functions identically to its configuration option, changing the configuration of the running pager.

Note: these commands work only on the running instance only, to make any changes permanent, update the relevant config file.

For example, you can tell a running instance of FvwmPager to track a specific monitor by sending it the following command:

    SendToModule FvwmPager Monitor RandRname

This will either change which monitor is being shown or tell the pager to only show a specific monitor. Note that the special value of none will show all windows on all monitors.

## AUTHOR

Robert Nation
DeskColor patch contributed by Alan Wild
MiniIcons & WindowColors patch contributed by Rob Whapham
Balloons patch by Ric Lister <ric@giccs.georgetown.edu>
fvwm-workers: Dominik, Olivier, Hippo and others.