FVWM3 setting up one desktop for three monitors

Migrating from FVWM2 to FVMW3. On FVWM2, I have one large desk, 3840 x 1980, comprised of 3 monitors - two 1920x1080 monitors across the bottom, one 1600x900 monitor centered above them. My FVWM2 file is configured for the 3840x1980 Desk. So when I use ResizeMove, I use it based on the Desk, not on the monitors. For example, to position a window on the right half of the lower-right monitor (DP-4), I use: ResizeMove 950p 1050p 960p -0p. This isn’t working on FVWM3. I can’t figure out how to tell FVWM3 that I want everything done relative to one 3840x1980 desk. And I can’t figure out how to instead rewrite ResizeMove in FVWM3 to say move this window to this screen and size it such.

I don’t speak geek, so specific examples are appreciated.

Hi @VikingGlen

It’s still based on the global screen (all connected monitors) unless you use the v prefix to the coordinates – which you’re not using.

What is it that’s not working? Are you saying that with your example, the coordinates are still being applied relative to a specific screen?

Blockquote Are you saying that with your example, the coordinates are still being applied relative to a specific screen?

Yes, the coordinates are being applied as each if individual screen (monitor) is it’s own individual, independently distinct desk, instead of one large 3840 x 1980 desk where each individual screen takes up a specific portion of that desk. Window placement is always relative to the upper-left corner of the current monitor screen instead of to coordinate 0,0 of the desk as was done in FVWM2.

$ xrandr --listactivemonitors
Monitors: 3
 0: +*DP-2 1600/434x900/236+1120+0  DP-2
 1: +DP-0 1920/476x1080/267+0+900  DP-0
 2: +DP-4 1920/476x1080/267+1920+900  DP-4

From .xinitrc:

exec xrandr --output HDMI-0 --off \
            --output DP-2 --primary --mode 1600x900  --pos 1120x0   --rotate normal \
            --output DP-0   --mode 1920x1080 --pos 0x900    --rotate normal \
            --output DP-4   --mode 1920x1080 --pos 1920x900 --rotate normal &

From ~/.fvwm/ConfigFvwmMenus:

 DestroyMenu Window-Placement-Left
 AddToMenu Window-Placement-Left      "Window Placement Left"      Title
 +                       "1 Window"        Title
 +                       "▢ "  ResizeMove 1910p 1050p 0p -0p
 +                       "2 Window"      Title
 +                       "◧ "      ResizeMove 950p 1050p 0p -0p
 +                       "◨ "     ResizeMove 950p 1050p 960p -0p
 +                       "↑▬↑"   ResizeMove 1910p 510p 0p -538p
 +                       "↓▬↓"   ResizeMove 1910p 510p 0p -0p
 +                       "3 Window"        Title
 +                       "‾‾"       ResizeMove 1910p 332p 0p -720p
 +                       "― "    ResizeMove 1910p 332p 0p -360p
 +                       "__"    ResizeMove 1910p 332p 0p -0p
 +                       "4 Window" Title
 +                       "◰ "  ResizeMove 950p 510p 0p -538p
 +                       "◳ " ResizeMove 950p 510p 960p -538p
 +                       "◱ "  ResizeMove 950p 510p 0p -0p
 +                       "◲ " ResizeMove 950p 510p 960p -0p
 +                       "6 Window" Title
 +                       "◰ "  ResizeMove 950p 332p 0p -720p
 +                       "◳ " ResizeMove 950p 332p 960p -720p
 +                       "← "  ResizeMove 950p 332p 0p -360p
 +                       "→ " ResizeMove 950p 332p 960p -360p
 +                       "◱ "  ResizeMove 950p 332p 0p -0p
 +                       "◲ " ResizeMove 950p 332p 960p -0p
 
 DestroyMenu Window-Placement-Right
 AddToMenu Window-Placement-Right     "Window Placement Right"     Title
 +                       "1 Window"        Title
 +                       "▢ "  ResizeMove 1910p 1050p 1920p -0p
 +                       "2 Window"      Title
 +                       "◧ "      ResizeMove 950p 1050p 1920p -0p
 +                       "◨ "     ResizeMove 950p 1050p 2880p -0p
 +                       "↑▬↑"   ResizeMove 1910p 510p 1920p -538p
 +                       "↓▬↓"   ResizeMove 1910p 510p 1920p -0p
 +                       "3 Window"        Title
 +                       "‾‾"       ResizeMove 1910p 332p 1920p -720p
 +                       "― "    ResizeMove 1910p 332p 1920p -360p
 +                       "__"    ResizeMove 1910p 332p 1920p -0p
 +                       "4 Window" Title
 +                       "◰ "  ResizeMove 950p 510p 1920p -538p
 +                       "◳ " ResizeMove 950p 510p 2880p -538p
 +                       "◱ "  ResizeMove 950p 510p 1920p -0p
 +                       "◲ " ResizeMove 950p 510p 2880p -0p
 +                       "6 Window" Title
 +                       "◰ "  ResizeMove 950p 332p 1920p -720p
 +                       "◳ " ResizeMove 950p 332p 2880p -720p
 +                       "← "  ResizeMove 950p 332p 1920p -360p
 +                       "→ " ResizeMove 950p 332p 2880p -360p
 +                       "◱ "  ResizeMove 950p 332p 1920p -0p
 +                       "◲ " ResizeMove 950p 332p 2880p -0p
 
 
 DestroyMenu Window-Placement-Top
 AddToMenu Window-Placement-Top      "Window Placement Top"      Title
 +                       "1 Window"        Title
 +                       "▢ "  ResizeMove 1590p 865p 1120p 0p
 +                       "2 Window"      Title
 +                       "◧ "      ResizeMove 790p 865p 1120p 0p
 +                       "◨ "     ResizeMove 790p 865p 1920p 0p
 +                       "↑▬↑"      ResizeMove 1590p 419p 1120p 0p
 +                       "↓▬↓"      ResizeMove 1590p 419p 1120p 447p
 +                       "3 Window"        Title
 +                       "‾‾"       ResizeMove 1590p 288p 1120p 0p
 +                       "―"    ResizeMove 1590p 288p 1120p 290p
 +                       "__"    ResizeMove 1590p 288p 1120p 580p
 +                       "4 Window" Title
 +                       "◰ "  ResizeMove 790p 419p 1120p 0p
 +                       "◳ " ResizeMove 790p 419p 1920p 0p
 +                       "◱ "  ResizeMove 790p 419p 1120p 447p
 +                       "◲ " ResizeMove 790p 419p 1920p 447p

It’s working. I changed ResizeMove from:

"◧ "      ResizeMove 950p 1050p 0p -0p

to

"◧ "      ResizeMove 950p 1050p screen DP-4 0p -0p

I also had to change the “Move” portion to be relative to the individual screens; DP-0, DP-2, or DP-4; instead of being relative to the 3840 x 1980 desk.

By default moving honors the EWMHBaseStruts which are now per monitor. This does make moving things a little more complicated because windows will be adjusted to be placed inside the working area (even if it is 0 on all edges of the monitor). You can append the option ewmhiwa to the end of Move commands to tell fvwm to ignore the EWMH working area as another option vs state what screen you want to move things relative too.

Thank you. I don’t know that one way is functionally better than the other for an end-user like myself. That is, how it behaves when I click the mouse on the button that corresponds to the specific monitor I wish to move the window to, how it moves to the monitor, and how it lines up on the screen. As long as the window goes where I want when I want, the specifics of how I write the configuration file to get there is only of minor concern; one global desk, or individually, distinct screens are both fine as long as I can figure out how to make one of them work.

I use FVWM because it lets me set up the working window manager so it’s much more convenient for me. I often have multiple jobs open at the same time. FVWM allows me to easily jump back and forth between them. I’m not aware of, nor am I looking for, another window manager that does the same.

Somaij, I put your response in my ConfigFvwmMenus file for future reference if I find a need to go back to a global configuration.

Thanks!