Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HTML5 Client shows shifted and partial xfce4 desktop #4

Closed
totaam opened this issue Oct 18, 2020 · 12 comments
Closed

HTML5 Client shows shifted and partial xfce4 desktop #4

totaam opened this issue Oct 18, 2020 · 12 comments

Comments

@totaam
Copy link
Collaborator

totaam commented Oct 18, 2020

Issue migrated from trac ticket # 2909

component: html5 | priority: major

2020-10-18 14:53:37: goekce created the issue


Version: xpra v4.1-r27688

After I connect through Xpra proxy, I get the the screenshot attached. It is not possible to scroll to the bottom of the screen and the desktop seems to be shifted on the top.

Do you have an idea where the problem could be?

@totaam
Copy link
Collaborator Author

totaam commented Oct 18, 2020

2020-10-18 14:54:16: goekce uploaded file 2909-screenshot.png (112.2 KiB)

2909-screenshot.png

@totaam
Copy link
Collaborator Author

totaam commented Oct 18, 2020

After I connect through Xpra proxy...

Are you sure that connecting through the proxy makes any difference at all?

Please include the server log, which will show the client's resolution.
-d geometry,screen may provide more details.

@totaam
Copy link
Collaborator Author

totaam commented Oct 18, 2020

2020-10-18 15:33:56: goekce commented


When I connect without proxy, the rendering is ok.:

xpra start-desktop --start-child=xfce4-session --bind-tcp=0.0.0.0:14500 --exit-with-client --exit-with-children --systemd-run=no

When I use proxy with xfce4-session I get the following notification which I forgot in the description. Sorry for that:

DPI is set to 15x15 (wanted 96x96) you may experience scaling problems, ...

Here is the log which contains the screen resolution:

Current version of pixman: 0.40.0
	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: "/run/user/36549/xpra/Xorg.S18668.log", Time: Sun Oct 18 16:25:32 2020
(++) Using config file: "/etc/xpra/xorg.conf"
(==) Using system config directory "/usr/share/X11/xorg.conf.d"
16:25:38,456 created unix domain socket '/run/user/36549/xpra/server_hostname-0'
16:25:38,457 created unix domain socket '/run/xpra/server_hostname-0'
16:25:38,563 pointer device emulation using XTest
16:25:38,638 serving html content from '/usr/share/xpra/www'
16:25:38,990 failed to connect to avahi's dbus interface: org.freedesktop.systemd1.NoSuchUnit: Unit dbus-org.freedesktop.Avahi.service not found.
16:25:38,990  to avoid this warning, disable mdns support 
16:25:38,990  using the 'mdns=no' option
16:25:38,997 D-Bus notification forwarding is available
16:25:39,018 pulseaudio not started: 'pulseaudio' command not found

(Xpra:18677): Gtk-CRITICAL **: 16:25:39.102: gtk_widget_realize: assertion 'widget->priv->anchored || GTK_IS_INVISIBLE (widget)' failed
16:25:39,111 Warning: webcam forwarding is disabled
16:25:39,111  the virtual video directory '/sys/devices/virtual/video4linux' was not found
16:25:39,111  make sure that the 'v4l2loopback' kernel module is installed and loaded
16:25:39,111  or use the 'webcam=no' option
16:25:39,112 found 0 virtual video devices for webcam forwarding
16:25:39,120 Warning: cannot watch for application menu changes without pyinotify:
16:25:39,120  No module named 'pyinotify'
gpg-agent[18780]: WARNING: "--write-env-file" is an obsolete option - it has no effect
gpg-agent: a gpg-agent is already running - not starting a new one

(xfce4-session:18765): xfce4-session-WARNING **: 16:25:39.197: gpg-agent returned no PID in the variables

(xfce4-session:18765): xfce4-session-WARNING **: 16:25:39.202: xfsm_manager_load_session: Something wrong with /home/user/.cache/sessions/xfce4-session-server_hostname:0, Does it exist? Permissions issue?
16:25:39,214 Error parsing xdg menu data:
16:25:39,215  ParsingError in file '/etc/xdg/menus/kde-applications.menu', File not found
16:25:39,215  this is either a bug in python-xdg,
16:25:39,219  or an invalid system menu configuration
xfwm4-Message: 16:25:39.289: Another Window Manager (Xpra) is already running on screen :0.0
xfwm4-Message: 16:25:39.289: To replace the current window manager, try "--replace"

(xfwm4:18782): xfwm4-WARNING **: 16:25:39.289: Could not find a screen to manage, exiting
16:25:39,302 251.9GB of system memory
16:25:39,511 xpra is ready.
16:25:39,511 xpra GTK3 X11 version 4.1-[r27685](../commit/66620a142ce5d4870414a44d67ad573d2302201e) 64-bit
xfsettingsd-Message: 16:25:39.529: Skipping screen 0, it already has an xsettings manager...
16:25:39,559  uid=36549 (user), gid=10001 (students)
16:25:39,559  running with pid 18677 on Linux unknown unknown unknown
16:25:39,559  connected to X11 display :0 with 24 bit colors
Warning: failed to query pulseaudio using 'pactl info'
 Connection failure: Connection refused
 pa_context_connect() failed: Connection refused
Warning: failed to query pulseaudio using 'pactl info'
 Connection failure: Connection refused
 pa_context_connect() failed: Connection refused
16:25:39,630 GStreamer version 1.18.0 for Python 3.8.6 64-bit
16:25:39,667 Warning: failed to query pulseaudio using 'pactl info'
16:25:39,667  Connection failure: Connection refused
16:25:39,667  pa_context_connect() failed: Connection refused
16:25:39,769 Odd-lengthed property _NET_WM_STRUT or _NET_WM_STRUT_PARTIAL: wanted 48 bytes, got 96: b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\x1f\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
16:25:39,772 Error parsing xdg menu data:
16:25:39,772  ParsingError in file '/etc/xdg/menus/kde-applications.menu', File not found
16:25:39,772  this is either a bug in python-xdg,
16:25:39,772  or an invalid system menu configuration

-* (wrapper-2.0:18831): WARNING **: 16:25:39.877: No outputs have backlight property

(wrapper-2.0:18831): Gtk-WARNING **: 16:25:39.938: Negative content width -3 (allocation 1, extents 2x2) while allocating gadget (node button, owner PowerManagerButton)

(wrapper-2.0:18833): Gtk-WARNING **: 16:25:39.942: Negative content width -1 (allocation 1, extents 1x1) while allocating gadget (node button, owner XfceArrowButton)
16:25:39,951 New unix-domain connection received
16:25:39,951  on '/run/xpra/server_hostname-0'

(wrapper-2.0:18834): Gtk-WARNING **: 16:25:40.050: Negative content width -1 (allocation 1, extents 1x1) while allocating gadget (node button, owner GtkButton)
16:25:40,147 New unix-domain connection received
16:25:40,147  on '/run/user/36549/xpra/server_hostname-0'
16:25:40,149 Handshake complete; enabling connection
16:25:40,171 HTML5 Posix Firefox client version 4.1-[r27685](../commit/66620a142ce5d4870414a44d67ad573d2302201e)
16:25:40,171   as 'user'
16:25:40,171  via Linux 5.9.1-arch1-1 proxy version 4.1 on 'server_hostname'
16:25:40,176 setting keyboard layout to 'us'
16:25:40,298  client root window size is 1916x967 with 1 display:
16:25:40,298   HTML (507x256 mm - DPI: 95x95)
16:25:40,299     Canvas
16:25:40,304 Error writing fake xinerama file '/root/.None-fakexinerama':
16:25:40,304  [Errno 13] Permission denied: '/root/.None-fakexinerama'
16:25:40,304 Error writing fake xinerama file '/root/.fakexinerama':
16:25:40,304  [Errno 13] Permission denied: '/root/.fakexinerama'
16:25:40,377 server virtual display now set to 1856x960 (best match for 1916x967)
16:25:40,440 Error parsing xdg menu data:
16:25:40,440  ParsingError in file '/etc/xdg/menus/kde-applications.menu', File not found
16:25:40,440  this is either a bug in python-xdg,
16:25:40,440  or an invalid system menu configuration
16:25:40,472 client   1 received xdg start menu data
16:25:40,500 client   1 startup complete
16:25:40,500 client   1 connection-established
16:25:40,512 Odd-lengthed property _NET_WM_STRUT or _NET_WM_STRUT_PARTIAL: wanted 48 bytes, got 96: b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x1b\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00?\x07\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
16:25:40,513 Error parsing property '_NET_WM_STRUT_PARTIAL' (strut-partial)
16:25:40,513  this may be a misbehaving application, or bug in Xpra
16:25:40,513  data length=96
16:25:40,513  data: "b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x .. x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00'"
Traceback (most recent call last):
  File "/usr/lib/python3.8/site-packages/xpra/x11/gtk_x11/prop.py", line 169, in prop_get
    return prop_decode(target, etype, data)
  File "/usr/lib/python3.8/site-packages/xpra/x11/prop_conv.py", line 309, in prop_decode
    return _prop_decode_scalar(disp, etype, data)
  File "/usr/lib/python3.8/site-packages/xpra/x11/prop_conv.py", line 313, in _prop_decode_scalar
    value = deserialize(disp, data)
  File "/usr/lib/python3.8/site-packages/xpra/x11/prop_conv.py", line 68, in __init__
    ) = struct.unpack(b"@" + b"L" * 12, data)
