Uploaded image for project: 'Apache Guacamole - Contributions'
  1. Apache Guacamole - Contributions
  2. GUAC-823

Cursor CSS3 image instead of canvas image

    XMLWordPrintable

    Details

    • Sprint:
      DEV 2014-10-24
    • Story Points:
      3

      Description

      Preface:
      After experiencing long lags of cursor rendering on Chrome on systems with multiple monitors, we came up with a solution that we are about to deploy soon.It solves a major usability issue for some of our users.

      Problem:
      Cursor seem to "drag" or "lag behind" the real cursor position. Profiling with Chrome's devtools discovered this is not a code issue, but a browser issue - because frames took a long time to draw mainly on "idle" time (browser time).

      Solution:
      Using CSS3 cursor styling, you can set the cursor image and hotspot coordinates. This is not supported in IE, since IE requires .ani or .cur image formats and the Guacamole client receives .png images. By using feature detection we can fall back to previous behavior.
      In the worse cases this solved major usability issues, but in the general case it made the client feel a lot faster since there's a bit of lag on other browsers as well.

      Caveats:
      The client's behavior has changed: a cursor is no longer seen on the screen if the user isn't hovering over the display area. Since we haven't integrated Guacamole into mobile in our platform yet this was not tested, maybe the new behavior should be disabled on mobile.

      A patch file is attached that is applicable for version 0.9.1

      Notes:
      In our client, we show the cursor if the CSS3 cursor styling is supported. This can be done by querying Guacamole.Display with the new method isCursorStylingSupported()

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              mike.jumper Michael Jumper
              Reporter:
              sadanjon Jonathan Sadan
              Votes:
              3 Vote for this issue
              Watchers:
              5 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: