FvwmPager

The FvwmPager module shows a miniature view of the how fvwm divides its virtual desktops into Pages and Desks. This can be used as a reminder of the location of the windows, allows movement between the pages and desks, and can move windows between the virtual desktops.

For example, my setup uses two monitors side by side, and I divide each virtual desktop up into a 1x3 grid of pages, DesktopSize 1x3. Combined with per-monitor DesktopConfiguration, each monitor can move up and down between the pages and between the virtual desktops independently. Below is a screen shot of FvwmPager showing how different monitors and windows are positioned in the virtual desktops. The configuration for this screenshot is given in the Example Configuration below.

Screenshot of FvwmPager showing 4 virtual desktops in a row.

FvwmPager is extremely configurable and the manual page already organizes and documents each and every option. For the full list of all possible options, read the FvwmPager manual page. This page describes how to use the pager and an overview of what options are available.

Version Notes

Certain aspects shown here will only work with fvwm3 version 1.1.1 or newer. Most of the features are still present in older pagers, so here is a quick overview of the differences, to adjust for older versions of the pager.

Launching FvwmPager

FvwmPager must be launched using fvwm’s Module command. This command can be added to the StartFunction, menus, key bindings, buttons, etc. Which desks are shown is chosen when launching FvwmPager, and the choices are to either show a specified list of desktops or to always show the current desktop.

# Show only virtual desktop 2.
Module FvwmPager 2
# Show the first four virtual desktops between 0 and 3.
Module FvwmPager 0 3
# Always show the current virtual desktop.
Module FvwmPager *

FvwmPager supports aliases, which can allow configuring and running multiple pagers at once, useful when using configuring each pager to track a specific monitor and/or desktop. Provide the alias as the first parameter to run FvwmPager using an alias. For example to make a pager only track the RandR monitor DP-1 under the alias FPDP1:

# Configure the pager
*FPDP1: Monitor DP-1
*FPDP1: MiniIcons
*FPDP1: Balloons All

# Launch the pager.
Module FvwmPager FPDP1 0 3

FvwmPager can be launched with the optional -transient flag, which puts turns the pager into a transient window that closes when done with. This is useful with a key binding that will bring up the pager to move between desktops, and then close afterwards.

Icon Pager

FvwmPager pager has two separate pagers. The first is the one pictured above, showing multiple desktops at once. When FvwmPager is Iconified it will show a second pager instead of its Icon. This pager has no labels and always shows the current desk (this is basically the same as using FvwmPager *). This allows having a full pager showing multiple desktops, and when Iconified, only showing the current desk.

Note, that in order to see the iconified pager, the icon must be shown. The icon can be shown with the following Style line (let’s also make the pager sticky so it shows all desks/ages):

Style FvwmPager Icon, Sticky

The icon pager is fully functional and can be used to move monitors and windows around the current desktop.

Using FvwmPager

FvwmPager can be used to move between the virtual desktops. Clicking on the pager with Mouse 1 (left click) will move to the desk/page clicked. Exactly which monitor is moved depends both on the DesktopConfiguration and the location clicked.

Clicking on FvwmPager with Mouse 3 (right click) will cause fvwm’s viewport to Scroll centered on the location clicked. This allows partial positioning between pages. Holding down Mouse 3 and moving will continuously scroll around the area. Scrolling best works with global desktop configuration. Note due to the amount of communication between FvwmPager and fvwm during the continuous scroll, this can cause the movement to lag.

Clicking and dragging a window in FvwmPager using Mouse 2 (middle button) will move the window to the location they are placed. Dragging the window out of the pager will move the window to the pointers current location, and it can be placed on the current desktop.

If balloon labels are turned on, *FvwmPager: Balloons All, the label with the name of the window will hover above the window. What the label shows can be configured via the BalloonStringFormat option.

DeskStyles

FvwmPager allows configuration of the colors/colorsets the desktops, highlighted areas, windows, and balloon labels use. Most options can be configured for each individual desktop shown. Due to the number of options, read the FvwmPager manual page for a full list.

