Jere's Techblog

Install Citrix Workspace on Fedora43

While Fedora43 does not provide webkit2gtk3-226 anymore and here is the installation process, referenced to this article: https://community.citrix.com/forums/topic/258561-fedora-43-no-longer-provides-webkit2gtk3-226/

Problem: widersprüchliche Anforderungen – nichts stellt webkit2gtk3 >= 2.26 bereit, dieses wird von ICAClient-25.08.10.111-0.x86_64 aus @commandline benötigt Sie können versuchen, folgendes der Befehlszeile hinzuzufügen: –skip-broken, um deinstallierbare Pakete zu überspringen

1️⃣ Add the COPR repository

Download the repo file and place it where DNF expects it:

sudo curl -o /etc/yum.repos.d/mlampe-webkit2gtk3.repo \
https://copr.fedorainfracloud.org/coprs/mlampe/webkit2gtk3/repo/rhel+epel-10/mlampe-webkit2gtk3-rhel+epel-10.repo

Verify:

dnf repolist | grep webkit

2️⃣ Refresh metadata

sudo dnf clean all
sudo dnf makecache

3️⃣ Install webkit2gtk3

sudo dnf install webkit2gtk3

This should install:

  • webkit2gtk3
  • required GTK3 libraries

4️⃣ Install Citrix Workspace (25.x)

Now retry the Citrix RPM:

sudo dnf install ./icaclient-25*.rpm

If it still complains:

sudo dnf install ./icaclient-25*.rpm --allowerasing

5️⃣ Lock the package (IMPORTANT)

Prevent Fedora from breaking it on upgrades:

sudo dnf install dnf-plugins-core
sudo dnf versionlock add webkit2gtk3

6️⃣ Test Citrix

/opt/Citrix/ICAClient/selfservice


My expirience and “Issues” i got confroted with Citrix Workspaces on Linux

First of all, after the installation i could connect with Citrix Workspace to my Citrix Desktop without any issues at all! Which is great! It supports even my 2 Screen Setup so i can run the session streched over both Screens or Full Window mode or even just on one Screen. I am using Wayland and it works well for me but be aware, Citrix works best on X11. If you have display issues.

My only “Issue” is that i played with the DPI Settings of the receiver and recommend to scale the DPI % inside the Session e.g. your Windows Citrix Session.

Here some insides how to fix those Issues:

you can completely reset Citrix (ICAClient) settings.
This is very common after changing DPI / graphics / transport options.

Below are safe reset options, from minimal to full reset.


✅ Option 1: Reset user settings only (recommended first)

This removes all Citrix preferences for your user, not system-wide.

pkill -f ICAClient
rm -rf ~/.ICAClient
rm -rf ~/.citrix
rm -rf ~/.config/Citrix

Then start again:

/opt/Citrix/ICAClient/selfservice

👉 This fixes ~90% of “session won’t start” issues.


✅ Option 2: Reset browser / Workspace integration

If launches from browser stopped working:

/opt/Citrix/ICAClient/util/set_receiver.sh

Choose:

  • Reset existing configuration
  • Re-enable browser integration

✅ Option 3: Reset global (system) Citrix config

If you edited files under /opt/Citrix:

sudo mv /opt/Citrix/ICAClient/config /opt/Citrix/ICAClient/config.bak
sudo cp -r /opt/Citrix/ICAClient/config.orig /opt/Citrix/ICAClient/config

(If config.orig does not exist, reinstall the RPM — see option 5.)


✅ Option 4: Reset DPI / display problems (very common)

If you changed scaling / HiDPI and now get instant disconnects:

rm -f ~/.ICAClient/wfclient.ini

Citrix will regenerate it on next launch.


✅ Option 5: Full clean reinstall (nuclear option)

This guarantees factory defaults.

sudo dnf remove icaclient
rm -rf ~/.ICAClient ~/.citrix ~/.config/Citrix
sudo dnf install ./icaclient-*.rpm
/opt/Citrix/ICAClient/util/set_receiver.sh

🔍 Debug if it still won’t start

Run a session manually to see the error:

/opt/Citrix/ICAClient/wfica ~/Downloads/*.ica

Or enable debug:

ICAROOT=/opt/Citrix/ICAClient \
WFICA_LOGGING=1 \
/opt/Citrix/ICAClient/selfservice

Logs:

~/.ICAClient/logs/

🧠 Most common “break” settings

These frequently stop sessions from starting:

  • EDT / UDP transport
  • DPI scaling > 150%
  • Hardware acceleration
  • Wayland-related display settings
  • Custom SSL / TLS options

✅ What I recommend

  1. Do Option 1
  2. If still broken → Option 4
  3. Still broken → Option 5

Continue reading...

Get size of Citrix UPM Profile

With these few lines you get an evaluation of your profile sizes and the AppData, if you have redirectet this to a share.
The script is designed to check multiple shares. You only have to adjust the array “$ProfileFolders” and if necessary the variable “$folder1, $folder2”

#by J.Kühnis 18.12.2019
$ProfileFolders = @(
"\\TSProfileShare1\profile$",
"\\TSProfileShare2\profile$"
)

$infos = @()

Foreach ($folder in $ProfileFolders){
Write-Host $folder

Get-ChildItem $folder | ? { $_.Name -notmatch ".V2" } | % {
    
    Write-Host ($folder + "\" + $_.Name + "\ts\v3\prd\AppData")
   
    $folder1 = $folder + "\" + $_.Name + "\ts\v3\prd\AppData"
    $folder2 = $folder + "\" + $_.Name + "\ts\v3\prd\upm\UPM_Profile"
    IF (Test-Path $folder2) {
        $a = ((gci -Recurse $folder1 -Force | measure Length -s).sum / 1Gb)
        $b = ((gci -Recurse $folder2 -Force | measure Length -s).sum / 1Gb)
        $c = "{0:N3} GB" -f ($a + $b)
        $output = $_.Name + "," +  $c + "," + $folder
        Write-Host $output
        $infos += $output
        Clear-Variable a,b,c,output
    }
    Clear-Variable folder1, folder2
}
}

$infos | ogv
Continue reading...

XenApp:7.x: The users configuration has been manually modified and cannot be changed by studio

Symptoms or Error

We are unable to edit the ‘Users’ tab in ‘Edit Delivery Group’ wizard 

Error : The users configuration has been manually modified and cannot be changed by studio

Solution: There are two causes for this problem, but the official Citrix website describes only one of them and offers only one solution for it.

Problem Cause 1 Solution by Citrix

https://support.citrix.com/article/CTX216818

You can just Use the Scriptblock below to Check if there are Differences between the ” *DesktopGroupName* _Direct” (Storefront) and the “*DesktopGroupName*_AG” (Netscaler).

You only have to adjust the first two variables (lines 3 & 4), it’s easier than the description of Citrix article. If there are differences, you can clean them up, unless these differences are deliberately set that way. Then you have to configure this via Powershell and you can’t customize it in the Studio console.

#by J.Kühnis 30.10.2019
Add-PSSnapin *
$DeliveryGroup = "DeliveryGroupName"
$BrokerServer = "BrokerName.f.q.d.n"
Compare-Object (Get-BrokerAccessPolicyRule -AdminAddress $BrokerServer -DesktopGroupName $DeliveryGroup)[0].ExcludedUsers -DifferenceObject (Get-BrokerAccessPolicyRule -AdminAddress $BrokerServer -DesktopGroupName $DeliveryGroup)[1].ExcludedUsers

Problem Cause 2

The second reason for this Issue has no solution except to configure the access only with Powershell, but it’s still nice to know why the Probleme is caused.

I was able to test the problem in two Citrix environments (version 1811 aka Citrix 7.20) and reported it to Citrix. Let’s see if anything is done about it, as already said, the workaround is Powershell.

Cause: The problem occurs when the ExcludeFilterEnabled attribute is set (the value equals ‘True’). The attribute can only be set trough Powershell and the error described above (according to the print screen) is displayed.

The filter is automatically set to True if you have a user or group in the ‘ExcludedUsers’ property. So the rule is, if you make exclude Filter, you control the BrokerAccessPolicy in Powershell.
By the way, you can get the Policy in Powershell:

Get-BrokerAccessPolicyRule -DesktopGroupName DG11
Continue reading...

Verify Citrx HostedMachineID with VmWare Hypervisor

Sometimes the HostedMachineID of Citrix does not match that of VmWare. This is often the case when cloning or moving machines. In Citrix Studio you will see the Powerstate of this machines as unknow and you can’t do any VM actions like reboot in the console.

With this script snippet it can be checked. To do this the variable “Broker” must be adjusted in the Script and the PowerCli and CitrixModule (BrokerSnapIn) must be loaded. Furthermore, the connection to the vCenter must be initiated via “Connect-VIServer vCName“.

#25.09.2019by J.Kühnis - Verfiy HostedMachineID with VmWare ESXi Hypervisoer

$Broker = "Enter your BrokerName"
$Brokermachines = Get-BrokerMachine -AdminAddress $Broker | Select MachineName,DNSName,HostedMachineID

Foreach ($Machine in $Brokermachines){
    IF(get-vm $Machine.DnsName -ErrorAction SilentlyContinue){
        IF($Machine.HostedMachineID -eq (Get-View -id (get-vm $machine.DNSName).id).config.uuid){
            Write-Host $Machine.DnsName "HostedMachineID is matching" $Machine.HostedMachineId -ForegroundColor Green
        }Else{
            Write-host $Machine.DnsName "Mismatch ID: VmWare UUID =" (Get-View -id (get-vm $machine.DNSName).id).config.uuid "; Citrix HostedMachineID =" $Machine.HostedMachineID -ForegroundColor Yellow
        }

    }Else{
        Write-host $Machine.DnsName "MachineName not Found on ESXi" -ForegroundColor Yellow
    }
}

Now that the machines have been read out, the connections can be fixed.

vCenter Cert thumbprint update:

# Open an admin POSH console, load the Citrix Modules (asnp citrix*) and cd to XDHyp:/Connections and run ls. Check the SSLThumbprints entry.
asnp citrix*
cd XDHyp:/Connections
ls
Set-Item -LiteralPath "XDHyp:\Connections\vCenters Name" -sslthumbprint "123456789ABCD123456789ABCDE123456789ABCD" -hypervisorAddress https://vcenter-name/sdk

The letters in SSL-Thumbprint must be uppercase.

In this blog the problem is also discussed in detail:

Continue reading...

Get InUse Publishings in ApplicationGroup

Here is a code snippet to read the active publishings attached to a deliverygroup. These are only the publishings which are in an application group.

#by JKU 04.09.2019
Add-PSSnapin *

$exporttime = get-date -Format ("dd.MM.yyyy_hh.mm.ss")
$exportpath = "C:\temp\inUsePublishings_" + $exporttime + ".csv"
$ArryinUsePublishings = @()
$AGUids = (Get-BrokerApplicationGroup * | ?{($_.AssociatedDesktopGroupUids).count -ge 1}).uid

Foreach($CTXAPP in (Get-BrokerApplication * -MaxRecordCount 1000000)){
    IF(($CTXAPP.AssociatedApplicationGroupUids | % {$AGUids -contains $_}) -contains $true){
    $ArryinUsePublishings += $CTXAPP
    }
}
$ArryinUsePublishings | export-csv $exportpath
Write-host "File Exported to $exportpath"

Continue reading...

Scriptblock to check PVS Connection

On the fly, I found no way to check which PVS servers & service are online. This is especially important if I want to issue PVS commands from Remote / Orchestrated. Enclosed I have made a small script block to check this. It is certainly not the best way, but it works. One possibility would be to retrieve the status of the PVS-services, but it is unclear whether one can actually connect to the servers trough PVS commands.

#by JKU 09.08.2019
$error.clear()
$k.clear()
$PVSConnectionServers.clear()

$PVSConnectionServers = @("PVS-Server01", "PVS-Server02")

$k = 0
Foreach($PVS_Server in $PVSConnectionServers){
    Set-PvsConnection $PVS_Server
    if($Error -match $PVS_Server){
        #Check Next Server
        $k++
        IF($k -eq $PVSConnectionServers.Count){
            Write-Warning "ALL PVS Servers are not reachable, stop script! $PVSConnectionServers"
            Return
        }
    }Else{
        Break
    }
}

Write-Host "Connecting to $PVS_Server"
Continue reading...

Citrix DeliveryController DB rejoin; The operation could not be performed because of a configuration logging error.

To rejoin a Citrix Broker into a existing or migrated Databese, there are a lot of usefull articles:

https://support.citrix.com/article/CTX212941

https://support.citrix.com/article/CTX216504

Problem Cause

In some cases you can’t configure the Monitor and Log DataStore Connections after you deleted the Connection with:

Set-MonitorDBConnection -DataStore Monitor -DBConnection $null -force
Set-MonitorDBConnection -DBConnection $null -force
Set-LogDBConnection -DataStore Logging -DBConnection $null -force
Set-LogDBConnection -DBConnection $null -force

If you like to rejoin the Connection with the following command:

Set-LogDBConnection -DataStore Logging -DBConnection $csLogging

You get the following error:

Set-LogDBConnection : The operation could not be performed because of a configuration logging error.
At line:1 char:1


Set-LogDBConnection -DataStore Logging -DBConnection $csLogging
~~~~~~~~~~~~~~~CategoryInfo : InvalidOperation: (:) [Set-LogDBConnection], InvalidOperationException
FullyQualifiedErrorId : Citrix.XDPowerShell.Status.ConfigurationLoggingError,Citrix.ConfigurationLogging.Sdk.DataStore.Commands.SetLogDBConnectionCommand

Solution 1

There is a possibility to disable the settings before nullify the connections:

Set-LogSite -State "Disabled"
Set-MonitorConfiguration -DataCollectionEnabled $False

then go ahead with this article https://support.citrix.com/article/CTX216504 and reenable the Settings; run those commands as last step:

Set-LogSite -State "Enabled"
Set-MonitorConfiguration -DataCollectionEnabled $true

Solution 2

Just use the “-force” parameter while setting up the DB Connection. Afterwards i recommend to reboot the Broker Server.

Set-LogDBConnection -DataStore Logging -DBConnection $csLogging -force
Set-MonitorDBConnection -DataStore Monitor -DBConnection $csMonitoring -force
Continue reading...