Xpra: Ticket #1202: Inconsistent DPI with multimonitor client

Using Xpra 0.17.2 on current Debian Testing.

When connecting from single monitor client, DPI is set correctly. When connecting from multi monitor client, DPI on server is set as 34x96, can not change it with xrandr on server. If connecting with --dpi 96, server DPI is set to 85x85, which is less weird than it was on 0.17.1, but still wrong.

Client xrandr setup:

$ xrandr
Screen 0: minimum 8 x 8, current 5440 x 1080, maximum 32767 x 32767
LVDS1 connected 1600x900+1920+180 (normal left inverted right x axis y axis) 310mm x 174mm
   1600x900      60.03*+  40.02
   1440x900      59.89
   1368x768      60.00
   1360x768      59.80    59.96
   1152x864      60.00
   1280x720      60.00
   1024x768      60.00
   1024x576      60.00
   960x540       60.00
   800x600       60.32    56.25
   864x486       60.00
   800x450       60.00
   640x480       59.94
   720x405       60.00
   640x360       60.00
DP1 disconnected (normal left inverted right x axis y axis)
DP2 disconnected (normal left inverted right x axis y axis)
DP3 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
HDMI2 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 477mm x 268mm
   1920x1080     60.00*+
   1280x1024     75.02    60.02
   1152x864      75.00
   1024x768      75.08    60.00
   800x600       75.00    60.32
   640x480       75.00    60.00
   720x400       70.08
HDMI3 connected 1920x1080+3520+0 (normal left inverted right x axis y axis) 477mm x 268mm
   1920x1080     60.00*+
   1280x1024     75.02    60.02
   1152x864      75.00
   1024x768      75.08    60.00
   800x600       75.00    60.32
   640x480       75.00    60.00
   720x400       70.08
VGA1 disconnected (normal left inverted right x axis y axis)
VIRTUAL1 disconnected (normal left inverted right x axis y axis)
$ xdpyinfo | grep inch
  resolution:    96x96 dots per inch

Xpra server xrandr setup (when connected with --dpi 96)

$ xrandr
xrandr: Failed to get size of gamma for output default
Screen 0: minimum 320 x 175, current 3864 x 1050, maximum 8192 x 4096
default connected 3864x1050+0+0 0mm x 0mm
   8192x4096      5.00
   5120x3200     10.00
   3840x2880     10.00
   3840x2560     10.00
   3840x2048     10.00
   3840x2160     10.00
   2048x2048     10.00
   2560x1600     10.00
   1920x1440     20.00
   1920x1200     10.00
   1920x1080     10.00
   1600x1200     10.00
   1680x1050     10.00
   1600x900      20.00
   1400x1050     85.00    75.00    70.00    60.00
   1440x900      20.00
   1280x1024     20.00
   1366x768      60.00
   1280x800      20.00
   1024x768      25.00    20.00    87.00
   1024x600      25.00
   800x600       25.00
   320x200       85.00
   6400x4096      5.00
   4720x3840     10.00
   6400x2560      5.00
   5120x2880     10.00
   6400x2160     10.00
   5280x2560      5.00
   5120x2560      5.00
   5760x2160     10.00
   4400x2560     10.00
   5280x1920      5.00
   4096x2304     20.00
   4096x2160     10.00
   3360x2560     10.00
   5680x1440     15.00
   3120x2560     10.00
   3072x2560     10.00
   3000x2560     10.00
   4000x1660     20.00
   5496x1200     25.00
   4480x1440     10.00
   5280x1200     25.00
   4240x1440     10.00
   4160x1440     10.00
   4800x1200     10.00
   4000x1440     20.00
   3200x1800     30.00
   2560x2240     20.00
   5280x1080     25.00
   3904x1440     10.00
   3008x1692     20.00
   3840x1200     20.00
   2728x1680     25.00
   3600x1200     20.00
   3520x1196     20.00
   3840x1080     20.00
   3864x1050     20.00*
   3600x1080     20.00
   2560x1440     10.00
   2560x1400     50.00
   3288x1080     10.00
   3360x1050     60.00
   3200x1080     50.00
   3120x1050     60.00
   2048x1536     20.00
   1728x1520     50.00
   1856x1392     75.00    60.00
   1792x1344     75.00    60.00
   2048x1152     60.00    50.00
   1400x900      60.00
   1280x960      85.00    60.00
   1360x768      20.00
   800x1280      20.00
   1152x864     100.00    85.00    75.00    70.00    60.00
   800x1242      20.00
   1280x768      20.00
   1280x762      20.00
   1280x720      50.00    25.00
   720x1280      25.00
   720x1242      25.00
   1280x682      25.00
   768x1024      25.00    20.00
   768x986       25.00
   1024x730      25.00
   960x720       85.00    75.00    60.00
   1024x640      50.00
   928x696       75.00    60.00
   600x1024      25.00
   896x672       75.00    60.00
   600x986       25.00
   1024x576      60.00
   1024x562      25.00
   832x624       75.00
   960x540       60.00
   536x960       25.00
   960x536       25.00
   536x922       25.00
   600x800       25.00
   960x498       25.00
   600x762       25.00
   800x562       25.00
   840x525       85.00    75.00    70.00    60.00
   864x486       60.00
   480x854       25.00
   848x480       25.00
   480x810       25.00
   480x800       25.00
   800x480       25.00
   848x442       25.00
   700x525       85.00    75.00    70.00    60.00
   480x762       25.00
   640x512       85.00    75.00    60.00
   720x450       60.00
   640x480       85.00    75.00    73.00    60.00
   720x405       60.00
   720x400       85.00
   680x384       60.00
   640x400       85.00
   576x432      100.00    85.00    75.00    70.00    60.00
   640x360       49.00
   640x350       85.00
   512x384       87.00    85.00    75.00    70.00    60.00
   416x312       75.00
   400x300       85.00    75.00    72.00    60.00    56.00
   320x240       85.00    75.00    73.00    60.00
   360x200       85.00
   320x175       85.00
$ xdpyinfo | grep inch
  resolution:    85x85 dots per inch
# when connected without --dpi argument:
$ xdpyinfo | grep inch
  resolution:    34x96 dots per inch


Fri, 20 May 2016 11:16:27 GMT - psycho_zs:

remote starting or attaching with ... --desktop-scaling=off --dpi 96 from multi monitor client I get:

$ xdpyinfo | grep inch
  resolution:    192x193 dots per inch

Have to disable scaling (which is inconveniently autosets to 125%) after connection without --desktop-scaling=off to get 85x85

Why scaling is automatically set to 125% and why disabling it through cli affects DPI?


Sun, 22 May 2016 05:31:16 GMT - Antoine Martin: owner changed

The desktop scaling is enabled automatically on large client screens to save bandwidth and it should preserve the same DPI when shown on the client, but only after adjusting it for the client side scaling: the virtual screen on the server is calculated to cover the exact same area (physical dimensions), just with fewer pixels. For example: a scaling value of 200% (applies to both x and y dimensions) means that your virtual screen will have only 25% of the number of pixels found on the client's screen, and the DPI will also be 25% of that value so that applications should look the same, just with fewer pixels. (and more importantly you should be able to get 4 times more frames per second at the same quality setting)

