2006年5月21日星期日

图标的位置问题以及其它(即XDG规范)

在cygwin下编译xfce-4.4beta1时,俺按老习惯将prefix设置成了/opt/xfce4,方便以后删除。但这样就出现一个问 题, 很多程序的图标不能正常显示出来。

-------------------------
虽然xfce要求的hicolor-icon-theme包我也装了,但俺检查xfce安装图标时都是放到 /opt/xfce4/share/icons/hicolor下面去的(hicolor-icon-theme包是cygwin官方版,图标主题在 /usr/share/icons/hicolor下面)。

俺先用了一个土办法,把/opt/xfce4/share/icons/hicolor下的图标都拷到了/usr下面的去,结果当然好使。但这显然不是正确的解决方法,按照UNIX习惯,应该有两种方法解决这个问题:

1. 应用程序编译、安装时检测hicolor的安装目录,然后将图标安装到该位置。

2. 通过一个配置(很可能是环境变量)设置查找图标时要搜索的目录。

隐约记得XDG制定过这方面的规范,并且正在合入LSB。俺翻阅了一下,发现有两个规范跟这个问题相关,一个是基准目录规范,一个是图标主题规范

前者要求设置XDG_DATA_DIRS和XDG_CONFIG_DIRS环境变量(缺省为/usr/share: /usr/local/share),应用程序应该在这些查找菜单、图标等等数据;后一规范要求各个应用程序至少应该给hicolor这个主题提供图标 (至少要有一个48x48的),因为这个主题是图标查找的最后目录。

好了,回到俺的问题,设置XDG_DATA_DIRS环境变量为/usr/share:/usr/local/share:/opt/xfce4/share,搞定。

BTW: 虽然我喜欢用rox,但觉得为每个应用转换一个rox的launcher很是有点麻烦,前两天看见了一个提供XDG菜单的rox应用XDG-Menu。与launcher相比的一个缺点这种情况下不能拖文件启动程序了,不过很多应用程序不需要这样。想要了解X桌面环境的"start menu"上会出现哪些应用程序,可以阅读desktop entries files规范

没有评论: