I have a PC with two monitors, running X11. I'm using `xpra` in shadow mode to export the session. Here's how I launch the server:
xpra shadow :0 --bind-tcp=0.0.0.0:14600,auth=file,filename=$HOME/.xpra/password.txt --html=on --daemon=no
From the server logs, xpra detects my dual-monitor setup correctly:
2025-03-20 12:49:26,378 on display 'X11 display :0' of size 3840x1080
2025-03-20 12:49:26,378 with 2 monitors:
2025-03-20 12:49:26,378 HDMI-1 1920x1080 at 0,0
2025-03-20 12:49:26,378 HDMI-2 1920x1080 at 1920,0
On the client side, I run:
xpra attach tcp://max:*******@localhost:14600 --opengl=no --desktop-fullscreen=no
client log also report dual-monitor setup on server:
2025-03-20 12:44:49,426 Xpra GTK3 X11 client version 6.2.5-r0
2025-03-20 12:44:49,465 running on Linux Ubuntu 24.10 oracular
2025-03-20 12:44:49,465 cpython 3.12
2025-03-20 12:44:49,466 window manager is 'Xfwm4'
2025-03-20 12:44:49,854 GStreamer version 1.24.8
2025-03-20 12:44:49,894 created unix domain sockets:
2025-03-20 12:44:49,894 '/run/user/1000/xpra/clients/jarvis-27499'
2025-03-20 12:44:50,361 Using existing mmap file '/run/user/1000/xpra/xpra.p4k1739z.mmap': 512MB
2025-03-20 12:44:50,545 keyboard settings: rules=evdev, model=pc105, layout=us
2025-03-20 12:44:50,761 desktop size is 3840x2160:
2025-03-20 12:44:50,761 :0.0 (702x392 mm - DPI: 139x140) workarea: 3840x2127 at 0x33
2025-03-20 12:44:50,761 SAM HDMI-0 (697x392 mm - DPI: 140x140)
2025-03-20 12:44:51,092 enabled remote logging
2025-03-20 12:44:51,092 Xpra X11 shadow server version 6.2
2025-03-20 12:44:51,093 remote desktop size is 3840x1080
2025-03-20 12:44:51,093 :0.0 (1016x285 mm - DPI: 96x96) workarea: 3840x1059 at 0x21
2025-03-20 12:44:51,093 BNQ HDMI-1 1920x1080 at 0x0 (531x299 mm - DPI: 92x92) workarea: 1920x1059 at 0x21
2025-03-20 12:44:51,093 BNQ HDMI-2 1920x1080 at 1920x0 (531x298 mm - DPI: 92x92) workarea: 1920x1080 at 1920x0
2025-03-20 12:44:51,188 Attached to xpra server at tcp://max@localhost:14600/
when the client connect to server, the tatter log:
2025-03-20 12:56:25,565 New tcp connection received
2025-03-20 12:56:25,565 from '127.0.0.1:41694'
2025-03-20 12:56:25,566 on '0.0.0.0:14600'
2025-03-20 12:56:25,574 Authentication required by password file authenticator module
2025-03-20 12:56:25,574 sending challenge using 'hmac+sha512' digest over tcp connection
2025-03-20 12:56:26,101 Handshake complete; enabling connection
2025-03-20 12:56:26,111 Python/GTK3 Linux Ubuntu 24.10 oracular X11 client version 6.2
2025-03-20 12:56:26,111 connected as 'max'
2025-03-20 12:56:26,111 OpenGL is disabled
2025-03-20 12:56:26,116 shadow server: setting default keymap translation
2025-03-20 12:56:26,136 client root window size is 3840x2160
2025-03-20 12:56:26,927 automatic picture encoding enabled, also available:
2025-03-20 12:56:26,927 h264, vp9, vp8, png, png/P, png/L, webp, avif, rgb24, rgb32, jpeg, jpega, av1, scroll
2025-03-20 12:56:26,957 found GPU accelerated encoders for: h264
2025-03-20 12:56:26,957 switching to 'stream' encoding for 'desktop' window 1
2025-03-20 12:56:26,957 using 'gstreamer' stream mode
2025-03-20 12:56:26,961 found GPU accelerated encoders for: h264
2025-03-20 12:56:26,962 switching to 'stream' encoding for 'desktop' window 2
2025-03-20 12:56:26,962 using 'gstreamer' stream mode
2025-03-20 12:56:27,002 client 1 @02.466 Xpra X11 shadow server version 6.2
2025-03-20 12:56:27,024 client 1 @02.466 remote desktop size is 3840x1080
2025-03-20 12:56:27,025 client 1 @02.466 :0.0 (1016x285 mm - DPI: 96x96) workarea: 3840x1059 at 0x21
2025-03-20 12:56:27,025 client 1 @02.466 BNQ HDMI-1 1920x1080 at 0x0 (531x299 mm - DPI: 92x92) workarea: 1920x1059 at 0x21
2025-03-20 12:56:27,025 client 1 @02.466 BNQ HDMI-2 1920x1080 at 1920x0 (531x298 mm - DPI: 92x92) workarea: 1920x1080 at 1920x0
2025-03-20 12:56:27,105 client 1 @02.562 Attached to xpra server at tcp://max@localhost:14600/
2025-03-20 12:56:27,105 client 1 @02.562 (press Control-C to detach)
2025-03-20 12:56:27,475 shadow server: setting default keymap translation
2025-03-20 12:56:27,530 using monitor of default sink: USB Audio Device
/usr/lib/python3/dist-packages/xpra/server/shadow/gtk_shadow_server_base.py:341: DeprecationWarning: Gdk.Window.get_pointer is deprecated
return self.root.get_pointer()[-3:-1]
2025-03-20 12:56:28,165 audio capture using 'opus' audio codec
2025-03-20 12:56:28,994 client 1 @04.441 running, 2 windows
2025-03-20 12:56:29,071 client 1 @04.532 Warning: image bigger than expected
2025-03-20 12:56:29,071 client 1 @04.533 3840x1080 instead of 1920x1080
2025-03-20 12:56:29,203 client 1 @04.625 Warning: image bigger than expected
What happens
- Xpra opens two windows, one for HDMI-1 and one for HDMI-2.
- Both windows display the exact same content, instead of each showing its portion of the desktop.
- Only one of the two windows is interactive (receives input events).
From the logs
Warning: image bigger than expected
3840x1080 instead of 1920x1080
This warning repeats frequently.
It seems like xpra is sending the entire 3840x1080 desktop to both windows.
What I'm trying to achieve:
- Each client window should show only the corresponding screen, e.g. HDMI-1 shows the one screen, HDMI-2 the other.
- Both windows should be responsive to events as if they were independent displays.
What I've tried:
- Read the xpra documentation regarding shadow servers and multi-monitor setups.
- Tested with different
--desktop-scalingand--opengloptions.
Question:
How can I make xpra split the view correctly between the two windows, and make both windows interactive, with input routed to the correct area?
Environment:
- Xpra version 6.2.5-r0 on both client and server
- Server: Xubuntu 24.04, X11, Xfwm4 window manager, dual monitors (HDMI-1, HDMI-2)
- Client: Xubuntu 24.10, Xfwm4 window manager