fvwmorg/fvwm3

FvwmPager's Geometry seems to silently be based on the current XRandR screen

Closed this issue · 1 comments

Upfront Information

  • Fvwm3 version (run: fvwm3 --version)
    fvwm3 1.0.7 (1.0.6a-1-g8670b593)
    with support for: ReadLine, XPM, PNG, SVG, Shape, XShm, SM, Bidi text, XRandR, XRender, XCursor, XFT, NLS

(This is the latest Git version as I write this.)

  • Linux distribution or BSD name/version
    Fedora 37

  • Platform (run: uname -sp)
    Linux x86_64

Expected Behaviour

I have a 4k HiDPI dual monitor XRandR setup, with the primary monitor to the left of the secondary monitor. I configure two FvwmPager instances, one in the top right corner of each monitor. In fvwm2 the geometry of these was specified as '200x158-0+0' and '200x158-0+0@1'. Obviously this doesn't work in fvwm3, so I tried to do this with absolute coordinates, first -3840+0 and -0+0, then +3631+0 and +7472+0. However, neither worked; instead, FvwmPager interpreted the geometry as XRandR screen based and chose the screen that the mouse cursor was in. This happened both on fvwm3 restart and on module restart.

I have explicitly set 'DesktopConfiguration global', which I understand is the default.

Actual Behaviour

With the -X+0 geometry, if I restarted the modules with my mouse cursor in the right screen they placed correctly, but if I restarted the modules with my mouse cursor on the left screen, the left pager is invisible and the right pager is at the top right of the left screen. With the +X+0 geometry, it is the reverse; the pager location is correct if I (re)start the modules with the mouse cursor on the left screen, but they are shifted right if I restart the modules with the mouse cursor on the right screen.

A geometry specification that uses XRandR screen names appears to work correctly, so in my case -0+0@HDMI-A-0 and -0+0@DisplayPort-0.

This doesn't happen with fvwm2 in a similar configuration. (My fvwm3 configuration is my fvwm2 configuration edited; I just began trying fvwm3 yesterday, so the two have not diverged.)

My complete FvwmPager settings (HDMI is the left monitor, DisplayPort the right, HDMI is the XRandR 'primary'):

*FvwmPager:             Geometry 200x158-0+0@HDMI-A-0
*FvwmPager:             Balloons
*FvwmPager:             Back grey60
*FvwmPager:             Fore black
*FvwmPager:             Hilight #c0c0c0
*FvwmPager:             Font none
*FvwmPager:             SmallFont none
*FvwmPager:             BalloonFont "xft:Sans:size=10"

*FvwmPager2:            Geometry 200x158-0+0@DisplayPort-0
*FvwmPager2:            Balloons
*FvwmPager2:            Back grey60
*FvwmPager2:            Fore black
*FvwmPager2:            Hilight #c0c0c0
*FvwmPager2:            Font none
*FvwmPager2:            SmallFont none
*FvwmPager2:            BalloonFont "xft:Sans:size=10"

[In my startup function]
+  I Test (Start)  Module FvwmPager 0 0
+  I Test (Start)  Module FvwmPager FvwmPager2 0 0

Hi @siebenmann

Yup, that's correct. I should probably make geometry strings without the @... imply a global geometry.

For now, you should be able to use 100x100+0+10@g

The logic for this is in libs/FScreen.c:FScreenParseGeometry()