Apache Guacamole 0.9.12-incubating

Apache Guacamole is split into two subprojects: "guacamole-client", the HTML5 web application which serves the Guacamole client to users, and "guacamole-server", the remote desktop proxy which the web application communicates with. The source code for each of these may be downloaded below.

If you do not wish to build Apache Guacamole entirely from source, pre-built versions of the web application (.war) and all extensions are provided here in binary form for convenience. Please note that guacamole-server must still be built and installed from source.

Release notes

The 0.9.12-incubating release features nifty auto-updating connection thumbnails for tab icons, performance improvements, and fixes for issues with printing, file transfer, and terminal emulation.

New support for authenticating users based on arbitrary HTTP headers has also been added, allowing the authentication result of external systems sitting between the user and Guacamole to be trusted (as long as those headers can be truly guaranteed to come only from those trusted systems).

Thumbnails as tab icon

Guacamole normally updates the locally-stored thumbnail of previously-used connections for reference on the home screen. This update now occurs more regularly while the connection is in use, and the result is used for the tab icon (“favicon”), allowing multiple open connections and bookmarks of individual connections to be more easily distinguished from each other.

Performance improvements

Part of the continuing development of the experimental Guacamole driver for the X.Org X11 server, the performance surrounding certain rendering operations has been improved, in particular the handling of updates to client-side layer size, position, and the calculation of client lag.

Printing / file transfer issues

Regressions related to improvements to file transfer made in 0.9.10-incubating have been identified and fixed. Some of these regressions were specific to Internet Explorer and Microsoft Edge, but others were generic, such as file transfer itself possibly blocking interaction until the transfer has completed.

Terminal emulation bugs

The Guacamole terminal emulator is currently intended to implement the same subset of VT102 / ECMA-48 codes as the Linux console. Issues with Guacamole’s implementation of these codes (specifically with handling of scrolling vs. non-scrolling regions) were identified and fixed. These issues affected use of GNU screen, tmux, vim, and others.

  • GUACAMOLE-148 - SSH does not behave properly when using GNU screen
  • GUACAMOLE-149 - Potential busy loop in guac_terminal_display_set_columns()
  • GUACAMOLE-193 - Terminal emulator forgets background color of spaces

HTTP header authentication

Guacamole now supports for authenticating users based on arbitrary HTTP headers. While this support was always possible to implement via an extension, such an extension is now included as part of the Guacamole codebase, with a binary version built alongside the release for convenience. This new extension allowing the authentication result of external systems sitting between the user and Guacamole to be trusted.

NOTE: For this to be safe, the header added by the external system MUST be guaranteed to come only from the trusted authentication system itself. It is up to the configuration of the external system, proxies, etc. to ensure that users cannot manipulate or add these headers, and thus that the header will be present if and only if they are authenticated as the user identified by that header.

Build issues (deprecated functions)

Two functions used within the guacamole-server build, readdir_r() and avcodec_encode_video2(), have been marked as deprecated, resulting in build failures. Guacamole has been modified to no longer depend on these functions, using the recommended alternatives instead, and the build should no longer fail on platforms where these functions are deprecated or unavailable.

Cursor/layer rendering issues

In addition to performance improvements, development for the experimental Guacamole driver for the X.Org X11 server revealed issues with layer rendering with respect to stacking order, threadsafety, and transparency.

In most cases, due to the way that VNC and RDP are currently implemented, these issues had no effect, but handling of alpha transparency for RDP cursors was noticeably incorrect when the remote desktop used cursor shadows. This was a regression due to changes introduced in 0.9.10-incubating for screen sharing, and should now be fixed.

Client hostname/address tokens

Two new parameter tokens have been added, GUAC_CLIENT_HOSTNAME and GUAC_CLIENT_ADDRESS, representing the hostname and IP address of the user respectively. The values of these tokens are determined at the time the user authenticated, and can be used to include the user’s hostname/address within connection parameters.

  • GUACAMOLE-47 - Get client hostname for use in guac RDP session

Miscellaneous fixes/improvements

This latest release of Guacamole also adds translation strings for French which were previously missing, support for RDP servers having Swiss-French keyboard layouts, and reorganizes some of the internal convenience libraries used by guacamole-server for the sake of cleanliness and maintainability.