Details
-
New Feature
-
Status: In Progress
-
Major
-
Resolution: Unresolved
-
None
-
None
-
None
Description
It's been frequently requested that we add support for a more efficient protocol like NX or X2Go. Though that sounds nice on the surface, and theoretically would allow us to leverage some of Guacamole's nicer protocol-level features, investigating deeper reveals:
- X2Go is NX - it uses the same protocol behind the scenes.
- NX isn't really a protocol - it is essentially a compressor for X11, and depends on the client having a local X11 server to handle the decompressed result.
Implementing support for either of these would thus involve implementing support for X11, which is crazy. However:
What about implementing a driver for the X.Org X11 server?
The X.Org server provides a driver abstraction layer which exposes access to windows (including their hierarchy) and pixmaps, much in the same way the Guacamole protocol provides nestable layers and buffers. If we were to implement a Guacamole driver for X.Org, we would be able to make much greater use Guacamole protocol features like client-side compositing. Operations which are typically expensive in VNC or RDP like window movement suddenly become simple, as they only involve updating the properties of a layer.
I have an experimental implementation of all this, built upon several other improvements which ended up being required. Work started several years ago, even before Guacamole was accepted into the Apache Incubator, but I think it's finally ready to move forward. I've been using it myself for roughly a month now, and so far so good.
Attachments
Attachments
Issue Links
- depends upon
-
GUACAMOLE-172 Calculation of processing lag (potentially) incorrect
- Resolved
-
GUACAMOLE-178 Shared cursor can be obscured by other layers
- Resolved
-
GUACAMOLE-184 guac_common_surface_dup() may send invalid PNG
- Resolved
-
GUACAMOLE-185 Source rectangle for transfer/copy not properly clipped
- Resolved
-
GUACAMOLE-169 Use namespace for common utility headers
- Resolved
-
GUACAMOLE-171 Bring broadcast socket into public libguac API
- Resolved
-
GUACAMOLE-175 Move core of guacd into utility library
- Resolved
-
GUACAMOLE-176 Support layer position and opacity in guac_common_surface
- Resolved
-
GUACAMOLE-177 Update layer properties only on flush
- Resolved
-
GUACAMOLE-179 Move PulseAudio support into utility library
- Resolved
-
GUACAMOLE-180 Common display/surface should be threadsafe
- Resolved
-
GUACAMOLE-187 Improve performance of layer/surface resize
- Resolved
-
GUACAMOLE-189 Add support for per-connection guacd
- Resolved
-
GUACAMOLE-170 Always initialize guac_client args
- Resolved
- is related to
-
GUACAMOLE-188 Support alpha transparency in guac_common_surface
- Resolved
-
GUACAMOLE-577 Add Proxy Hostname and Port to LDAP Extension
- Closed