struct.error: unpack requires a buffer of 96 bytes
Traceback (most recent call last):
  File "/usr/lib/python3.8/site-packages/xpra/x11/models/window.py", line 372, in do_xpra_property_notify_event
    super().do_xpra_property_notify_event(event)
  File "/usr/lib/python3.8/site-packages/xpra/x11/models/core.py", line 509, in do_xpra_property_notify_event
    self._handle_property_change(str(event.atom))
  File "/usr/lib/python3.8/site-packages/xpra/x11/models/core.py", line 543, in _handle_property_change
    handler(self)
  File "/usr/lib/python3.8/site-packages/xpra/x11/models/base.py", line 346, in _handle_wm_strut_change
    strut = self.prop_get("_NET_WM_STRUT_PARTIAL", "strut-partial")
  File "/usr/lib/python3.8/site-packages/xpra/x11/models/core.py", line 503, in prop_get
    return prop_get(self.client_window, key, ptype, ignore_errors=bool(ignore_errors), raise_xerrors=raise_xerrors)
  File "/usr/lib/python3.8/site-packages/xpra/x11/gtk_x11/prop.py", line 169, in prop_get
    return prop_decode(target, etype, data)
  File "/usr/lib/python3.8/site-packages/xpra/x11/prop_conv.py", line 309, in prop_decode
    return _prop_decode_scalar(disp, etype, data)
  File "/usr/lib/python3.8/site-packages/xpra/x11/prop_conv.py", line 313, in _prop_decode_scalar
    value = deserialize(disp, data)
  File "/usr/lib/python3.8/site-packages/xpra/x11/prop_conv.py", line 68, in __init__
    ) = struct.unpack(b"@" + b"L" * 12, data)
struct.error: unpack requires a buffer of 96 bytes
16:25:40,534 DPI set to 15 x 15 (wanted 96 x 96)
16:25:40,535  you may experience scaling problems, such as huge or small fonts, etc
16:25:40,535  to fix this issue, try the dpi switch, or use a patched Xorg dummy driver
16:25:40,591 OpenGL is supported on display ':0'
16:25:40,591  using 'llvmpipe (LLVM 10.0.1, 256 bits)' renderer
16:25:40,591  automatic picture encoding enabled, also available:
16:25:40,591   jpeg, png, rgb32, rgb24, h264, mpeg1
16:25:40,601 client   1 update encodings: [object Object]
16:25:40,617 New unix-domain connection received
16:25:40,617  on '/run/user/36549/xpra/server_hostname-0'
16:25:40,618 New unix-domain connection received
16:25:40,618  on '/run/xpra/server_hostname-0'
16:25:41,051 New unix-domain connection received
16:25:41,051  on '/run/xpra/server_hostname-0'
16:25:41,053 New unix-domain connection received
16:25:41,053  on '/run/user/36549/xpra/server_hostname-0'
16:25:47,376 client   1 visibilitychange hidden= true connected= true

@totaam
Copy link
Collaborator Author

totaam commented Oct 21, 2020

2020-10-21 16:24:03: goekce commented


I use an nginx reverse proxy. I thought the reverse proxy would corrupt data, but it does not. When I start directly an xpra session on the command line using

xpra start-desktop --start-child=xfce4-session --bind-tcp=0.0.0.0:14500 --exit-with-client=yes --exit-with-children=yes --systemd-run=no

then Xfce4 session is displayed correctly.

I diffed the logs of the xpra-server started by the user with the logs of the server started by the proxy. The relevant lines in the log of the xpra-server started by the xpra proxy as follows:

(Xpra:6637): Gtk-CRITICAL **: 16:52:59.100: gtk_widget_realize: assertion 'widget->priv->anchored || GTK_IS_INVISIBLE (widget)' failed
xfwm4-Message: 16:52:59.558: Another Window Manager (Xpra) is already running on screen :0.0
xfwm4-Message: 16:52:59.558: To replace the current window manager, try "--replace"

(xfwm4:6757): xfwm4-WARNING **: 16:52:59.558: Could not find a screen to manage, exiting
xfsettingsd-Message: 16:52:59.643: Skipping screen 0, it already has an xsettings manager...
2020-10-21 16:52:59,800 Odd-lengthed property _NET_WM_STRUT or _NET_WM_STRUT_PARTIAL: wanted 48 bytes, got 96: b'\x00\x00 ...
...
...
...
2020-10-21 16:53:01,190 Error parsing property '_NET_WM_STRUT_PARTIAL' (strut-partial)
2020-10-21 16:53:01,190  this may be a misbehaving application, or bug in Xpra
2020-10-21 16:53:01,190  data length=96
2020-10-21 16:53:01,191  data: "b'\\x00\\x00\\x00\ ...
...
Traceback (most recent call last):
  File "/usr/lib/python3.8/site-packages/xpra/x11/models/window.py", line 372, in do_xpra_property_notify_event
    super().do_xpra_property_notify_event(event)
  File "/usr/lib/python3.8/site-packages/xpra/x11/models/core.py", line 509, in do_xpra_property_notify_event
    self._handle_property_change(str(event.atom))
  File "/usr/lib/python3.8/site-packages/xpra/x11/models/core.py", line 543, in _handle_property_change
    handler(self)
  File "/usr/lib/python3.8/site-packages/xpra/x11/models/base.py", line 346, in _handle_wm_strut_change
    strut = self.prop_get("_NET_WM_STRUT_PARTIAL", "strut-partial")
  File "/usr/lib/python3.8/site-packages/xpra/x11/models/core.py", line 503, in prop_get
    return prop_get(self.client_window, key, ptype, ignore_errors=bool(ignore_errors), raise_xerrors=raise_xerrors)
  File "/usr/lib/python3.8/site-packages/xpra/x11/gtk_x11/prop.py", line 169, in prop_get
    return prop_decode(target, etype, data)
  File "/usr/lib/python3.8/site-packages/xpra/x11/prop_conv.py", line 309, in prop_decode
    return _prop_decode_scalar(disp, etype, data)
  File "/usr/lib/python3.8/site-packages/xpra/x11/prop_conv.py", line 313, in _prop_decode_scalar
    value = deserialize(disp, data)
  File "/usr/lib/python3.8/site-packages/xpra/x11/prop_conv.py", line 68, in __init__
    ) = struct.unpack(b"@" + b"L" * 12, data)
struct.error: unpack requires a buffer of 96 bytes
2020-10-21 16:53:01,207 client   1 startup complete
2020-10-21 16:53:01,209 client   1 connection-established
2020-10-21 16:53:01,220 DPI set to 96 x 96

My guess is that proxy starts the server with different resolution and DPI setting. Is there a difference?

@totaam
Copy link
Collaborator Author

totaam commented Oct 21, 2020

2020-10-21 16:52:54: goekce commented


I was using Xfvb due to keyboard layout issues and changed to Xorg for testing.

Xpra logs show

DPI set to 4 x 15 (wanted 96 x 96)

and the screen is again shifted as before.

I noticed that if I try to start xpra as a user I cannot start it at all:

X11 connection rejected because of wrong authentication.
Unable to init server: Could not connect: Connection refused

But this seems to be another problem.

I will try to enforce the DPI to see if it solves the desktop shifting problem.

@totaam
Copy link
Collaborator Author

totaam commented Oct 21, 2020

2020-10-21 19:38:11: goekce commented


The DPI problem was solved by installing the patched dummy driver (on Archlinux xf86-video-dummy-xpra-patch).

But the actual problem remains. My workaround is currently to avoid the start-desktop command and start a terminal directly.

I also noticed that when I start xfce4-panel using terminal, then my clicks on the panel are not registered. Probably the problem is associated with the proxy and to a desktop-specific program like xfce4-panel.

@totaam totaam transferred this issue from Xpra-org/xpra Jan 22, 2021
@toby63
Copy link

toby63 commented Jun 23, 2021

I also notice a similar problem when using the Shadow Server on a Windows 10 host.

No matter which device I use as client (e.g. Android Tablet, Windows PC, Linux PC), the display only shows the middle of the original screen, all other parts (top, bottom, left, right) are missing.

@totaam
Copy link
Collaborator Author

totaam commented Jun 24, 2021

@toby63 your issue is different: the shadow server uses a fixed size and the html5 client does not do scaling.

@toby63
Copy link

toby63 commented Jun 24, 2021

@toby63 your issue is different: the shadow server uses a fixed size and the html5 client does not do scaling.

Interesting, thx. Any workaround for this, or will scaling maybe be implemented in the future?

@totaam
Copy link
Collaborator Author

totaam commented Jun 25, 2021

Interesting, thx. Any workaround for this, or will scaling maybe be implemented in the future?

I have limited time to look into this, but creating a new ticket might help move things along.
@basilgello is more knowledgeable than me in this area.

@basilgello
Copy link
Contributor

basilgello commented Jun 25, 2021 via email

@totaam
Copy link
Collaborator Author

totaam commented May 4, 2022

It's very likely that this problem will just go away by using xpra server version 4.4 or later with the dummy driver version 0.4.0 or later.
Details in Xpra-org/xpra#56

@totaam totaam closed this as completed Aug 7, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants