Skip to content

2.2.90 (3.0 beta1)

Pre-release
Pre-release
Compare
Choose a tag to compare
@dcommander dcommander released this 22 Dec 07:00
· 316 commits to main since this release

Assets

Support

Code Quality: Beta
Current Support Category: EOL

Documentation

User’s Guide for TurboVNC 3.0 (Beta)

Release Notes

Significant changes relative to 2.2.7:

  1. A custom JRE, based on OpenJDK and containing only the modules that the TurboVNC Viewer needs, can now optionally be included in 32-bit Windows and 64-bit Linux, Mac, and Windows TurboVNC installations and packages by setting the TVNC_INCLUDEJRE CMake variable to 1. When including a custom JRE, OpenJDK 11 or later must be used.

    Since it is now possible to package the Windows/Java TurboVNC Viewer in such a way that it does not require a separate installation of Java, the native Windows TurboVNC Viewer has been retired and replaced with the Java TurboVNC Viewer, which means that the Java TurboVNC Viewer is now the only TurboVNC Viewer. The native Windows viewer will continue to be maintained in TurboVNC 2.2.x on a break/fix basis only. The native Windows viewer, owing to its use of raw Win32 GUI code rather than a modern GUI framework, has become difficult to maintain and even more difficult to extend. Meanwhile, the Java viewer provides similar levels of performance and more features, including some features (TLS encryption and SSH tunneling, most notably) that would have been difficult to implement in the native viewer.

    Retiring the Windows TurboVNC Viewer has resulted in the following (hopefully temporary) feature regressions for Windows clients, relative to TurboVNC 2.2.x:

    • The ability to set different viewer options for each VNC server
    • The ability to save connection info files
    • 3-button mouse emulation
    • Bump scrolling in full-screen mode
    • Wacom tablet support (although the Windows TurboVNC Viewer, owing to its use of the Wintab API, only supported older Wacom tablets)
  2. Added a screenshot feature to the TurboVNC Viewer that allows an image of the remote desktop to be saved to the client machine.

  3. Added a window tiling feature to the TurboVNC Viewer that automatically arranges all viewer windows in a grid pattern when a hotkey is pressed or an option is selected in the F8 or Mac menu.

  4. The TurboVNC Viewer can now automatically connect to multiple VNC servers, applying a different set of options for each. This is accomplished by separating the command-line arguments for each VNC server with --.

  5. The TurboVNC Viewer now includes the TurboVNC Session Manager, which allows users to remotely manage multiple TurboVNC sessions running on a particular TurboVNC host. If no display number or port is specified in the "VNC server" field, the TurboVNC Viewer will connect to the specified TurboVNC host using SSH, list all TurboVNC sessions running under the user's account, and display a dialog that allows the user to choose a session to which to connect, kill any of the sessions, generate a new OTP for any of the sessions, or start a new session. Previously, the TurboVNC Viewer defaulted to Display :0/Port 5900 when no display number or port was specified, but it is now necessary to specify :0 or ::5900 in order to connect to Display :0/Port 5900. The TurboVNC Session Manager uses the TurboVNC Viewer's built-in SSH client (it cannot use an external SSH client because of the need to leave the SSH session open and reuse it to run multiple commands), so it is affected by the SSHConfig, SSHKey, SSHKeyFile, SSHKeyPass, and SSHPort parameters.

  6. The zero-install Java Web Start feature and built-in HTTP server in the TurboVNC Server have been removed, along with the corresponding vncserver command-line option (-nohttpd), Xvnc command-line options (-httpd and -httpport), security configuration file directive (no-httpd), and turbovncserver.conf variables ($enableHTTP and $vncClasses.) This reflects the fact that Java Web Start is now a legacy technology. JWS is no longer provided in Java 11 and later, so once Java 8 stops receiving public updates, the ability to deploy the TurboVNC Viewer using JWS will be limited. These features will continue to be supported in TurboVNC 2.2.x on a break/fix basis.

  7. MinGW can now be used instead of Visual C++ when building the TurboVNC Viewer (more specifically, the TurboVNC Helper library) for Windows.

  8. The TurboVNC Viewer authentication dialog will now indicate whether the connection is encrypted, unencrypted, or redundantly encrypted.

  9. The vncserver script can now optionally start a simple web server that serves up noVNC (an HTML 5/JavaScript VNC viewer) along with each TurboVNC session, using a new command-line option (-novnc) or turbovncserver.conf variable ($noVNC) to specify the noVNC installation directory. The vncserver script also creates a unique PID file for the noVNC web server process and kills that process when the TurboVNC session is killed.

  10. The vncserver script now enables the -autokill option by default, which creates a more intuitive interface for new TurboVNC users. A new command-line option (-noautokill), or the existing $autokill turbovncserver.conf variable, can be used to disable the feature.

  11. The TurboVNC Viewer's built-in SSH client can now read SSH private keys from ssh-agent or Pageant. Note that the SSH client does not understand the IdentitiesOnly keyword in OpenSSH config files and behaves as if IdentitiesOnly is yes. Otherwise, with the exception noted in 2.2.1[5], its behavior should be the same as that of OpenSSH.

  12. The X startup script (which is used to launch a window manager or other applications in a TurboVNC session) can now be specified using two new turbovncserver.conf variables, $xstartup and $noxstartup, which are the equivalents of the vncserver -xstartup and -noxstartup command-line options.

  13. The TurboVNC Server now installs the default xstartup.turbovnc script into the same directory as vncserver, and vncserver always uses that default script rather than a per-user xstartup.turbovnc script. This facilitates upgrading xstartup.turbovnc on a system-wide basis when the TurboVNC Server is upgraded. A per-user X startup script can still be used by specifying it with the -xstartup command-line option or the $xstartup turbovncserver.conf variable.

  14. The default X startup script (xstartup.turbovnc) has been streamlined to improve cross-platform compatibility. The script now attempts to match the value of the TVNC_WM environment variable, which is set by the vncserver -wm command-line option or the $wm turbovncserver.conf variable, with a session desktop file under /usr/share/xsessions (or /usr/local/share/xsessions on *BSD systems.) If a matching session desktop file exists, then xstartup.turbovnc populates the appropriate XDG environment variables from the entries in that file and then executes the window manager startup program/script specified in the file.

  15. The $autoLosslessRefresh, $pamSession, $multiThread, and $numThreads turbovncserver.conf variables are now deprecated, since $serverArgs can be used to accomplish the same thing.

  16. The TurboVNC Server can no longer be built using GnuTLS. Supporting GnuTLS was a stopgap measure intended for power users who needed access to encryption features that, at the time, either OpenSSL or TurboVNC's OpenSSL wrapper did not provide. However, that feature gap has since been closed, and given the fact that TurboVNC's OpenSSL wrapper has better performance and receives more attention from the TurboVNC developers and user community, there is no compelling reason to use the GnuTLS wrapper anymore. The 2.2.x version of the TurboVNC Server will continue to support GnuTLS on a break/fix basis.

  17. The TurboVNC Server is now based on xorg-server 1.20.13, which fixes several minor X server bugs.

  18. The TurboVNC Server's built-in unaccelerated GLX/OpenGL implementation no longer supports indirect rendering. Indirect rendering is limited to the OpenGL 1.4 API, and it performed sluggishly in the TurboVNC Server due to the fact that X servers are single-threaded. (On some platforms, the TurboVNC Server would become unresponsive for seconds at a time when users interacted with 3D applications that used indirect rendering.) Indirect rendering was generally only necessary on older systems that lacked libglvnd and that had vendor-specific GPU drivers installed, but it has always been possible to use direct rendering on such systems-- either by using VirtualGL or by manipulating LD_LIBRARY_PATH or LD_PRELOAD to cause OpenGL applications to use the Mesa implementation of libGL rather than the vendor-specific implementation. Indirect rendering-- and the TurboVNC-specific X server modifications that allowed it to perform as well as possible-- will continue to be supported in TurboVNC 2.2.x on a break/fix basis.

  19. The TurboVNC Viewer's built-in SSH client now displays the SSH server's banner message on the command line by default. Set the turbovnc.sshbannerdlg Java system property to 1 to display the banner message in a dialog box instead, thus restoring the default behavior of TurboVNC 2.2.x.

  20. The TurboVNC Server now supports the WebSocket protocol (more specifically, RFC 6455, AKA HyBi v13.) The server will automatically detect WebSocket connections on the RFB port (5900 + {display number}) and tunnel the RFB protocol through the WebSocket protocol. This allows browser-based VNC viewers, such as noVNC, to connect to the TurboVNC Server without using a proxy. TLS encryption (WSS) is supported if an X.509 certificate is specified using the -x509cert and -x509key arguments to Xvnc.

  21. The TurboVNC Server now maintains a separate count of VNC password/OTP authentication failures for each client IP address and temporarily blocks connections only from IP addresses that have exceeded the maximum number of consecutive VNC password or OTP authentication failures.

  22. The Linux/Un*x TurboVNC Helper library now uses X Input v2, which allows the Linux/Un*x TurboVNC Viewer to pass extended input device valuator names from the client to the TurboVNC session. This eliminates the need to use Virtual Tablet Mode in the TurboVNC session when using Wacom tablets with Qt applications. Furthermore, the Linux/Un*x TurboVNC Viewer no longer clones extended input devices other than those associated with Wacom tablets or touchscreens, since only those devices have been tested.

  23. If multiple VNC viewers are sharing a single TurboVNC session, the TurboVNC Server now automatically uses server-side cursor rendering to render and transmit cursor updates for all viewers other than the viewer that is moving the pointer (the "pointer owner"), thus allowing all viewers to track the pointer's position on the remote desktop. (Previously, this was only possible if the viewers manually enabled server-side cursor rendering, i.e. if they disabled cursor shape updates.)

  24. The TurboVNC Server now includes overhauled congestion control algorithms from TigerVNC v1.9.0 and later, for improved performance on high-latency/low-bandwidth networks.

  25. The automatic lossless refresh (ALR), interframe comparison, sharing, and profiling parameters can now be configured dynamically for a running TurboVNC session, using the newly repurposed tvncconfig program (or the vncconfig program from any RealVNC-compatible VNC implementation.)

  26. The remote X Input feature in the Linux TurboVNC Viewer and the TurboVNC Server now supports touchscreens and can transmit X Input multitouch events from the client to the TurboVNC session.

  27. The TurboVNC Viewer Options dialog has been improved in the following ways:

    • The menu key and toolbar settings are now located under the "Connection" tab rather than the "Global" tab.
    • The "Show toolbar" setting now takes effect immediately if "OK" is clicked to dismiss the TurboVNC Viewer Options dialog.
    • The "Security" tab now has a separate check box for each security type. This fixes an issue whereby certain combinations of security types (such as VNC,TLSPlain) could not be specified using the TurboVNC Viewer Options dialog.
    • The username for Plain and Unix Login authentication can now be specified in the "Security" tab.
    • Settings under the "Security" tab are now automatically disabled when they are rendered irrelevant by other settings.
  28. Added an F8 menu option, a Mac menu option, and corresponding hotkeys (CTRL-ALT-SHIFT-V and Command-V) to the TurboVNC Viewer that allow view-only mode to be toggled more quickly. This functionality previously only existed in the Windows TurboVNC Viewer.

  29. Added F8 menu options, Mac menu options, and corresponding hotkeys (CTRL-ALT-SHIFT-9 and Command-9, CTRL-ALT-SHIFT-8 and Command-8, CTRL-ALT-SHIFT-0 and Command-0) to the TurboVNC Viewer that can be used to zoom in (increase the scaling factor), zoom out (decrease the scaling factor), or reset the scaling factor to 100% when automatic desktop resizing and automatic scaling are disabled. This functionality previously only existed in the Windows TurboVNC Viewer.

  30. Listen mode now supports authentication and encryption using any security type other than the X509* security types.