Xpra: Ticket #2643: Moving a maximized window to a smaller monitor via WinKey+Shift+LeftArrow does not fit it on destination

Moving maximized LibreOffice to the adjacent big monitor (via WinKey+Shift+LeftArrow) does not fit the screen with the maximized window.

Window "pretends" to be maximized, and left in a non-standard place in the new monitor.

You need to manually window it and then maximize it again.



Fri, 13 Mar 2020 14:59:47 GMT - Antoine Martin: owner, description, milestone changed

I assume that the monitors have different geometries? What are they? (the client output, ideally with -d geometry,screen would do)


Fri, 13 Mar 2020 15:09:05 GMT - stdedos:

Client monitors at #2642 attachment, I'll try to hack your client output now.

No way to do -d geometry,screen that on the fly, right?


Fri, 13 Mar 2020 15:27:14 GMT - stdedos:

"Xpra-Python3-x86_64_4.0-r25603\xpra_cmd" attach ssh://user@ip/2 --ssh="plink -ssh -agent" --modal-windows=no -d geomentry,screen
2020-03-13 17:23:04,156 SetProcessDPIAware: <_FuncPtr object at 0x0000000003f8bad0>()=1
2020-03-13 17:23:04,157 SetProcessDPIAwareness: <_FuncPtr object at 0x0000000003f8bc70>(1)=0
2020-03-13 17:23:04,718 Xpra GTK3 client version 4.0-r25603 64-bit
2020-03-13 17:23:04,720  running on Microsoft Windows 10
2020-03-13 17:23:04,788 Warning: failed to import opencv:
2020-03-13 17:23:04,788  No module named 'cv2'
2020-03-13 17:23:04,788  webcam forwarding is disabled
2020-03-13 17:23:05,404 GStreamer version 1.16.2 for Python 3.8.2 64-bit
2020-03-13 17:23:05,622 keyboard layout code 0x409
2020-03-13 17:23:05,623 identified as 'United States - English' : us
2020-03-13 17:23:05,743 OpenGL_accelerate module loaded
2020-03-13 17:23:05,781 Using accelerated ArrayDatatype
2020-03-13 17:23:06,307 Warning: vendor 'Intel' is greylisted,
2020-03-13 17:23:06,307  you may want to turn off OpenGL if you encounter bugs
2020-03-13 17:23:06,319 OpenGL enabled with Intel(R) HD Graphics 4000
2020-03-13 17:23:06,324 get_vrefresh()=40
2020-03-13 17:23:06,542  keyboard settings: layout=us
2020-03-13 17:23:06,545 get_workareas() GetMonitorInfo(5112917)={'Work': (0, 0, 1600, 860), 'Monitor': (0, 0, 1600, 900), 'Flags': 1, 'Device': '\\\\.\\DISPLAY1'}
2020-03-13 17:23:06,545 get_workareas()=[(0, 0, 1600, 860)]
2020-03-13 17:23:06,547  monitor 0: ['(Standard monitor types) Generic PnP Monitor', 0, 0, 1600, 900, 309, 174]
2020-03-13 17:23:06,548 get_workarea() absolute total monitor area: (0, 0, 1600, 900)
2020-03-13 17:23:06,549  total monitor dimensions: (1600, 900)
2020-03-13 17:23:06,549  workarea=(0, 0, 1600, 860)
2020-03-13 17:23:06,550  screen: ('3\\WinSta0\\Default', 1600, 900, 423, 238, [('(Standard monitor types) Generic PnP Monitor', 0, 0, 1600, 900, 309, 174, 0, 0, 1600, 860)], 0, 0, 1600, 860)
2020-03-13 17:23:06,551 get_workareas() GetMonitorInfo(5112917)={'Work': (0, 0, 1600, 860), 'Monitor': (0, 0, 1600, 900), 'Flags': 1, 'Device': '\\\\.\\DISPLAY1'}
2020-03-13 17:23:06,551 get_workareas()=[(0, 0, 1600, 860)]
2020-03-13 17:23:06,552  monitor 0: ['(Standard monitor types) Generic PnP Monitor', 0, 0, 1600, 900, 309, 174]
2020-03-13 17:23:06,555 get_workarea() absolute total monitor area: (0, 0, 1600, 900)
2020-03-13 17:23:06,556  total monitor dimensions: (1600, 900)
2020-03-13 17:23:06,557  workarea=(0, 0, 1600, 860)
2020-03-13 17:23:06,557  screen: ('3\\WinSta0\\Default', 1600, 900, 423, 238, [('(Standard monitor types) Generic PnP Monitor', 0, 0, 1600, 900, 309, 174, 0, 0, 1600, 860)], 0, 0, 1600, 860)
2020-03-13 17:23:06,558 get_screen_settings() sizes=[('3\\WinSta0\\Default', 1600, 900, 423, 238, [('(Standard monitor types) Generic PnP Monitor', 0, 0, 1600, 900, 309, 174, 0, 0, 1600, 860)], 0, 0, 1600, 860)], 1 desktops: []
2020-03-13 17:23:06,559 get_screen_settings() xdpi=96, ydpi=96
2020-03-13 17:23:06,559 get_screen_settings() scaled: xdpi=96, ydpi=96
2020-03-13 17:23:06,560 get_workareas() GetMonitorInfo(5112917)={'Work': (0, 0, 1600, 860), 'Monitor': (0, 0, 1600, 900), 'Flags': 1, 'Device': '\\\\.\\DISPLAY1'}
2020-03-13 17:23:06,560 get_workareas()=[(0, 0, 1600, 860)]
2020-03-13 17:23:06,561  monitor 0: ['(Standard monitor types) Generic PnP Monitor', 0, 0, 1600, 900, 309, 174]
2020-03-13 17:23:06,562 get_workarea() absolute total monitor area: (0, 0, 1600, 900)
2020-03-13 17:23:06,562  total monitor dimensions: (1600, 900)
2020-03-13 17:23:06,563  workarea=(0, 0, 1600, 860)
2020-03-13 17:23:06,568  screen: ('3\\WinSta0\\Default', 1600, 900, 423, 238, [('(Standard monitor types) Generic PnP Monitor', 0, 0, 1600, 900, 309, 174, 0, 0, 1600, 860)], 0, 0, 1600, 860)
2020-03-13 17:23:06,569  desktop size is 1600x900 with 1 screen:
2020-03-13 17:23:06,570   Default (423x238 mm - DPI: 96x96) workarea: 1600x860
2020-03-13 17:23:06,571     (Standard monitor types) Generic PnP Monitor (309x174 mm - DPI: 131x131)
2020-03-13 17:23:06,575 get_icc_info() intents={1: 'relative-colorimetric', 2: 'saturation', 3: 'absolute-colorimetric'}
2020-03-13 17:23:06,583 get_icc_info() display_profile=<PIL.ImageCms.ImageCmsProfile object at 0x00000000075d37c0>
2020-03-13 17:23:06,584 <module 'PIL.ImageCms' from 'C:\\Users\\user.win\\Documents\\xpra-clients\\Xpra-Python3-x86_64_4.0-r25603\\lib\\PIL\\ImageCms.pyc'> lacks getData
2020-03-13 17:23:06,585 xdpi=96, ydpi=96
2020-03-13 17:23:06,586 get_dpi_caps()={'x': 96, 'y': 96, '': 96}
2020-03-13 17:23:06,587 get_vrefresh()=40
2020-03-13 17:23:10,248 server desktop size=(1600, 900)
2020-03-13 17:23:10,250 server actual desktop size=(1600, 900)
2020-03-13 17:23:10,251 server has randr: True
2020-03-13 17:23:10,254 enabled remote logging
2020-03-13 17:23:10,256 Xpra GTK3 X11 server version 3.0.7-r25609 64-bit
2020-03-13 17:23:10,257  running on Linux Ubuntu 16.04 xenial
2020-03-13 17:23:10,259 may_adjust_scaling() server_is_desktop=False, desktop_fullscreen=False
2020-03-13 17:23:10,260 validating server_max_desktop_size=(5760, 2560) vs root size=(1600, 900)
2020-03-13 17:23:10,261 maximum packet size set to 104861696
2020-03-13 17:23:10,265 Attached to ip:22
2020-03-13 17:23:10,267  (press Control-C to detach)
(xpra_cmd:12228): Pango-WARNING **: 17:23:11.479: couldn't load font "Bitstream Vera Sans Not-Rotated 14.662109375", falling back to "Sans Not-Rotated 14.662109375", expect ugly output.
2020-03-13 17:23:12,513 UI thread is now blocked
2020-03-13 17:23:12,533 UI thread is running again, resuming
2020-03-13 17:23:15,516 UI thread is now blocked
2020-03-13 17:23:16,588 screen_size_changed((<__gi__.GdkWin32Screen object at 0x0000000008d2b600 (GdkWin32Screen at 0x00000000039b5a20)>,)) timer=None
2020-03-13 17:23:16,702 Warning: static gravity is not handled
2020-03-13 17:23:16,748 UI thread is running again, resuming
2020-03-13 17:23:17,693 get_workareas() GetMonitorInfo(129633287)={'Work': (0, 0, 1600, 860), 'Monitor': (0, 0, 1600, 900), 'Flags': 1, 'Device': '\\\\.\\DISPLAY1'}
2020-03-13 17:23:17,761 get_workareas() GetMonitorInfo(5178453)={'Work': (1600, -181, 3520, 859), 'Monitor': (1600, -181, 3520, 899), 'Flags': 0, 'Device': '\\\\.\\DISPLAY2'}
2020-03-13 17:23:17,782 get_workareas()=[(0, 0, 1600, 860), (0, 0, 1920, 1040)]
2020-03-13 17:23:17,784  monitor 0: ['(Standard monitor types) Generic PnP Monitor', 0, 181, 1600, 900, 309, 174]
2020-03-13 17:23:17,785  monitor 1: ['(Standard monitor types) C32JG5x', 1600, 0, 1920, 1080, 697, 392]
2020-03-13 17:23:17,788 get_workarea() absolute total monitor area: (0, -181, 3520, 900)
2020-03-13 17:23:17,794  total monitor dimensions: (3520, 1081)
2020-03-13 17:23:17,796  workarea=(0, 0, 3520, 1041)
2020-03-13 17:23:17,798  screen: ('3\\WinSta0\\Default', 3520, 1081, 931, 286, [('(Standard monitor types) Generic PnP Monitor', 0, 181, 1600, 900, 309, 174, 0, 0, 1600, 860), ('(Standard monitor types) C32JG5x', 1600, 0, 1920, 1080, 697, 392, 0, 0, 1920, 1040)], 0, 0, 3520, 1041)
2020-03-13 17:23:17,800 get_workareas() GetMonitorInfo(129633287)={'Work': (0, 0, 1600, 860), 'Monitor': (0, 0, 1600, 900), 'Flags': 1, 'Device': '\\\\.\\DISPLAY1'}
2020-03-13 17:23:17,802 get_workareas() GetMonitorInfo(5178453)={'Work': (1600, -181, 3520, 859), 'Monitor': (1600, -181, 3520, 899), 'Flags': 0, 'Device': '\\\\.\\DISPLAY2'}
2020-03-13 17:23:17,803 get_workareas()=[(0, 0, 1600, 860), (0, 0, 1920, 1040)]
2020-03-13 17:23:17,807  monitor 0: ['(Standard monitor types) Generic PnP Monitor', 0, 181, 1600, 900, 309, 174]
2020-03-13 17:23:17,808  monitor 1: ['(Standard monitor types) C32JG5x', 1600, 0, 1920, 1080, 697, 392]
2020-03-13 17:23:17,810 get_workarea() absolute total monitor area: (0, -181, 3520, 900)
2020-03-13 17:23:17,811  total monitor dimensions: (3520, 1081)
2020-03-13 17:23:17,812  workarea=(0, 0, 3520, 1041)
2020-03-13 17:23:17,813  screen: ('3\\WinSta0\\Default', 3520, 1081, 931, 286, [('(Standard monitor types) Generic PnP Monitor', 0, 181, 1600, 900, 309, 174, 0, 0, 1600, 860), ('(Standard monitor types) C32JG5x', 1600, 0, 1920, 1080, 697, 392, 0, 0, 1920, 1040)], 0, 0, 3520, 1041)
2020-03-13 17:23:17,818 get_screen_settings() sizes=[('3\\WinSta0\\Default', 3520, 1081, 931, 286, [('(Standard monitor types) Generic PnP Monitor', 0, 181, 1600, 900, 309, 174, 0, 0, 1600, 860), ('(Standard monitor types) C32JG5x', 1600, 0, 1920, 1080, 697, 392, 0, 0, 1920, 1040)], 0, 0, 3520, 1041)], 1 desktops: []
2020-03-13 17:23:17,821 get_screen_settings() xdpi=96, ydpi=96
2020-03-13 17:23:17,823 get_screen_settings() scaled: xdpi=96, ydpi=96
2020-03-13 17:23:17,824 update_screen_size()     new settings=(3520, 1081, [('3\\WinSta0\\Default', 3520, 1081, 931, 286, [('(Standard monitor types) Generic PnP Monitor', 0, 181, 1600, 900, 309, 174, 0, 0, 1600, 860), ('(Standard monitor types) C32JG5x', 1600, 0, 1920, 1080, 697, 392, 0, 0, 1920, 1040)], 0, 0, 3520, 1041)], 1, [], 3520, 1081, 96, 96)
2020-03-13 17:23:17,826 update_screen_size() current settings=(1600, 900, [('3\\WinSta0\\Default', 1600, 900, 423, 238, [('(Standard monitor types) Generic PnP Monitor', 0, 0, 1600, 900, 309, 174, 0, 0, 1600, 860)], 0, 0, 1600, 860)], 1, [], 1600, 900, 96, 96)
2020-03-13 17:23:17,831 sending updated screen size to server: 3520x1081 with 1 screens
2020-03-13 17:23:17,833   Default (931x286 mm - DPI: 96x96) workarea: 3520x1041
2020-03-13 17:23:17,835     (Standard monitor types) Generic PnP Monitor 1600x900 at 0x181 (309x174 mm - DPI: 131x131) workarea: 1600x860
2020-03-13 17:23:17,836     (Standard monitor types) C32JG5x 1920x1080 at 1600x0 (697x392 mm - DPI: 69x69) workarea: 1920x1040
2020-03-13 17:23:17,842 maximum packet size set to 104861696
2020-03-13 17:23:17,845 do_process_screen_size_change() MONITOR_CHANGE_REINIT=0, REINIT_WINDOWS=True
2020-03-13 17:23:17,847 screen size change: will reinit the windows
2020-03-13 17:23:18,294 server has resized the desktop to: 3520x1081 (max 5760x2560)
2020-03-13 17:23:18,342 may_adjust_scaling() server_is_desktop=False, desktop_fullscreen=False
2020-03-13 17:23:47,361 got signal SIGINT
2020-03-13 17:23:47,363 exiting

