Citrix Receiver在Linux下的应用程序图标显示问题

Linux系统下的Citrix Receiver显示的应用程序图标颜色非常少,显示效果很差,大家一般认为只有256色。

最开始我以为是由于linux系统本身的一些特性导致Linux系统下的Plugin(插件)对图标的显示配置问题导致了Xenapp或者XenDesktop交付的应用程序或者桌面的图标显示颜色数量很少,效果很差。但是在查找ICAClient本地的配置和服务器的相关配置的过程中,无意中发现了图标的呈现机制,由此也就发现了Linux系统下的颜色显示问题的原因。

由于Citrix在Linux系统上的应用程序图标是使用XPM格式来存储和显示的,这就导致了颜色的大量丢失和显示效果极差。

在Linux系统Citrix Receiver登录系统以后,Receiver会从Web Interface请求应用程序列表以及应用程序的图标,由于Citrix在Linux系统上的实现机制,导致了Web Interface或者是Receiver把应用程序的图标转换成xpm格式保存,并显示在应用程序列表或者桌面,而又由于xpm格式一般支持的颜色数量较少和xpm的机制,导致了颜色数极少,显示极差。

这里带大家看下一个测试应用程序IE程序浏览器,应用程序名称为XenMe,然后经过XenApp发布。先来看看效果:

我们可以看到颜色基表少,颗粒感比较强。

首先,可以在当前用户目录/root/.ICAClient/cache/Desktop下看到每个发布的应用程序有三个文件:.desktop,.pnagent,.xpm

下面我们一次来看看每个文件的内容。上图中为XenMe.desktop文件内容,我们注意到该文件主要定义了应用程序的基本情况,包括名称(name),以及图标(icon)和执行命令(exec),其实也就是快捷方式。

XenMe.pnagent文件的内容主要是应用程序的一些设置和参数,比如,外观的宽高,颜色,以及窗口类型,ICA协议的版本,另外需要注意的是icon节。注意到内容比较少。可以结合下下图联想下。

看到这个文件我们就非常清楚了,Linux下的应用程序图标其实组大分辨率只有32*32,而本图标的颜色数只有17种,往下可以看到,图标是从图标转换成这种完全使用字符拼凑的方式,并通过字符颜色的定义来显示,可想而知显示效果和颜色数是多么的少。这也就造成了Linux系统下应用程序图标显示极差的原因。

关于xpm格式,比较简单,就不再细说,可以参考wikipedia中的说明。