But in order to get the hardware DPI (the one you get with xdpyinfo) to match your client's DPI, you need to use a patched dummy driver which we do not provide for debian systems, only for centos and fedora. See wiki/DPI for more information. Without the patched dummy driver, only the xrdb value will be set and some applications do not honour it. The only workaround is to edit /etc/xpra/xorg.conf and change the physical screen size, and / or the xvfb line in /etc/xpra/xpra.conf to use a specific DPI.

I will probably close this ticket as wontfix.


Sun, 22 May 2016 20:25:52 GMT - ctaggart:

I would like to get the hardware DPI to match on Debian. The instructions at wiki/Xdummy says:

The ​xserver patch: which is part of the 1.12 xserver and later. This ​xf86-video-dummy patch: which is part of version 0.3.5.

On Debian Jessy, it appears that I have 1.16.4 of xserver and 0.3.7 of the video-dummy.:

$ apt-cache policy xserver-xorg-core
xserver-xorg-core:
  Installed: 2:1.16.4-1
$ apt-cache policy xserver-xorg-video-dummy
xserver-xorg-video-dummy:
  Installed: 1:0.3.7-1+b3

The default software looks like it should have the patches. What else do I need to do? The page says that Ubuntu needs the user to be added to tty, video, and dialout groups. Is that needed for Debian as well?


Mon, 23 May 2016 02:09:05 GMT - Antoine Martin:

The default software looks like it should have the patches.


No, you have the correct version for running xdummy, the DPI patches go on top: browser/xpra/tags/v0.17.x/rpmbuild (0002, 0003 and 0004)/

The page says that Ubuntu needs the user to be added to tty, video, and dialout groups. Is that needed for Debian as well?


No.


Mon, 23 May 2016 07:14:35 GMT - psycho_zs:

I was able to sync DPI by adding --dpi 96 to xvfb command and option desktop-scaling = off in xpra.conf on server. (at least with single monitor client, will be able to test multimonitor tomorrow)


Mon, 23 May 2016 09:30:38 GMT - Antoine Martin:

Since we will not provide patched dummy drivers for Debian, r12658 makes -dpi 96 the default on Debian systems.

Note: you should not be calling this "sync DPI" as this does no such thing, it only hardcodes a specific value and it will not adapt to your client's DPI settings. As per the wiki/DPI, this will only work for applications that rely on the virtualized hardware DPI, and has no effect on the other settings - but the other settings should be synchronized with the client values properly anyway.


Tue, 24 May 2016 16:49:56 GMT - ctaggart:

Setting --dpi 96 with desktop-scaling = off in /etc/xpra/xpra.conf does not work for me. I haven't patched a Debian package before. I just need to download or clone the source from https://packages.debian.org/source/jessie/xorg-server and figure out how to build it? Then build it with the patch applied?


Tue, 24 May 2016 17:04:12 GMT - Antoine Martin:

Yes, you will need to rebuild the packages with those patches applied. Note: the DPI change in r12658 is to the xvfb / Xorg command line, xpra's DPI switch is a different thing which has no effect on the hardware DPI without the patches.


Tue, 24 May 2016 17:58:15 GMT - psycho_zs:

...and nope again. With multimonitor client -dpi 96 in xvfb command in xpra.conf does not work. With xpra start ssh:user@server:12323:100 --start-child=xpra-session --exit-with-children --desktop-scaling=off --dpi 96 I get 64x28 dpi and very large content. With xpra start ssh:user@server:12323:100 --start-child=xpra-session --exit-with-children I get 45x25 dpi and very small content enlarged a bit by scaling.


Tue, 24 May 2016 18:25:19 GMT - psycho_zs:

I've applied patches: 0002-Constant-DPI.patch 0003-fix-pointer-limits.patch 0004-honour-dac.patch to xserver-xorg-video-dummy on server, but still I get wrong dpi. 192x193. I've put dpi 96 everywhere I could: in xpra.conf both on server and client, in xvfb line of xpra.conf on server, as cli argument when starting or connecting. Also disabled desktop-scaling in xpra.conf on both server and client. 192x193 and large content is what I get.


Wed, 25 May 2016 01:30:31 GMT - Antoine Martin:

Please post the client and server output with xpra -d screen .... As well as all your config files and exact command lines.


Wed, 25 May 2016 02:15:02 GMT - psycho_zs:

Xpra server config:

clipboard = yes
notifications = yes
tray = yes
system-tray = yes
speaker = off
microphone = off
pings = no
remote-logging = both
file-transfer = yes
file-size-limit = 10
open-files = no
printing = True
lpadmin = /usr/sbin/lpadmin
lpinfo = /usr/sbin/lpinfo
postscript-printer =
pdf-printer =
encodings = all
video-encoders = all
csc-modules = all
video-decoders = all
video-scaling = on
quality = auto
min-quality = 30
speed = auto
min-speed = 30
auto-refresh-delay = 0.15
dpi = 96
av-sync = on
webcam = auto
mmap = yes
mmap-group = no
socket-permissions = 600
sharing = no
compressors = lz4, lzo, zlib
compression_level = 1
packet-encoders = rencode, bencode, yaml
socket-dirs = socket-dirs = ~/.xpra
idle-timeout = 0
server-idle-timeout = 0
opengl = auto
title = @title@ on @client-machine@
keyboard-sync = yes
ssh = ssh -x
key-shortcut = Meta+Shift+F1:show_menu
key-shortcut = Meta+Shift+F2:show_start_new_command
key-shortcut = Meta+Shift+F3:show_bug_report
key-shortcut = Meta+Shift+F4:quit
key-shortcut = Meta+Shift+F5:increase_quality
key-shortcut = Meta+Shift+F6:decrease_quality
key-shortcut = Meta+Shift+F7:increase_speed
key-shortcut = Meta+Shift+F8:decrease_speed
key-shortcut = Meta+Shift+F10:magic_key
key-shortcut = Meta+Shift+F11:show_session_info
key-shortcut = Meta+Shift+F12:toggle_debug
key-shortcut = Meta+Shift+plus:scaleup
key-shortcut = Meta+Shift+minus:scaledown
key-shortcut = Meta+Shift+underscore:scaledown
key-shortcut = Meta+Shift+KP_Add:scaleup
key-shortcut = Meta+Shift+KP_Subtract:scaledown
key-shortcut = Meta+Shift+KP_Multiply:scalereset
key-shortcut = Meta+Shift+bar:scalereset
key-shortcut = Meta+Shift+question:scalingoff
window-close = auto
desktop-scaling = off
shadow-fullscreen = no
log-dir = ~/.xpra
log-file = $DISPLAY.log
start = /etc/X11/Xsession true
exit-with-children = no
dbus-launch = dbus-launch --close-stderr
dbus-control = True
dbus-proxy = yes
start-new-commands = no
bind = ~/.xpra/
mdns = True
wm-name = Xpra
input-method=none
env = #avoid Ubuntu's global menu, which is a mess and cannot be forwarded:
env = UBUNTU_MENUPROXY=
env = QT_X11_NO_NATIVE_MENUBAR=1
env = #fix for MainSoft's MainWin buggy window management:
env = MWNOCAPTURE=true
env = MWNO_RIT=true
env = MWWM=allwm
pulseaudio = yes
pulseaudio-command =  pulseaudio --start -n --daemonize=false --system=false \
         --exit-idle-time=-1 --load=module-suspend-on-idle \
         '--load=module-null-sink sink_name="Xpra-Speaker" sink_properties=device.description="Xpra\ Speaker"' \
         '--load=module-null-sink sink_name="Xpra-Microphone" sink_properties=device.description="Xpra\ Microphone"' \
         --load=module-native-protocol-unix --load=module-dbus-protocol \
         --log-level=2 --log-target=stderr
pulseaudio-configure-commands =  pactl set-default-sink Xpra-Speaker
pulseaudio-configure-commands =  pactl set-default-source Xpra-Microphone.monitor
sync-xvfb = 0
xvfb =  Xorg -noreset -nolisten tcp +extension GLX +extension RANDR +extension RENDER -dpi 96 -auth $XAUTHORITY -logfile ${HOME}/.xpra/Xorg.${DISPLAY}.log -configdir ${HOME}/.xpra/xorg.conf.d -config /etc/xpra/xorg.conf
displayfd = yes

Xpra client config:

clipboard = yes
notifications = yes
tray = yes
system-tray = yes
speaker = on
microphone = off
pings = no
remote-logging = both
file-transfer = yes
file-size-limit = 10
open-files = no
printing = True
lpadmin = /usr/sbin/lpadmin
lpinfo = /usr/sbin/lpinfo
postscript-printer =
pdf-printer =
encodings = all
video-encoders = all
csc-modules = all
video-decoders = all
video-scaling = on
quality = auto
min-quality = 30
speed = auto
min-speed = 30
auto-refresh-delay = 0.15
dpi = 96
av-sync = on
webcam = auto
mmap = yes
mmap-group = no
socket-permissions = 600
sharing = no
compressors = lz4, lzo, zlib
compression_level = 1
packet-encoders = rencode, bencode, yaml
socket-dirs = socket-dirs = ~/.xpra
idle-timeout = 0
server-idle-timeout = 0
opengl = auto
title = @title@ on @client-machine@
keyboard-sync = yes
ssh = ssh -x
key-shortcut = Meta+Shift+F1:show_menu
key-shortcut = Meta+Shift+F2:show_start_new_command
key-shortcut = Meta+Shift+F3:show_bug_report
key-shortcut = Meta+Shift+F4:quit
key-shortcut = Meta+Shift+F5:increase_quality
key-shortcut = Meta+Shift+F6:decrease_quality
key-shortcut = Meta+Shift+F7:increase_speed
key-shortcut = Meta+Shift+F8:decrease_speed
key-shortcut = Meta+Shift+F10:magic_key
key-shortcut = Meta+Shift+F11:show_session_info
key-shortcut = Meta+Shift+F12:toggle_debug
key-shortcut = Meta+Shift+plus:scaleup
key-shortcut = Meta+Shift+minus:scaledown
key-shortcut = Meta+Shift+underscore:scaledown
key-shortcut = Meta+Shift+KP_Add:scaleup
key-shortcut = Meta+Shift+KP_Subtract:scaledown
key-shortcut = Meta+Shift+KP_Multiply:scalereset
key-shortcut = Meta+Shift+bar:scalereset
key-shortcut = Meta+Shift+question:scalingoff
window-close = auto
desktop-scaling = off
shadow-fullscreen = no
log-dir = ~/.xpra
log-file = $DISPLAY.log
start = /etc/X11/Xsession true
exit-with-children = no
dbus-launch = dbus-launch --close-stderr
dbus-control = True
dbus-proxy = yes
start-new-commands = no
bind = ~/.xpra/
mdns = True
wm-name = Xpra
input-method=none
env = #avoid Ubuntu's global menu, which is a mess and cannot be forwarded:
env = UBUNTU_MENUPROXY=
env = QT_X11_NO_NATIVE_MENUBAR=1
env = #fix for MainSoft's MainWin buggy window management:
env = MWNOCAPTURE=true
env = MWNO_RIT=true
env = MWWM=allwm
pulseaudio = yes
pulseaudio-command =  pulseaudio --start -n --daemonize=false --system=false \
         --exit-idle-time=-1 --load=module-suspend-on-idle \
         '--load=module-null-sink sink_name="Xpra-Speaker" sink_properties=device.description="Xpra\ Speaker"' \
         '--load=module-null-sink sink_name="Xpra-Microphone" sink_properties=device.description="Xpra\ Microphone"' \
         --load=module-native-protocol-unix --load=module-dbus-protocol \
         --log-level=2 --log-target=stderr
pulseaudio-configure-commands =  pactl set-default-sink Xpra-Speaker
pulseaudio-configure-commands =  pactl set-default-source Xpra-Microphone.monitor
sync-xvfb = 0
xvfb =  Xorg -noreset -nolisten tcp +extension GLX +extension RANDR +extension \
         RENDER -auth $XAUTHORITY -logfile \
         ${HOME}/.xpra/Xorg.${DISPLAY}.log -configdir \
         ${HOME}/.xpra/xorg.conf.d -config /etc/xpra/xorg.conf
displayfd = yes

Start command on server: xpra -d screen start :100 --exit-with-children --start-child=xpra-session

xpra-session script:

export XDG_MENU_PREFIX=openbox-
export XDG_CONFIG_DIRS=/etc/xdg
export XDG_CONFIG_HOME="$HOME/.config"
export XDG_SESSION_DESKTOP=OPENBOX
export XDG_DATA_DIRS=/usr/local/share:/usr/share:/usr/share/gdm:/var/lib/menu-xdg:/usr/local/share/:/usr/share/:/usr/share/gdm/:/var/lib/menu-xdg/
export XDG_CURRENT_DESKTOP=OPENBOX
export GTK2_RC_FILES="$XDG_CONFIG_HOME/gtk-2.0/gtkrc:/etc/gtk-2.0/gtkrc"
export QT_STYLE_OVERRIDE=gtk
export QT_QPA_PLATFORMTHEME=gtk2
export LANG=ru_RU.UTF-8
export LANGUAGE=
export LC_TIME=en_DK.UTF-8
gnome-keyring-daemon &
x-terminal-emulator

Connect command on client: xpra attach ssh:user@server:12323:100

Server's xpra log:

