Fvwm has various modules that can be used to create custom panels, docks, task managers, desktop switchers and more.
https://www.fvwm.org/Wiki/Modules/

FvwmIconMan
FvwmIconMan provides a list of running applications. You can run one or multiple managers and they can be configured to display different collections of windows.

FvwmCommandS
This is a server that runs in the background allow you to issue commands to fvwm via FvwmCommand on the command line (say inside a terminal like xterm).

FvwmEvent
FvwmEvent can be configured to trigger on specific events. When the event is triggered, the module can run any command.

FvwmPager
FvwmPager shows a ininature view of the Fvwm Desktops and Pages. This can be configured to show only the Current Desktop or any selection of Desktops.

FvwmScript
FvwmScript allows one to build graphical applications such as desktop accessories which can just display system info or be interactive.

FvwmBacker
This module will change the backgound/wallpaper when changing desktops. Any command can be executed when changing desktops so this module can be used for more than just switching the background.

FvwmConsole
FvwmConsole runs in a terminal (such as xterm) and allows one to send commands to the running instance of fvwm. This is a very useful module in testing new configurations.

FvwmIdent
FvwmIdent will create a window which contains information on the target window selected by the user.

FvwmAuto
The FvwmAuto module allows you to define actions for when the pointer enters and leaves a window after a specified delay. A common use of this would be to automatically raise windows, which is in fact the module's default behaviour. This can also be used to auto show/hide a panel/dock.

FvwmBanner displays an Fvwm Logo in the center of the screen for a set amount of time.

FvwmAnimate animates iconification and de-iconification on command.

FvwmRearrange can be used to tile or cascade windows.

FvwmButtons provides a method to build docks, panels, taskbars, and more.

FvwmForm provides a way to build GUI forms that can be filled out and run custom commands.