The colors for each object are separated into a foreground color, used for text and border lines, and a background color, used as fill. The color of the desktops and highlighted areas are set by the pager, while the color of the windows can be set by fvwm. Unless a color is set in the pager, the windows will use the same foreground and background color as their colorset from fvwm.

The foreground and background colors can be configured using X11/rgb.txt color names, such as *FvwmPager: Fore red and *FvwmPager: Back blue. Color names can be used to configure: Fore, Back, HiFore, HiBack, WindowFore, WindowBack, FocusFore, FocusBack, BalloonFore, BalloonBack, and BallonBorderColor.

Colorsets are the preferred method of using colors in FvwmPager. The colorsets can define the foreground and background color together, and can also use pixmaps or transparency for the backgrounds of the different desk/windows. Colorsets can be configured using the Colorset, HilightColorset, WindowColorset, FocusColorset, and BalloonColorset options.

All DeskStyle options accept the same standardized format: *FvwmPager: Option [desk] value. If the desk number is not included or is *, then the option is applied to all virtual desktops, otherwise it is applied only to the given desk number. It is best to set global settings first then individual desks second.

This simple example configures all desktops to use colorsets 12 and 13, except desk 2, which uses colorsets 14 and 15. Since no window colors are set, windows will use the same colors as fvwm.

# Set a colorset for all desks, both syntax's do the same thing.
*FvwmPager: Colorset 12
*FvwmPager: HilightColorset * 13

# Set colorset for desk 2.
*FvwmPager: Colorset 2 14
*FvwmPager: HilightColorset 2 15

Note: Colorsets will always be used over color names, so if a colorset is applied, colorname settings will have no effect. It is best to not mix using color names and colorsets.

Multiple Monitor Support

Fvwm and FvwmPager both support multiple monitors using RandR and their RandR names. In addition fvwm’s DesktopConfiguration per-monitor and shared modes allow monitors to move between virtual desks and pages individually. FvwmPager understands and can be used with any desktop configuration. In addition the following options can be used to better help navigate the virtual desktops when using modes like per-monitor or shared.

Example Configuration

Here is the configuration of the first pager shown (top of the page). The colorsets were built from the CDE color themes.

#CDE Colors
#Default
Colorset 20 fg white, bg #686f82
Colorset 21 fg white, bg #cd9850
Colorset 22 fg white, bg #9900991b99fe
Colorset 23 fg white, bg #eda870

#Neptune
Colorset 25 fg black, bg #a2e5c6
Colorset 26 fg white, bg #3ffc93008d77
Colorset 27 fg black, bg #7889a5
Colorset 28 fg white, bg #3ffc93008d77

#Alpine
Colorset 30 fg black, bg #af35bfa1fb00
Colorset 31 fg white, bg #78aab8
Colorset 32 fg black, bg #bfc0c5
Colorset 33 fg white, bg #7ab9d8

#Crimson
Colorset 35 fg white, bg #b24d7a
Colorset 36 fg white, bg #e0b8ca
Colorset 37 fg white, bg #718ba5
Colorset 38 fg black, bg #aeb2c3

# CdePager Confgiruation
Style CdePager Sticky, Icon
DestroyModuleConfig CdePager: *
*CdePager: Font "xft:Sans:Bold:size=8:antialias=True"
*CdePager: MonitorLabels
*CdePager: Colorset 20
*CdePager: HilightColorset 21
*CdePager: WindowColorsets 22 23
*CdePager: Colorset 1 25
*CdePager: HilightColorset 1 26
*CdePager: WindowColorset 1 27
*CdePager: FocusColorset 1 28
*CdePager: Colorset 2 30
*CdePager: HilightColorset 2 31
*CdePager: WindowColorset 2 32
*CdePager: FocusColorset 2 33
*CdePager: Colorset 3 35
*CdePager: HilightColorset 3 36
*CdePager: WindowColorset 3 37
*CdePager: FocusColorset 3 38
*CdePager: WindowBorderWidth 4
*CdePager: Window3DBorders
*CdePager: MiniIcons
*CdePager: Balloons All
*CdePager: BalloonFont "xft:Sans:Bold:size=8:antialias=True"

# Run when fvwm starts
AddToFunc StartFunction I Module FvwmPager CdePager 0 3

Here are some notes to better understand the configuration: