Can ThinLinc be used to access Windows-based remote desktops and applications?

ThinLinc is primarily focused on providing remote access to Linux-based desktops and applications, from a wide range of client devices. By focusing on Linux specifically, we are able to dedicate more time and effort towards ensuring that ThinLinc works well on this platform. But what if you want to access Windows desktops and applications using ThinLinc as well?

While ThinLinc uses VNC as its graphical protocol, Windows generally uses RDP. Although there is no built-in support for RDP in ThinLinc, there are a number of third-party RDP clients available for Linux, such as those available from the rdesktop and FreeRDP projects. These clients can be launched from within a ThinLinc session just like any other application, and used to connect to an existing Windows server via RDP.

Note: as they are not part of the ThinLinc product itself, RDP clients are not covered by Cendio support or the ThinLinc EULA. However, professional third-party support services are available for both rdesktop and FreeRDP. Your Linux distribution provider may also offer support for these components.

Once you have a Windows server available and configured for RDP access, you can try connecting to it using your RDP client from within a ThinLinc session. Use the command line here, rather than a graphical launcher. This will allow you to build a command with the options you require; for example, launching a single application vs. entire desktop, fullscreen vs. windowed mode, and so on.

Once you have built a command which gives the behaviour you want, you can then re-use this command in the steps below.

Single Sign-On (SSO)

When launching the RDP client from within a ThinLinc session, you will normally be prompted to authenticate against the Windows server. This can be frustrating for users, since they have already been asked to authenticate once when connecting to the ThinLinc server.

Most RDP clients will offer a way to provide authentication credentials at the command line, avoiding the need to log in twice. If the credentials on the Windows server match the ones on the ThinLinc server, then the ThinLinc command tl-sso-password can be used to provide the password on the command line. For more information on this command, see:

https://www.cendio.com/resources/docs/tag/commands.html?highlight=tl-sso-password

The username can be obtained using standard methods, for example via the $USER environment variable, or the whoami command. Adding these to the command line will prevent users from having to authenticate again when connecting to the Windows server.

If Windows desktops and applications are used regularly in your ThinLinc environment, it is good practice to use a common authentication mechanism for both the Linux and Windows servers. This ensures credentials remain consistant across platforms, and that credentials only need to be kept and updated in a single location.

Since it can be difficult to get Windows to authenticate against non-proprietary sources, the easiest way to do this is usually to make sure that all servers are joined to the same Active Directory domain. On Linux, this can be achieved using software provided by the Samba project.

Launching the RDP Client as an Application

Once you have built a working command line for your RDP client, one option is to provide users with this command as an application in their ThinLinc session. This application can be defined using the ThinLinc Desktop Customizer, and placed in the menu structure (or on the desktop) of users who need to access Windows resources.

The application could be configured to launch a Windows desktop in windowed mode, or in fullscreen mode to cover the entire ThinLinc session. It could also be configured to launch a single Windows application, using seamless mode (“RemoteApp”) to integrate with the Linux desktop. This approach enables hybrid environments, where Windows and Linux applications run together in the same desktop environment.

Launching the RDP Client via the Profile Chooser

Another option is to use ThinLinc’s profile chooser to allow users to select between platforms. For more information on defining and configuring profiles, see:

https://www.cendio.com/resources/docs/tag/tlwebadm_profiles.html

If multiple profiles are configured, users may be presented with a choice when logging into ThinLinc. It is possible to have a separate Windows-only profile by configuring it to launch the RDP client directly. Users who select this profile will not have access to a Linux desktop in their session

Wine

It is also possible to run many Windows applications directly on Linux using a compatibility layer such as Wine. Compatibility and performance varies between applications, but it does have the advantage of not requiring a separate Windows server, and is generally worth looking into.

CodeWeavers provide a commercially supported version of Wine known as CrossOver, which may be more appropriate for production environments.


For more information on the FreeRDP project, visit FreeRDP

For more information on the rdesktop project, visit rdesktop: A Remote Desktop Protocol Client

For more information on the Samba project, visit Samba - opening windows to a wider world

For more information on the ThinLinc Desktop Customizer, see https://www.cendio.com/resources/docs/tag/tldc_tldesktopcustomizer.html.

For more information on configuration parameters for ThinLinc’s profile chooser, see Parameters in /profiles/ — The ThinLinc Administrator's Guide 4.14.0 build 2408 documentation

For more information on Wine, visit https://www.winehq.org.

For more information on CodeWeavers, visit https://www.codeweavers.com/

1 Like

Nice post, Aaron. Helpful, especially after our meeting, Q2 2022. One suggestion, the link provided for Launching the RDP Client via the Profile Chooser (The Profiles Module — The ThinLinc Administrator's Guide 4.14.0 build 2408 documentation) is helpful, but touches only the surface of this capability as RDP is never cited in the link. For some users, this can be a useful feature. Perhaps it would be helpful to expand slightly on this feature, so others can also benefit from the ThinLinc tool’s powerful capabilities. I’m starting to test with this access option as well, am rereading our notes, and the opportunity presented itself.
Thank you for the consideration.

I found a research paper that discusses the use of ThinLinc to support workflows based on Windows. It might be worth a read for those interested in integrating similar solutions into their environment.

Grant, R.H., Smith, S.D., Harrell, S.L., Younts, A. and Smith, P., 2018. Windows-based Workflows on Linux-based Beowulf Clusters. In Proceedings of the Practice and Experience on Advanced Research Computing (pp. 1-5).

Windows-based Workflows on Linux-based Beowulf Clusters
Abstract
“Scientists with non-traditional computational and workflow needs are a growing demographic in Research Computing. In order to serve these scientific communities we must create new ways to leverage existing resources. One set of problems that is not properly served revolves around Microsoft Windows-based software. These softwares can be both legacy software that have no modern counterpart or traditionally GUI software that have had batch components integrated into them. In this paper we describe a general solution and three successful use-cases using Microsoft Windows Virtual Machines in both interactive and non-interactive batch jobs on Linux-based Beowulf-style clusters to complete workflows based on Microsoft Windows software. With this general solution the utility of ubiquitous Beowulf clusters can be extended.”

Links to the publication:

https://www.researchgate.net/publication/326362081_Windows-based_Workflows_on_Linux-based_Beowulf_Clusters

Here’s a link to another relevant discussion within our community that offers further insights on this topic:

Can You Use ThinLinc Against a Windows Computer?.

I thought it might be useful to interlink these discussions for anyone looking for additional information or perspectives.