Sat, 14 Mar 2020 12:26:18 GMT - Antoine Martin:

So the monitor geometry started as:

desktop size is 1600x900 with 1 screen:
  Default (423x238 mm - DPI: 96x96) workarea: 1600x860
    (Standard monitor types) Generic PnP Monitor (309x174 mm - DPI: 131x131)

But then you plugged in the second one?

sending updated screen size to server: 3520x1081 with 1 screens
  Default (931x286 mm - DPI: 96x96) workarea: 3520x1041
    (Standard monitor types) Generic PnP Monitor 1600x900 at 0x181 (309x174 mm - DPI: 131x131) workarea: 1600x860
    (Standard monitor types) C32JG5x 1920x1080 at 1600x0 (697x392 mm - DPI: 69x69) workarea: 1920x1040

I don't see the libreoffice window geometry, or the move.


Sat, 14 Mar 2020 18:11:51 GMT - stdedos:

Replying to Antoine Martin:

So the monitor geometry started as:

desktop size is 1600x900 with 1 screen:
  Default (423x238 mm - DPI: 96x96) workarea: 1600x860
    (Standard monitor types) Generic PnP Monitor (309x174 mm - DPI: 131x131)

But then you plugged in the second one?

sending updated screen size to server: 3520x1081 with 1 screens
  Default (931x286 mm - DPI: 96x96) workarea: 3520x1041
    (Standard monitor types) Generic PnP Monitor 1600x900 at 0x181 (309x174 mm - DPI: 131x131) workarea: 1600x860
    (Standard monitor types) C32JG5x 1920x1080 at 1600x0 (697x392 mm - DPI: 69x69) workarea: 1920x1040

