Sending commands to fvwm

It is possible to send commands directly to the running instance of fvwm from the command line, which are processed immediately. The following modules can be used to this, which is useful for testing new configuration ideas, or sending fvwm commands you haven't previously configured to a menu, button keybinding, etc in the configuration file.

Starting with fvwm3, FvwmPrompt is the recommended tool for this. FvwmPrompt can be run from any terminal, and is both a command line tool that sends a single command to fvwm, like FvwmCommand, or an interactive shell that can send multiple commands to fvwm, like FvwmConsole.

Modules to send commands to fvwm

FvwmPrompt
FvwmPrompt is a command line tool that can be run in a terminal (such as xterm) and can either send fvwm a single command to process or open an interactive shell that can be used to send fvwm multiple commands.

FvwmCommand
FvwmCommand is a python script which can send commands directly to to fvwm from any terminal or script, provided FvwmMFL is running.

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.

FvwmMFL
FvwmMFL opens a unix file socket in which applications can talk to to and recieve events from fvwm written as JSON data packets. This allows one to write modules that can inneract via fvwm using most programing languages and just communicate to the FvwmMFL socket using JSON.

Note: Only one of FvwmPrompt or FvwmConsole will be installed with fvwm, and although FvwmPrompt is recommended, due to its dependency on golang, may not always be built, most notably the Debian package still uses FvwmConsole. In order to deal with this, the following from the Default Configuration adds the appropriate menu entry:

AddToMenu MenuFvwmRoot "Fvwm" Title
+ ...
Test (x $[FVWM_MODULEDIR]/FvwmConsole) + "Fvwm&Console%icons/terminal.png%" \
     Module FvwmConsole -terminal $[infostore.terminal]
Test (x FvwmPrompt) + "&FvwmPrompt%icons/terminal.png%" \
     Exec exec $[infostore.terminal] -title FvwmPrompt -e FvwmPrompt
+ ...