TurboVNC is a high-speed version of VNC derived from TightVNC. It contains a variant of Tight encoding that is tuned to maximize performance for image- intensive applications (such as VirtualGL, video applications, and image editors) while still providing excellent performance for other types of applications.

TurboVNC, in combination with VirtualGL, provides a complete solution for remotely displaying 3D applications with interactive performance.

TurboVNC is the product of extensive research, in which many different permutations of the TightVNC encoder were benchmarked at the low level against a variety of captured RFB sessions that simulate real-world application workloads, both 2D and 3D. TurboVNC's encoding methods have been adopted by TigerVNC, libvncserver, and others.

Features

  • Fine-grained control over the JPEG image quality and the level of chrominance subsampling
  • Double buffering on the client side to reduce tearing artifacts in 3D and video applications
  • Flexible and configurable full-screen/multi-screen support
  • Full support for IPv6
  • Advanced flow control and continuous updates. This allows clients to receive framebuffer updates without specifically requesting them, which can improve performance dramatically on high-latency connections.
  • Authentication with one-time passwords or Unix login credentials. Access control lists can be used to share VNC sessions with only certain users.
  • TurboVNC allows security/authentication policies to be set globally for a particular server machine.
  • Multithreaded Tight encoding
  • "Lossless refresh" allows a viewer to request a lossless copy of the current screen image. This is useful in situations in which image quality is critical but the network is too slow to support sending a high-quality image for every frame. Lossless refreshes can be performed manually when a certain hotkey is pressed, or the TurboVNC Server can be configured to send a lossless refresh automatically if the user stops interacting with the application for a certain period of time.
  • A high-performance Java viewer, deployable using Java Web Start. This viewer is based on the TigerVNC Java viewer but has numerous additional features, the most notable of which is the ability to accelerate JPEG decompression by calling libjpeg-turbo through JNI. This gives the Java TurboVNC Viewer similar levels of performance to the native TurboVNC Viewer.

On "modern" hardware, TurboVNC is capable of streaming 50+ Megapixels/second over a 100 Megabit/second local area network with perceptually lossless image quality. TurboVNC can stream between 10 and 12 Megapixels/second over a 5 Megabit/second broadband connection at reduced (but usable) image quality.

TurboVNC is compatible with other VNC distributions, particularly with those that also support Tight encoding (such as TigerVNC, TightVNC, and UltraVNC.)

What's New

Significant changes relative to 3.1:

  • By default, each instance of the Linux TurboVNC Server now listens on the abstract Unix domain socket, in addition to the pathname Unix domain socket (under /tmp/.X11-unix), associated with its X display number. This prevents recent versions of GDM, when configured with WaylandEnable=false, from attempting to use Display :1 for the local session if a TurboVNC session is already using Display :1. The previous behavior can be restored by passing -nolisten local to vncserver or adding -nolisten local to the $serverArgs variable in turbovncserver.conf.
  • The vncserver script now checks whether the abstract Unix domain socket associated with an X display number is in use before assuming that the display number is available.
  • Fixed an issue in the Windows TurboVNC Viewer whereby an F10 key press, followed by an F10 key release, caused the keyboard focus to be redirected to the system menu, and subsequent keystrokes were consumed by the system menu until F10, left Alt, or Esc was pressed to dismiss the menu.
  • Fixed an issue whereby GTK applications (including the GNOME window manager) running in a TurboVNC session attempted to display to a local Wayland session if one was active.