Yeah, I was about to replicate it for the logs, and I just remembered I was missing something :-p

I don't see the libreoffice window geometry, or the move.

Yeah, I was having the same impression too (but I try not to get too involved with the logs). I'll try again soon


Thu, 19 Mar 2020 11:29:23 GMT - stdedos: attachment set


Thu, 19 Mar 2020 11:29:52 GMT - stdedos:

Scaling down works, scaling up not. See attachment ^^^


Thu, 19 Mar 2020 11:41:26 GMT - Antoine Martin:

Scaling down works, scaling up not. See attachment

What does this ticket have to do with scaling? What am I looking for in this log?

What I have found:


Thu, 19 Mar 2020 14:49:05 GMT - stdedos:

Scaling down works, scaling up not. See attachment

What does this ticket have to do with scaling?

Scaling == When moving a maximized window from one monitor to a monitor with different geometry, the window "re-adjusts" to be properly maximized on the new monitor. Since I have never used the term scaling extensively in my computer-language (with the exception of xpras desktop-scaling which is like zooming, and image scaling), I assigned the phrase "the window is scaling" to the above behavior. I don't know if there is a more proper term for that.

What am I looking for in this log?

A window that was moved from a 1600x900 monitor to the right 1920x1080 monitor (in automated fashion) while maximized.


Thu, 19 Mar 2020 15:39:27 GMT - Antoine Martin: owner, status changed

When moving a maximized window from one monitor to a monitor with different geometry, the window "re-adjusts" to be properly maximized on the new monitor I don't know if there is a more proper term for that.

Let's call it "re-adjusts".


Fri, 20 Mar 2020 07:26:25 GMT - stdedos:

Windows monitor geometry also here attachment/ticket/2658/xpra-geometry-ApplicationFrameHost_2020-03-20_09-17-15.png


Mon, 23 Mar 2020 12:12:22 GMT - stdedos: summary changed


Tue, 01 Dec 2020 13:21:29 GMT - stdedos:

"Re-adjust" behavior works much more solidly in py2-3.0.12


Mon, 28 Dec 2020 15:00:39 GMT - Antoine Martin: milestone changed


Sat, 23 Jan 2021 05:56:53 GMT - migration script:

this ticket has been moved to: https://github.com/Xpra-org/xpra/issues/2643