X.Org X Server 1.18.3
Release Date: 2016-04-04
X Protocol Version 11, Revision 0
Build Operating System: Linux 3.16.0-4-amd64 x86_64 Debian
Current Operating System: Linux server 4.5.0-2-amd64 #1 SMP Debian 4.5.4-1 (2016-05-16) x86_64
Kernel command line: BOOT_IMAGE=/boot/vmlinuz-4.5.0-2-amd64 root=/dev/mapper/mt2_sysgroup-root ro quiet
Build Date: 05 April 2016  07:00:43AM
xorg-server 2:1.18.3-1 (http://www.debian.org/support)
Current version of pixman: 0.33.6
	Before reporting problems, check http://wiki.x.org
	to make sure that you have the latest version.
Markers: (--) probed, (**) from config file, (==) default setting,
	(++) from command line, (!!) notice, (II) informational,
	(WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(++) Log file: "/home/user/.xpra/Xorg.:100.log", Time: Wed May 25 05:13:32 2016
(++) Using config file: "/etc/xpra/xorg.conf"
(==) Using system config directory "/usr/share/X11/xorg.conf.d"
2016-05-25 05:13:32,380 created unix domain socket: /home/user/.xpra/server-100
2016-05-25 05:13:32,596 Warning: menu forwarding is disabled:
2016-05-25 05:13:32,596  cannot load dbus helper: No module named dbus
2016-05-25 05:13:32,782 Warning: using fallback encryption library pycrypto
2016-05-25 05:13:32,782  python-cryptography is not available:
2016-05-25 05:13:32,783  No module named cryptography.hazmat.backends
2016-05-25 05:13:32,940 Error importing swscale colorspace conversion (csc_swscale)
2016-05-25 05:13:32,940  libswscale-ffmpeg.so.3: cannot open shared object file: No such file or directory
2016-05-25 05:13:33,088 Warning: failed to load the mdns avahi publisher:
2016-05-25 05:13:33,089  No module named avahi
2016-05-25 05:13:33,089  either fix your installation or use the 'mdns=no' option
2016-05-25 05:13:33,737 out(xpra opengl)=PyOpenGL warning: missing accelerate module
PyOpenGL warning: missing array format handlers: numeric, vbo, vbooffset
OpenGL Version: 3.0 Mesa 11.2.2
error=PyOpenGL version 3.1 or later is required (found version 3.0.2)
2016-05-25 05:13:33,737 err(xpra opengl)=
2016-05-25 05:13:33,737 OpenGL: {'error': ''}
2016-05-25 05:13:33,741 _NET_WORKAREA=[0, 0, 8192, 4096]
2016-05-25 05:13:33,741 _NET_DESKTOP_GEOMETRY=[8192, 4096]
2016-05-25 05:13:33,832 Error: failed to import the virtual video module:
2016-05-25 05:13:33,832  No module named _dbus_bindings
/bin/sh: 1: pulseaudio: not found
2016-05-25 05:13:33,856 pulseaudio server started with pid 18444
Warning: failed to import GStreamer:
 GStreamer 1.0: Namespace Gst not available
 GStreamer 0.10: No module named pygst
2016-05-25 05:13:34,162 Error: failed to query sound subsystem:
2016-05-25 05:13:34,162  query did not return any data
2016-05-25 05:13:34,163 Warning: failed to load or register our dbus notifications forwarder:
2016-05-25 05:13:34,164  No module named dbus.service
2016-05-25 05:13:34,164  if you do not have a dedicated dbus session for this xpra instance,
2016-05-25 05:13:34,164  use the 'notifications=no' option
2016-05-25 05:13:34,165 cannot load dbus helper: No module named dbus
2016-05-25 05:13:34,170 Error setting up our dbus server:
2016-05-25 05:13:34,170  No module named dbus
2016-05-25 05:13:34,205 started command 'xpra-session' with pid 18455
2016-05-25 05:13:34,205 xpra X11 version 0.18.0-r12578
2016-05-25 05:13:34,206  running with pid 18408 on Linux debian stretch/sid
2016-05-25 05:13:34,206  on display :100
SSH_AUTH_SOCK=/run/user/1000/keyring/ssh
2016-05-25 05:13:34,423 xpra is ready.
** (x-terminal-emulator:18470): WARNING **: Error retrieving accessibility bus address: org.freedesktop.DBus.Error.ServiceUnknown: The name org.a11y.Bus was not provided by any .service files
(x-terminal-emulator:18470): Vte-WARNING **: (/build/vte2.91-F7Daq6/vte2.91-0.44.2/./src/vtegtk.cc:1718):int vte_terminal_match_add_gregex(VteTerminal*, GRegex*, GRegexMatchFlags): runtime check failed: (g_regex_get_compile_flags(gregex) & G_REGEX_MULTILINE)
2016-05-25 05:13:35,207 Warning: pulseaudio has terminated shortly after startup.
2016-05-25 05:13:35,207  pulseaudio is limited to a single instance per user account,
2016-05-25 05:13:35,207  and one may be running already for user 'user'
2016-05-25 05:13:35,207  to avoid this warning, either fix the pulseaudio command line
2016-05-25 05:13:35,207  or use the 'pulseaudio=no' option
2016-05-25 05:15:06,925 New unix-domain connection received on /home/user/.xpra/server-100
2016-05-25 05:15:06,926 New unix-domain connection received on /home/user/.xpra/server-100
2016-05-25 05:15:06,927 Connection lost
2016-05-25 05:15:06,935 Handshake complete; enabling connection
2016-05-25 05:15:06,935 dpi=192, dpi.x=0, dpi.y=0, double_click_time=-1, double_click_distance=(-1, -1), antialias={}, cursor_size=18
2016-05-25 05:15:07,051 Error setting up the source's DBUS server:
2016-05-25 05:15:07,051  No module named dbus
2016-05-25 05:15:07,052 Python/Gtk2 Linux debian stretch/sid client version 0.18.0-r12578
2016-05-25 05:15:07,052  connected from 'client' as 'user'
2016-05-25 05:15:07,052  using h264 as primary encoding also available:
2016-05-25 05:15:07,052   vp9, vp8, mpeg4, png, png/P, png/L, webp, rgb24, jpeg, rgb32
2016-05-25 05:15:07,054  client root window size is 5440x1080 with 1 display:
2016-05-25 05:15:07,054   :0.0 (1439x285 mm - DPI: 96x96) workarea: 5404x1080 at 36x0
2016-05-25 05:15:07,055     monitor 1 1920x1080 (477x268 mm - DPI: 102x102)
2016-05-25 05:15:07,055     monitor 2 1600x900 at 1920x180 (310x174 mm - DPI: 131x131)
2016-05-25 05:15:07,055     monitor 3 1920x1080 at 3520x0 (477x268 mm - DPI: 102x102)
2016-05-25 05:15:07,055 maximum client resolution is 5440x1080 (current server resolution is 8192x4096)
2016-05-25 05:15:07,055 set_screen_size(5440, 1080) xdpi=192, ydpi=192
2016-05-25 05:15:07,247 set_dpi(192, 192)
2016-05-25 05:15:07,248 best resolution for client(5440x1080) is: (5496, 1200)
2016-05-25 05:15:07,248 calling RandR.set_screen_size(5496, 1200)
2016-05-25 05:15:07,259 calling RandR.get_screen_size()
2016-05-25 05:15:07,259 RandR.get_screen_size()=5496,1200
2016-05-25 05:15:07,259 RandR.get_vrefresh()=25
2016-05-25 05:15:07,260 server virtual display now set to 5496x1200 (best match for 5440x1080)
2016-05-25 05:15:07,260 set_best_screen_size()=(5496, 1200)
2016-05-25 05:15:07,260 get_max_screen_size()=(8192, 4096)
2016-05-25 05:15:07,261 calculate_workarea(5440, 1080)
2016-05-25 05:15:07,261 calculate_workarea() screen_sizes(X11ServerSource(Protocol(unix-domain socket:/home/user/.xpra/server-100)))=[[':0.0', 5440, 1080, 1439, 285, [['', 0, 0, 1920, 1080, 477, 268], ['', 1920, 180, 1600, 900, 310, 174], ['', 3520, 0, 1920, 1080, 477, 268]], 36, 0, 5404, 1080]]
2016-05-25 05:15:07,261 calculate_workarea() found gtk.gdk.Rectangle(36, 0, 5404, 1080) for display :0.0
2016-05-25 05:15:07,261 _NET_WORKAREA=[36, 0, 5404, 1080]
2016-05-25 05:15:07,261 _NET_DESKTOP_GEOMETRY=[5440, 1080]
2016-05-25 05:15:07,262 setting key repeat rate from client: 500ms delay / 19ms interval
2016-05-25 05:15:07,263 setting keymap: rules=evdev, model=pc105, layout=us,ru
2016-05-25 05:15:07,307 get_max_screen_size()=(8192, 4096)
2016-05-25 05:15:07,313 _screen_size_changed(<gtk.gdk.ScreenX11 object at 0x7f54d0456190 (GdkScreenX11 at 0x4425620)>)
2016-05-25 05:15:07,313 new screen dimensions: (5496, 1200)
2016-05-25 05:15:07,313 calculate_workarea(5496, 1200)
2016-05-25 05:15:07,313 calculate_workarea() screen_sizes(X11ServerSource(Protocol(unix-domain socket:/home/user/.xpra/server-100)))=[[':0.0', 5440, 1080, 1439, 285, [['', 0, 0, 1920, 1080, 477, 268], ['', 1920, 180, 1600, 900, 310, 174], ['', 3520, 0, 1920, 1080, 477, 268]], 36, 0, 5404, 1080]]
2016-05-25 05:15:07,314 calculate_workarea() found gtk.gdk.Rectangle(36, 0, 5404, 1080) for display :0.0
2016-05-25 05:15:07,314 _NET_WORKAREA=[36, 0, 5404, 1080]
2016-05-25 05:15:07,315 RandR.get_screen_size_mm=727,158
2016-05-25 05:15:07,315 DPI set to 192 x 192
2016-05-25 05:15:07,359 Attached to ssh:user@server:12323:100 (press Control-C to detach)
2016-05-25 05:15:07,360 get_max_screen_size()=(8192, 4096)
2016-05-25 05:15:07,366 get_max_screen_size()=(8192, 4096)
2016-05-25 05:15:07,370 python netifaces package is missing

Client output:

$ xpra -d screen attach ssh:user@server:12323:100
2016-05-25 05:35:23,822 Xpra gtk2 client version 0.18.0-r12578
2016-05-25 05:35:23,823  running on Linux debian stretch/sid
2016-05-25 05:35:23,823 Warning: failed to import opencv:
2016-05-25 05:35:23,823  No module named cv2
2016-05-25 05:35:23,823  webcam forwarding is disabled
2016-05-25 05:35:23,976 GStreamer version 1.8 for Python 2.7
2016-05-25 05:35:24,194 PyOpenGL warning: missing accelerate module
2016-05-25 05:35:24,195 PyOpenGL warning: missing array format handlers: numeric, vbo, vbooffset
2016-05-25 05:35:24,195 OpenGL Version: 3.0 Mesa 11.2.2
2016-05-25 05:35:24,196 OpenGL support is missing:
2016-05-25 05:35:24,196  PyOpenGL version 3.1 or later is required (found version 3.0.2)
2016-05-25 05:35:24,210 dpix=34, dpiy=96
2016-05-25 05:35:24,210 dpix=34, dpiy=96
2016-05-25 05:35:24,212 dpix=34, dpiy=96
2016-05-25 05:35:24,212 dpix=34, dpiy=96
2016-05-25 05:35:24,213 dpix=34, dpiy=96
2016-05-25 05:35:24,213 dpix=34, dpiy=96
2016-05-25 05:35:24,214 dpix=34, dpiy=96
2016-05-25 05:35:24,214 dpix=34, dpiy=96
2016-05-25 05:35:24,215 keyboard layouts: us,ru
2016-05-25 05:35:24,216 dpix=34, dpiy=96
2016-05-25 05:35:24,216 dpix=34, dpiy=96
2016-05-25 05:35:24,217 dpix=34, dpiy=96
2016-05-25 05:35:24,217 dpix=34, dpiy=96
2016-05-25 05:35:24,217 dpix=34, dpiy=96
2016-05-25 05:35:24,218 dpix=34, dpiy=96
2016-05-25 05:35:24,218 dpix=34, dpiy=96
2016-05-25 05:35:24,218 dpix=34, dpiy=96
2016-05-25 05:35:24,219 dpix=34, dpiy=96
2016-05-25 05:35:24,219 dpix=34, dpiy=96
2016-05-25 05:35:24,220 dpix=34, dpiy=96
2016-05-25 05:35:24,220 dpix=34, dpiy=96
2016-05-25 05:35:24,221 dpix=34, dpiy=96
2016-05-25 05:35:24,222 dpix=34, dpiy=96
2016-05-25 05:35:24,222 dpix=34, dpiy=96
2016-05-25 05:35:24,223 dpix=34, dpiy=96
2016-05-25 05:35:24,223 dpix=34, dpiy=96
2016-05-25 05:35:24,224 dpix=34, dpiy=96
2016-05-25 05:35:24,224 dpix=34, dpiy=96
2016-05-25 05:35:24,225 dpix=34, dpiy=96
2016-05-25 05:35:24,225 dpix=34, dpiy=96
2016-05-25 05:35:24,225 dpix=34, dpiy=96
2016-05-25 05:35:24,226 dpix=34, dpiy=96
2016-05-25 05:35:24,226 dpix=34, dpiy=96
2016-05-25 05:35:24,262  detected keyboard: rules=evdev, model=pc105, layout=us,ru
2016-05-25 05:35:24,263 get_number_of_desktops() 05000000=5
2016-05-25 05:35:24,264 get_desktop_names() d180d0b0d0b1d0bed187d0b8d0b920d181d182d0bed0bb203100d180d0b0d0b1d0bed187d0b8d0b920d181d182d0bed0bb203200d180d0b0d0b1d0bed187d0b8d0b920d181d182d0bed0bb203300d180d0b0d0b1d0bed187d0b8d0b920d181d182d0bed0bb203400d180d0b0d0b1d0bed187d0b8d0b920d181d182d0bed0bb203500=['\xd1\x80\xd0\xb0\xd0\xb1\xd0\xbe\xd1\x87\xd0\xb8\xd0\xb9 \xd1\x81\xd1\x82\xd0\xbe\xd0\xbb 1', '\xd1\x80\xd0\xb0\xd0\xb1\xd0\xbe\xd1\x87\xd0\xb8\xd0\xb9 \xd1\x81\xd1\x82\xd0\xbe\xd0\xbb 2', '\xd1\x80\xd0\xb0\xd0\xb1\xd0\xbe\xd1\x87\xd0\xb8\xd0\xb9 \xd1\x81\xd1\x82\xd0\xbe\xd0\xbb 3', '\xd1\x80\xd0\xb0\xd0\xb1\xd0\xbe\xd1\x87\xd0\xb8\xd0\xb9 \xd1\x81\xd1\x82\xd0\xbe\xd0\xbb 4', '\xd1\x80\xd0\xb0\xd0\xb1\xd0\xbe\xd1\x87\xd0\xb8\xd0\xb9 \xd1\x81\xd1\x82\xd0\xbe\xd0\xbb 5']
2016-05-25 05:35:24,264 get_screen_sizes(1.000000, 1.000000) found 1 screens
2016-05-25 05:35:24,264  screen 0 has 3 monitors
2016-05-25 05:35:24,264  workareas: []
2016-05-25 05:35:24,264  number of monitors does not match number of workareas!
2016-05-25 05:35:24,264  monitor 0: ['', 0, 0, 1920, 1080, 477, 268]
2016-05-25 05:35:24,264  monitor 1: ['', 1920, 180, 1600, 900, 310, 174]
2016-05-25 05:35:24,264  monitor 2: ['', 3520, 0, 1920, 1080, 477, 268]
2016-05-25 05:35:24,265 get_workarea()=<type 'str'>, len=80
2016-05-25 05:35:24,265 get_workarea() 24000000000000001c15000038040000=(36, 0, 5404, 1080)
2016-05-25 05:35:24,265  workarea=(36, 0, 5404, 1080)
2016-05-25 05:35:24,265  screen 0: (':0.0', 5440, 1080, 1439, 285, [('', 0, 0, 1920, 1080, 477, 268), ('', 1920, 180, 1600, 900, 310, 174), ('', 3520, 0, 1920, 1080, 477, 268)], 36, 0, 5404, 1080)
2016-05-25 05:35:24,265  desktop size is 5440x1080 with 1 screen:
2016-05-25 05:35:24,265   :0.0 (1439x285 mm - DPI: 96x96) workarea: 5404x1080 at 36x0
2016-05-25 05:35:24,265     monitor 1 1920x1080 (477x268 mm - DPI: 102x102)
2016-05-25 05:35:24,265     monitor 2 1600x900 at 1920x180 (310x174 mm - DPI: 131x131)
2016-05-25 05:35:24,265     monitor 3 1920x1080 at 3520x0 (477x268 mm - DPI: 102x102)
2016-05-25 05:35:24,265 dpi: 192, xdpi=192, ydpi=192
2016-05-25 05:35:24,267 get_vrefresh()=60
2016-05-25 05:35:24,267 get_antialias_info()={}
2016-05-25 05:35:24,995 xpra initialization error:
2016-05-25 05:35:24,995  cannot find any live servers to connect to
2016-05-25 05:35:24,995
2016-05-25 05:35:24,999 Error: printing disabled:
2016-05-25 05:35:25,000  No module named cups
2016-05-25 05:35:25,003 Connection lost
user@client:~$ xpra -d screen attach ssh:user@server:12323:100
2016-05-25 05:35:40,760 Xpra gtk2 client version 0.18.0-r12578
2016-05-25 05:35:40,760  running on Linux debian stretch/sid
2016-05-25 05:35:40,760 Warning: failed to import opencv:
2016-05-25 05:35:40,761  No module named cv2
2016-05-25 05:35:40,761  webcam forwarding is disabled
2016-05-25 05:35:40,940 GStreamer version 1.8 for Python 2.7
2016-05-25 05:35:41,196 PyOpenGL warning: missing accelerate module
2016-05-25 05:35:41,196 PyOpenGL warning: missing array format handlers: numeric, vbo, vbooffset
2016-05-25 05:35:41,196 OpenGL Version: 3.0 Mesa 11.2.2
2016-05-25 05:35:41,197 OpenGL support is missing:
2016-05-25 05:35:41,197  PyOpenGL version 3.1 or later is required (found version 3.0.2)
2016-05-25 05:35:41,423 dpix=34, dpiy=96
2016-05-25 05:35:41,424 dpix=34, dpiy=96
2016-05-25 05:35:41,427 dpix=34, dpiy=96
2016-05-25 05:35:41,427 dpix=34, dpiy=96
2016-05-25 05:35:41,428 dpix=34, dpiy=96
2016-05-25 05:35:41,428 dpix=34, dpiy=96
2016-05-25 05:35:41,429 dpix=34, dpiy=96
2016-05-25 05:35:41,430 dpix=34, dpiy=96
2016-05-25 05:35:41,431 keyboard layouts: us,ru
2016-05-25 05:35:41,432 dpix=34, dpiy=96
2016-05-25 05:35:41,432 dpix=34, dpiy=96
2016-05-25 05:35:41,433 dpix=34, dpiy=96
2016-05-25 05:35:41,433 dpix=34, dpiy=96
2016-05-25 05:35:41,434 dpix=34, dpiy=96
2016-05-25 05:35:41,435 dpix=34, dpiy=96
2016-05-25 05:35:41,435 dpix=34, dpiy=96
2016-05-25 05:35:41,436 dpix=34, dpiy=96
2016-05-25 05:35:41,437 dpix=34, dpiy=96
2016-05-25 05:35:41,437 dpix=34, dpiy=96
2016-05-25 05:35:41,438 dpix=34, dpiy=96
2016-05-25 05:35:41,439 dpix=34, dpiy=96
2016-05-25 05:35:41,440 dpix=34, dpiy=96
2016-05-25 05:35:41,440 dpix=34, dpiy=96
2016-05-25 05:35:41,441 dpix=34, dpiy=96
2016-05-25 05:35:41,441 dpix=34, dpiy=96
2016-05-25 05:35:41,442 dpix=34, dpiy=96
2016-05-25 05:35:41,442 dpix=34, dpiy=96
2016-05-25 05:35:41,443 dpix=34, dpiy=96
2016-05-25 05:35:41,443 dpix=34, dpiy=96
2016-05-25 05:35:41,444 dpix=34, dpiy=96
2016-05-25 05:35:41,444 dpix=34, dpiy=96
2016-05-25 05:35:41,445 dpix=34, dpiy=96
2016-05-25 05:35:41,445 dpix=34, dpiy=96
2016-05-25 05:35:41,483  detected keyboard: rules=evdev, model=pc105, layout=us,ru
2016-05-25 05:35:41,487 get_number_of_desktops() 05000000=5
2016-05-25 05:35:41,487 get_desktop_names() d180d0b0d0b1d0bed187d0b8d0b920d181d182d0bed0bb203100d180d0b0d0b1d0bed187d0b8d0b920d181d182d0bed0bb203200d180d0b0d0b1d0bed187d0b8d0b920d181d182d0bed0bb203300d180d0b0d0b1d0bed187d0b8d0b920d181d182d0bed0bb203400d180d0b0d0b1d0bed187d0b8d0b920d181d182d0bed0bb203500=['\xd1\x80\xd0\xb0\xd0\xb1\xd0\xbe\xd1\x87\xd0\xb8\xd0\xb9 \xd1\x81\xd1\x82\xd0\xbe\xd0\xbb 1', '\xd1\x80\xd0\xb0\xd0\xb1\xd0\xbe\xd1\x87\xd0\xb8\xd0\xb9 \xd1\x81\xd1\x82\xd0\xbe\xd0\xbb 2', '\xd1\x80\xd0\xb0\xd0\xb1\xd0\xbe\xd1\x87\xd0\xb8\xd0\xb9 \xd1\x81\xd1\x82\xd0\xbe\xd0\xbb 3', '\xd1\x80\xd0\xb0\xd0\xb1\xd0\xbe\xd1\x87\xd0\xb8\xd0\xb9 \xd1\x81\xd1\x82\xd0\xbe\xd0\xbb 4', '\xd1\x80\xd0\xb0\xd0\xb1\xd0\xbe\xd1\x87\xd0\xb8\xd0\xb9 \xd1\x81\xd1\x82\xd0\xbe\xd0\xbb 5']
2016-05-25 05:35:41,488 get_screen_sizes(1.000000, 1.000000) found 1 screens
2016-05-25 05:35:41,488  screen 0 has 3 monitors
2016-05-25 05:35:41,488  workareas: []
2016-05-25 05:35:41,489  number of monitors does not match number of workareas!
2016-05-25 05:35:41,489  monitor 0: ['', 0, 0, 1920, 1080, 477, 268]
2016-05-25 05:35:41,489  monitor 1: ['', 1920, 180, 1600, 900, 310, 174]
2016-05-25 05:35:41,489  monitor 2: ['', 3520, 0, 1920, 1080, 477, 268]
2016-05-25 05:35:41,490 get_workarea()=<type 'str'>, len=80
2016-05-25 05:35:41,490 get_workarea() 24000000000000001c15000038040000=(36, 0, 5404, 1080)
2016-05-25 05:35:41,490  workarea=(36, 0, 5404, 1080)
2016-05-25 05:35:41,490  screen 0: (':0.0', 5440, 1080, 1439, 285, [('', 0, 0, 1920, 1080, 477, 268), ('', 1920, 180, 1600, 900, 310, 174), ('', 3520, 0, 1920, 1080, 477, 268)], 36, 0, 5404, 1080)
2016-05-25 05:35:41,490  desktop size is 5440x1080 with 1 screen:
2016-05-25 05:35:41,491   :0.0 (1439x285 mm - DPI: 96x96) workarea: 5404x1080 at 36x0
2016-05-25 05:35:41,491     monitor 1 1920x1080 (477x268 mm - DPI: 102x102)
2016-05-25 05:35:41,491     monitor 2 1600x900 at 1920x180 (310x174 mm - DPI: 131x131)
2016-05-25 05:35:41,491     monitor 3 1920x1080 at 3520x0 (477x268 mm - DPI: 102x102)
2016-05-25 05:35:41,491 dpi: 192, xdpi=192, ydpi=192
2016-05-25 05:35:41,492 get_vrefresh()=60
2016-05-25 05:35:41,493 get_antialias_info()={}
2016-05-25 05:35:42,596 Xpra X11 server version 0.18.0-r12578
2016-05-25 05:35:42,597  running on Linux debian stretch/sid
2016-05-25 05:35:42,597 enabled remote logging
2016-05-25 05:35:42,598 Attached to ssh:user@server:12323:100 (press Control-C to detach)

Wed, 25 May 2016 03:44:49 GMT - psycho_zs:

So, the client seem to take physical monitors' info into account somehow. This data is just garbage and has no real application anywhere, it should be ignored.


Wed, 25 May 2016 07:12:07 GMT - Antoine Martin:

There another occurrence of the bug #1193, causing the DPI to get doubled when used in the config file or command line. You didn't attach the config file, but from what I am seeing, you must have set dpi=96 in there.


So, the client seem to take physical monitors' info into account somehow.


On X11, the xpra client uses the first valid value it finds from:


This data is just garbage and has no real application anywhere, it should be ignored.


Unfortunately, that is just not the case: the whole point the dummy driver patches you applied is to emulate this behaviour since that is what a large number of applications use for calculating the DPI. And this is what we use when everything else has failed.


Wed, 25 May 2016 07:55:56 GMT - psycho_zs:

I actually did attach both configs in previous message. Yes, there was dpi=96 in them. Now I removed these lines, same thing happens.

I always set DPI 96 in for my X server, and I've never seen any application that ignored it and used 102 or 131 DPI directly from monitor data. Anyway, how can monitor's physical DPI have any meaning in multimonitor setup? No app or toolkit is able to redraw itself when window is moved between monitors, DPI is always the same for the whole X screen.


Wed, 25 May 2016 08:05:24 GMT - Antoine Martin:

I actually did attach both configs in previous message.


My bad, missed it. BTW, in the future, please use attachments to keep tickets tidy.


I always set DPI 96 in for my X server, and I've never seen any application that ignored it and used 102 or 131 DPI directly from monitor data.


Many applications do this, Java for example, and you may find more on this bug tracker.


Anyway, how can monitor's physical DPI have any meaning in multimonitor setup?


The average value is better than nothing. We also capture the per-monitor DPI, which has a meaning and which we will be able to use with other display servers, just not with X11.

No app or toolkit is able to redraw itself when window is moved between monitors, DPI is always the same for the whole X screen.


Correct for X11.


Wed, 25 May 2016 08:20:03 GMT - psycho_zs:

OK, I've removed --dpi from cli, the only place in xpra where DPI is set is xvfb line in server's xpra.conf. With single monitor and client's X DPI 96 (not monitor's native) everything now works correctly.

Connected second monitor, started new xpra session, got this:

2016-05-25 11:19:11,642 get_number_of_desktops() 05000000=5
2016-05-25 11:19:11,642 get_desktop_names() d180d0b0d0b1d0bed187d0b8d0b920d181d182d0bed0bb203100d180d0b0d0b1d0bed187d0b8d0b920d181d182d0bed0bb203200d180d0b0d0b1d0bed187d0b8d0b920d181d182d0bed0bb203300d180d0b0d0b1d0bed187d0b8d0b920d181d182d0bed0bb203400d180d0b0d0b1d0bed187d0b8d0b920d181d182d0bed0bb203500=['\xd1\x80\xd0\xb0\xd0\xb1\xd0\xbe\xd1\x87\xd0\xb8\xd0\xb9 \xd1\x81\xd1\x82\xd0\xbe\xd0\xbb 1', '\xd1\x80\xd0\xb0\xd0\xb1\xd0\xbe\xd1\x87\xd0\xb8\xd0\xb9 \xd1\x81\xd1\x82\xd0\xbe\xd0\xbb 2', '\xd1\x80\xd0\xb0\xd0\xb1\xd0\xbe\xd1\x87\xd0\xb8\xd0\xb9 \xd1\x81\xd1\x82\xd0\xbe\xd0\xbb 3', '\xd1\x80\xd0\xb0\xd0\xb1\xd0\xbe\xd1\x87\xd0\xb8\xd0\xb9 \xd1\x81\xd1\x82\xd0\xbe\xd0\xbb 4', '\xd1\x80\xd0\xb0\xd0\xb1\xd0\xbe\xd1\x87\xd0\xb8\xd0\xb9 \xd1\x81\xd1\x82\xd0\xbe\xd0\xbb 5']
2016-05-25 11:19:11,642 get_screen_sizes(1.000000, 1.000000) found 1 screens
2016-05-25 11:19:11,642  screen 0 has 2 monitors
2016-05-25 11:19:11,642  workareas: []
2016-05-25 11:19:11,643  number of monitors does not match number of workareas!
2016-05-25 11:19:11,643  monitor 0: ['', 0, 0, 1920, 1200, 518, 324]
2016-05-25 11:19:11,643  monitor 1: ['', 1920, 0, 1600, 900, 310, 174]
2016-05-25 11:19:11,643 get_workarea()=<type 'str'>, len=80
2016-05-25 11:19:11,644 get_workarea() 24000000000000009c0d0000b0040000=(36, 0, 3484, 1200)
2016-05-25 11:19:11,644  workarea=(36, 0, 3484, 1200)
2016-05-25 11:19:11,644  screen 0: (':0.0', 3520, 1200, 929, 317, [('', 0, 0, 1920, 1200, 518, 324), ('', 1920, 0, 1600, 900, 310, 174)], 36, 0, 3484, 1200)
2016-05-25 11:19:11,644  desktop size is 3520x1200 with 1 screen:
2016-05-25 11:19:11,644   :0.0 (929x317 mm - DPI: 96x96) workarea: 3484x1200 at 36x0
2016-05-25 11:19:11,644     monitor 1 1920x1200 (518x324 mm - DPI: 94x94)
2016-05-25 11:19:11,644     monitor 2 1600x900 at 1920x0 (310x174 mm - DPI: 131x131)
2016-05-25 11:19:11,645 dpix=52, dpiy=96
2016-05-25 11:19:11,645 dpix=52, dpiy=96
2016-05-25 11:19:11,645 dpi: 74, xdpi=52, ydpi=96
2016-05-25 11:19:11,647 get_vrefresh()=60
2016-05-25 11:19:11,648 get_antialias_info()={}

52x96, everything is tiny. Why?

Could you please add --ignore-everything-and-set-this-dpi-everywhere-possible= cli option?


Wed, 25 May 2016 08:29:41 GMT - Antoine Martin:

52x96, everything is tiny. Why?


Those numbers look wrong, please post the "-d screen" debug log with latest trunk which includes better debug logging messages. You can also run this command to get the same results:

$ XPRA_SCREEN_DEBUG=1 python -c "from xpra.x11.gtk2 import gdk_display_source;from xpra.platform.xposix import gui;print(gui._get_randr_dpi())"
2016-05-25 15:43:56,150 xdpi=93, ydpi=95 - size-mm=1573x577, size=5760x2160
(93, 95)


Could you please add --ignore-everything-and-set-this-dpi-everywhere-possible= cli option?


That's already the case with the client's "--dpi=XXX" switch as long as you remove all dpi command line arguments to Xdummy and Xvfb (which is the default) and apply the patches (for applications relying on "hardware" dpi). We then set the virtualized physical dpi and all the xrdb settings to match that value.


Wed, 25 May 2016 08:41:03 GMT - psycho_zs:

That's already the case with the client's "--dpi=XXX" switch as long as you remove all dpi command line arguments to Xdummy and Xvfb (which is the default) and apply the patches (for applications relying on "hardware" dpi).

So in theory, only #1193 gets in the way. I'll build and test latest trunk later today.


Wed, 25 May 2016 22:13:30 GMT - psycho_zs:

Yes! With latest trunk and clean configs starting with --desktop-scaling=off --dpi 96 works as expected. Setting dpi = 96 and desktop-scaling = off in xpra.conf also works!

Could you point me to any info on status of upstream adoption of dpi patch in dummy driver?

BTW, build scripts which generate xpra.conf add build dir prefix to "/etc/xpra/xorg.conf" string in xvfb line.


Thu, 26 May 2016 06:03:40 GMT - Antoine Martin: status changed; resolution set

Could you point me to any info on status of upstream adoption of dpi patch in dummy driver?


Upstream is not going to be interested on the DPI patch as it is, because it is quite hackish. The other patches are being pushed though, some have landed already.

Some links:


BTW, build scripts which generate xpra.conf add build dir prefix to "/etc/xpra/xorg.conf" string in xvfb line.


The xvfb line should always contain the path to the xorg.conf that was installed with the xpra.conf. And as far as I can tell, it is the case. If you run "./setup.py build" then the path in build will be relative to the current working directory. You can also try: ./setup.py install --home=./install, etc... Doesn't look like a bug in trunk to me (though #977 was fixed quite recently).


Thu, 26 May 2016 06:17:20 GMT - psycho_zs:

I've built debian package using infrastructure from the trunk (https://xpra.org/svn/Xpra/trunk/debian/). Perhaps some faulty interaction between packaging scripts and setup.py results in full path from temporary build environment being put in final config.

Were DPI patches ever proposed for Debian? If not, I will file a bug there (At least I do not see any current related bugs against xserver-xorg-video-dummy)


Thu, 26 May 2016 06:47:38 GMT - Antoine Martin:

I've built debian package using infrastructure from the trunk..


Gotcha: fixed in r12685


Tue, 31 May 2016 18:47:33 GMT - ctaggart:

I built new Debian Jessie packages with the three patches applied: https://github.com/ctaggart/xserver-xorg-video-dummy/releases/tag/1_0.3.7-1.1

Now I just need to install and test with the correct server and client switches. Which switches should I use on the client or server?


Wed, 01 Jun 2016 02:30:23 GMT - Antoine Martin:

If you have all the bits installed, you should not need any dpi flags anywhere, remove them if present in your config file and your xvfb command.


Wed, 01 Jun 2016 06:27:45 GMT - ctaggart:

Success! No dpi flags are set. On the client, I had to attach with --desktop-scaling=off.

xpra attach --desktop-scaling=off tcp:127.0.0.1:6100

After that, I checked the resolution on the server and it reported 72 dpi.

dpyinfo | grep resolution resolution: 72x72 dots per inch

I installed my build for Debian Jessie like so:

curl -L -O https://github.com/ctaggart/xserver-xorg-video-dummy/releases/download/1_0.3.7-1.1/xserver-xorg-video-dummy_0.3.7-1.1_amd64.deb dpkg -i xserver-xorg-video-dummy_0.3.7-1.1_amd64.deb

I verified it was installed with:

dpkg -s xserver-xorg-video-dummy | grep Version

The resolution looks much better on my iMac now. Thanks!


Wed, 01 Jun 2016 06:31:57 GMT - Antoine Martin:

If someone finds the time: #1215.


Tue, 12 Jul 2016 16:52:22 GMT - Antoine Martin: milestone changed

Milestone renamed


Tue, 07 Apr 2020 08:24:43 GMT - Antoine Martin:

More DPI issues and regressions: #2610.


Sat, 23 Jan 2021 05:17:47 GMT - migration script:

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