fvwmorg / fvwm3

FVWM version 3 -- the successor to fvwm2
Other
511 stars 78 forks source link

FvwmRearrange broken on multi-monitor layout #1033

Open jnse opened 3 months ago

jnse commented 3 months ago

Upfront Information

When using a 3 monitor configuration with following layout:

Screen 0: minimum 8 x 8, current 3840 x 1980, maximum 32767 x 32767
HDMI-0 connected primary 1920x1080+0+900 (normal left inverted right x axis y axis) 700mm x 400mm
DP-2 connected 1920x1080+1920+900 (normal left inverted right x axis y axis) 700mm x 400mm
DP-5 connected 1600x900+1117+0 (normal left inverted right x axis y axis) 443mm x 249mm

Invoking

 `FvwmCommand FvwmRearrange -tile

Causes windows to go off-screen somewhere below the top monitor rather than being properly tiled. Similar issues happen with the cascade option.

fvwm3 1.1.1 (dfc46ddc) (latest main branch at the time of writing this issue)

Gentoo GNU+Linux

Linux AMD Ryzen 9 3950X 16-Core Processor

Expected Behaviour

1) I expected windows to be tiled within a visible area of the monitor. 2) This may not be the actual behavior of FvwmRearrange -tile, but I was expecting (and hoping) to tile only the windows on the active screen/monitor (the one the mouse cursor is on) and not the all windows globally, and I expected them to be tiled ON that active monitor/screen.

Actual Behaviour

Chaos ensued. ;) Windows vanished, ending up somewhere below the top-most monitor, yet somehow also not visible on either monitor below it. I could just barely see the top right corner of them in the bottom left corner of the top screen.

Enabling logging

Invoking FvwmRearrange is not logging anything additional to the debug log, but here's the randr debug bits.


[1718059140.075366] monitor_dump_state: Monitor Debug
[1718059140.075375] monitor_dump_state:     number of outputs: 3
[1718059140.075382] monitor_dump_state:     Number: 0
    Name:   DP-5
    Disabled:   false
    Is Primary: no
    Is Current: no
    Is Previous:    no
    Output: 559
    Coords: {x: 1117, y: 0, w: 1600, h: 900}
    VirtScr: {
        VxMax: 0, VyMax: 0, Vx: 0, Vy: 0
        EdgeScrollX: 0, EdgeScrollY: 0
        CurrentDesk: 0
        CurrentPage: {x: 0, y: 0}
        MyDisplayWidth: 3840, MyDisplayHeight: 1980
    }
    EWMH: {
        BaseStrut Top:    0
        BaseStrut Bottom: 0
        BaseStrut Left:   0
        BaseStrut Right:  0
    }
    Desktops:   yes
    Flags:global

[1718059140.075394] monitor_dump_state:     Number: 1
    Name:   HDMI-0
    Disabled:   false
    Is Primary: yes
    Is Current: no
    Is Previous:    no
    Output: 446
    Coords: {x: 0, y: 900, w: 1920, h: 1080}
    VirtScr: {
        VxMax: 0, VyMax: 0, Vx: 0, Vy: 0
        EdgeScrollX: 0, EdgeScrollY: 0
        CurrentDesk: 0
        CurrentPage: {x: 0, y: 0}
        MyDisplayWidth: 3840, MyDisplayHeight: 1980
    }
    EWMH: {
        BaseStrut Top:    0
        BaseStrut Bottom: 0
        BaseStrut Left:   0
        BaseStrut Right:  0
    }
    Desktops:   yes
    Flags:global

[1718059140.075416] monitor_dump_state:     Number: 2
    Name:   DP-2
    Disabled:   false
    Is Primary: no
    Is Current: yes
    Is Previous:    no
    Output: 554
    Coords: {x: 1920, y: 900, w: 1920, h: 1080}
    VirtScr: {
        VxMax: 0, VyMax: 0, Vx: 0, Vy: 0
        EdgeScrollX: 0, EdgeScrollY: 0
        CurrentDesk: 0
        CurrentPage: {x: 0, y: 0}
        MyDisplayWidth: 3840, MyDisplayHeight: 1980
    }
    EWMH: {
        BaseStrut Top:    0
        BaseStrut Bottom: 0
        BaseStrut Left:   0
        BaseStrut Right:  0
    }
    Desktops:   yes
    Flags:global

[1718059140.081925] ewmh_ComputeAndSetWorkArea: monitor 'HDMI-0': {l: 0, r: 120, t: 0, b: 0} {x: 0, y: 0, w: 1800, h: 1080}
[1718059140.081975] ewmh_ComputeAndSetWorkArea: monitor 'DP-2': {l: 0, r: 120, t: 0, b: 0} {x: 0, y: 0, w: 1800, h: 1080}
[1718059140.082016] ewmh_ComputeAndSetWorkArea: monitor 'DP-5': {l: 0, r: 120, t: 0, b: 0} {x: 0, y: 0, w: 1480, h: 900}
[1718059140.302562] parse_and_set_window_style: Bad style option:  NoBorders
[1718059140.302620] parse_and_set_window_style: Bad style option:  NoBorders
[1718059140.302663] parse_and_set_window_style: Bad style option:  NoBorders
[1718059140.307615] HandleMapRequestKeepRaised: Window 0x440000a is new and is being recaptured and in an iconic state. Sending fake map/unmap
[1718059140.347200] ewmh_ComputeAndSetWorkArea: monitor 'DP-5': {l: 0, r: 120, t: 18, b: 0} {x: 0, y: 18, w: 1480, h: 882}
[1718059145.667876] monitor_dump_state: Monitor Debug
[1718059145.667897] monitor_dump_state:     number of outputs: 3
[1718059145.667901] monitor_dump_state:     Number: 2
    Name:   DP-2
    Disabled:   false
    Is Primary: no
    Is Current: yes
    Is Previous:    no
    Output: 554
    Coords: {x: 1920, y: 900, w: 1920, h: 1080}
    VirtScr: {
        VxMax: 3840, VyMax: 1980, Vx: 3840, Vy: 0
        EdgeScrollX: 0, EdgeScrollY: 0
        CurrentDesk: 0
        CurrentPage: {x: 1, y: 0}
        MyDisplayWidth: 3840, MyDisplayHeight: 1980
    }
    EWMH: {
        BaseStrut Top:    0
        BaseStrut Bottom: 0
        BaseStrut Left:   0
        BaseStrut Right:  120
    }
    Desktops:   yes
    Flags:per-monitor