FVWMMFL(1)

πŸ“¦
version 1.1.5 Β· 4 versions
, in arch rolling, fedora 43, fedora 44

πŸŽ€ FVWMMFL(1) πŸŽ€

Okay bestie, this is the manual page for FvwmMFL, filed under the Fvwm Modules section 🌸

✨ NAME ✨

FvwmMFL, the Fvwm3 front-loader module πŸ’–

πŸ’… SYNOPSIS πŸ’…

FvwmMFL can only be invoked by Fvwm3. Command line invocation of the FvwmMFL will not work. πŸ™ˆ

This module has no command-line options, so don't even try πŸ’€

🧚 DESCRIPTION 🧚

Okay so the FvwmMFL module gives you access to Fvwm events over a unix-domain socket πŸ¦‹ It's basically made for externally-written programs (aka clients) that want to receive info from Fvwm and then do something about that event. Iconic behaviour, honestly πŸ‘‘

The info Fvwm3 sends is in the form of JSON packets πŸ’œ Each packet has different fields depending on which type was requested, so it's lowkey a whole vibe.

🌸 COMMUNICATION 🌸

The default unix-domain socket for FvwmMFL is $TMPDIR/fvwmmfl/fvwm_mfl_$DISPLAY.sock ✨

Want it somewhere else? Set the FVWMMFL_SOCKET_PATH environment variable to change where fvwm_mfl_$DISPLAY.sock gets created 🧚 FvwmMFL will make that path if it doesn't exist yet, and it'll set the relevant permissions for you. Main character energy πŸ’…

πŸ”₯ REGISTERING INTEREST πŸ”₯

Clients can send commands to FvwmMFL to decide which info gets sent to them. The set command handles this πŸŽ€ Here's every event you can subscribe to, bestie:

  • new_window β€” fires when a new window is mapped and visible πŸͺŸ
  • map β€” fires when a window is mapped πŸ—ΊοΈ
  • configure_window β€” fires when a window is moved or resized πŸ“
  • destroy_window β€” fires when a window is closed πŸ’€
  • new_page β€” fires when a new page is switched to πŸ“„
  • new_desk β€” fires when a new desk is switched to πŸ–₯️
  • raise_window β€” fires when a window is raised (or changes layer) πŸ¦‹
  • lower_window β€” fires when a window is lowered (or changes layer) πŸŒ™
  • focus_change β€” fires when a window loses or gains focus 🎯
  • enter_window β€” fires when the pointer moves into a window πŸ‘€
  • leave_Window β€” fires when the pointer moves out of a window πŸšͺ
  • window_shade β€” fires when a window is shaded 🌫️
  • window_unshade β€” fires when a window is unshaded β˜€οΈ
  • window_name β€” fires when the window name changes 🏷️
  • visible_name β€” fires when the visible window name changes πŸ‘οΈ
  • res_class β€” fires when the class of the window is set 🧁
  • res_name β€” fires when the resource of the window is set πŸŽ€
  • iconify β€” fires when a window is iconified 🫧
  • deiconify β€” fires when a window is deiconified 🌟
  • icon_name β€” fires when the icon name changes πŸ’«
  • visible_icon_name β€” fires when the icon's visible name changes πŸ“
  • icon_file β€” fires when the path to the icon changes πŸ“
  • icon_location β€” fires when the icon location changes πŸ“
  • restack β€” fires when the window stacking order changes πŸ₯ž
  • echo β€” fires when Fvwm receives an Echo command πŸ“£

For example, to register interest in new_window and focus_change, you'd send these commands over the socket:

set new_window
set focus_change

Changed your mind? Use the unset command to remove interest in an event:

unset focus_change

πŸ“¦ JSON FORMAT πŸ“¦

Each packet sent to a client is plain JSON 🫢 What's inside each packet depends on the event, so keep that in mind.

TODO: document each JSON structure. (Still on the list, bestie πŸ™ˆ)

πŸ“ EXAMPLE πŸ“

Want to watch focus_change events from the shell and see the JSON that comes back? Slay:

echo set focus_change | nc -U /tmp/fvwm_mfl.sock 2>&1 | jq --unbuffered

It outputs something like this:

{ "focus_change": { "window": "0x5400022", "type": 0, "hilight": {
"text_colour": 16777215, "bg_colour": 32767 } } }

πŸ‘‘ AUTHORS πŸ‘‘

This module first appeared in 2020 🌈


That's a wrap, bestie πŸ¦‹ FVWMMFL(1), from the Fvwm Modules pages, dated 2026-06-28. Love you, mean it πŸ’–βœ¨

πŸ“¦ where this page comes from