Citrix

From ArchWiki

Tango-edit-clear.pngThis article or section needs language, wiki syntax or style improvements. See Help:Style for reference.Tango-edit-clear.png

Reason: See Help:Style. (Discuss in Talk:Citrix)

Citrix Workspace App (previously known as Citrix Receiver and ICA Client) is the client component of XenDesktop (desktop virtualization software) and XenApp (application virtualization software), developed by Citrix Systems.

Installation

Install the icaclientAUR package. It includes the wfica.desktop file, so Arch knows how to open ica files.

Chromium/Google Chrome

If you have problems launching Citrix applications with Chromium, just go to chrome://extensions and disable "Citrix Receiver for Linux".

wfica.desktop

Create /usr/share/applications/wfica.desktop (Exec path may vary based on package installed):

[Desktop Entry]
Name=Citrix ICA client
Comment="Launch Citrix applications from .ica files"
Categories=Network;
Exec=/opt/Citrix/ICAClient/wfica
Terminal=false
Type=Application
NoDisplay=true
MimeType=application/x-ica;

Now xdg-open will handle .ica extensions using /opt/Citrix/ICAClient/wfica.

Note: If you are running Xfce and Chromium is opening the .ica files in the wrong application (e.g. a text editor), make sure you have xorg-xprop installed.

TLS/SSL Certificates

Because ICAClient uses SSL you may need a security certificate to connect to the server, check with the server administrator. If there is a certificate download and place it in /usr/lib/ICAClient/keystore/cacerts/.

You may then receive the error You have not chosen to trust the issuer of the server's security certificate. (SSL Error 61).

There may be several reasons for this:

You do not have the root Certificate Authority (CA) certificates.
These are already installed on most systems, they are part of the core package ca-certificates, but they are not where ICAClient looks for them. Copy the certificates from /etc/ssl/certs/ to /usr/lib/ICAClient/keystore/cacerts/. For Citrix versions before 13.1, run the following command as root:
# ln -sf /etc/ssl/certs/* /opt/Citrix/ICAClient/keystore/cacerts/
Since versions 13.1, Citrix needs the certificates in separate files. You need to run the following commands as root:
# cd /opt/Citrix/ICAClient/keystore/cacerts/
# cp /etc/ca-certificates/extracted/tls-ca-bundle.pem .
# awk 'BEGIN {c=0;} /BEGIN CERT/{c++} { print > "cert." c ".pem"}' < tls-ca-bundle.pem
You may also need to download your CA's intermediate certificates and store them in the same directory.
Changes to your certificate directory will likely require rehashing links for openssl to find them properly. Skipping this step might result in Citrix still giving certificate errors. To do this, use this command (borrowed from [1])

Tango-view-refresh-red.pngThis article or section is out of date.Tango-view-refresh-red.png

Reason: After the last [April 2018] openssl upgrade, the c_rehash command is broken in Arch. [unless the command has not been deprecated upstream, this should be a bug report] (Discuss in Talk:Citrix)
# c_rehash /opt/Citrix/ICAClient/keystore/cacerts/

Instead of using c_rehash which no longer works the openssl rehash command can be used instead.

# openssl rehash /opt/Citrix/ICAClient/keystore/cacerts/

Audio Support

Citrix Receiver uses ALSA. If you use Pulse Audio, install pulseaudio-alsa.

To get audio input into Citrix Receiver, in ~/.ICAClient/wfclient.ini, add AllowAudioInput=True anywhere in the [WFClient] section.

As of client 2012 - December 2020 Citrix has introduced additional audio redirection: https://docs.citrix.com/en-us/citrix-workspace-app-for-linux/configure-xenapp.html#audio . If your audio device is no longer detected within the Citrix Workspace App, you may need to disable this new functionality following the instructions provided.

Endpoint Analysis (EPA)

Tango-edit-clear.pngThis article or section needs language, wiki syntax or style improvements. See Help:Style for reference.Tango-edit-clear.png

Reason: Numerous style issues. (Discuss in Talk:Citrix)

If your company has activated the optional endpoint analysis to check if your computer meets certain requirements, you will have to install another component, the EPA-Plugin. It seems like it was a browser plugin using the legacy NPAPI, but now it is just an application the browser calls with a protocol handler for "nsgcepa://". Here is what you have to do to get it running:

  • Step 1. Download the EPA plugin from your company's Citrix gateway. Opening the URL of your company's Citrix gateway will try to start the endoint check immediately, which (of course) fails, because you have not installed the EPA plugin, yet. Under the error message you will see a button for downloading nsepa.deb. Download it.
  • Step 2. Transform the Debian package into an Arch package with debtap. You might need to install debtapAUR first.
    # debtap nsepa.deb
    Call the package "nsepa" and use the suggested version. Install it like so:
    # pacman -U nsepa-1.0.0.35-1-x86_64.pkg.tar.xz

Recent versions of the EPA are linked to libcurl-gnutls and you are done now. Unfortunately your company might use and old version that has the following problem:

$ ldd /opt/Citrix/Browser-EPA/nsgcepa
/opt/Citrix/Browser-EPA/nsgcepa: /usr/lib/libcurl.so.4: version `CURL_OPENSSL_3' not found (required by /opt/Citrix/Browser-EPA/nsgcepa)
	linux-vdso.so.1 (0x00007fff33f4f000)
	libX11.so.6 => /usr/lib/libX11.so.6 (0x00007fe4401d9000)
        [...]

As you can see, the nsgcepa executable (which is the main executable of nsepa) has been linked to a libcurl.so.4 that contains the "CURL_OPENSSL_3" symbol. I think this is a patched version from Ubuntu and I could not find an Arch package providing it, not even libcurl-compat. Unfortunately you have to find an appropriate lib for yourself. I found one in the Steam runtime under ~/.local/share/Steam/ubuntu12_32/steam-runtime/usr/lib/x86_64-linux-gnu.

  • Troubleshooting-Step 1. Create a directory for patched library files and copy libcurl.so.4 into it. Also copy dependencies.
# mkdir /opt/Citrix/lib
$ cd ~/.local/share/Steam/ubuntu12_32/steam-runtime/usr/lib/x86_64-linux-gnu
# cp libcurl.so.4 /opt/Citrix/lib
# cp libhogweed.so.4 libnettle.so.6 librtmp.so.0 libidn.so.11 /opt/Citrix/lib
  • Troubleshooting-Step 2. In order to use these libs instead of your system's libs, we have to fiddle with the way nsgcepa is being called. There is a .desktop file provided in the nsepa package for that: /opt/Citrix/Browser-EPA/nsgcepa.desktop. Change the Exec line to:
    Exec=env LD_LIBRARY_PATH=/opt/Citrix/lib LD_PRELOAD=/opt/Citrix/lib/libcurl.so.4 /opt/Citrix/Browser-EPA/nsgcepa
  • Troubleshooting-Step 3. The .desktop file had already been copied to where the system expects it to be: /usr/share/applications/. Overwrite it with your new one.
    $ cp /opt/Citrix/Browser-EPA/nsgcepa.desktop /usr/share/applications/

Now go to you company's Citrix URL again. The EPA should run. If it does not, you should check if the protocol handler for "nsgcepa://" works:

$ xdg-open nsgcepa://something.com

If it answers "gio: nsgcepa://something.com: The specified location is not supported" or "klauncher said: Unknown protocol 'nsgcepa'" you need to add the protocol handler manually:

$ xdg-mime default nsgcepa.desktop x-scheme-handler/nsgcepa

If the EPA still fails you should ask your company's Citrix Netscaler admins if they have disabled Linux logins completely. It seems like there is no corresponding error message for that case, instead the error message is the same as if you do not have installed the EPA plugin at all.

Troubleshooting

  • If you have issues opening a Citrix connection under Firefox you may need to set the Citrix Receiver plugin to 'Always Activate' under the Firefox Add-ons Manager plugin settings.
  • perl-file-mimeinfo may be required to correctly interpret the .ica file mimeinfo and open it as per the setup in wfica.desktop
  • If you have cursor alignment issues under Citrix and you have multiple displays connected to your machine you may need to disable all but one when using Citrix.
  • If you have sticky Control Ctrl key issues after logging to session you may resolve it using this guide
~/.ICAClient/All_Regions.ini
[Virtual Channels\Seamless Windows]
TWIMode=0

[Virtual Channels\Thinwire Graphics]
DesiredColor=8
ApproximateColors=*
DesiredHRES=1024
DesiredVRES=768
ScreenPercent=*
UseFullScreen=false
TWIFullScreenMode=false
NoWindowManager=false
  • If Alt+Tab does not work in a remote Citrix session on GNOME Wayland, these two settings will enable key passthrough.
$ gsettings set org.gnome.mutter.wayland xwayland-grab-access-rules "['Wfica']"
$ gsettings set org.gnome.mutter.wayland xwayland-allow-grabs true
  • If ICAClient is flooding the journal with error messages, a simple fix is to disable all logging in Citrix Workspace Preferences.