我应该将.desktop
安装的第三方应用程序的文件放在哪里/opt
?
我可以为每个用户添加它们,~/.local/share/applications
但这是一个维护噩梦。最好将它们放在某个地方/opt
;但是,我如何让桌面管理器 (DM) 识别它们?
这会XDG_DATA_DIRS
影响 DM 查找文件的位置吗?如果是这样,添加一个脚本来附加自定义路径.desktop
是否合适?/etc/profile.d/
XDG_DATA_DIRS
谢谢你的帮助。
答案1
将它们放入/usr/local/share/applications/
答案2
假设 (A) DM 用于XDG_DATA_DIRS
搜索.desktop
文件,以及 (b)文件夹中第三方应用的文件夹层次结构/opt
符合桌面入门规格那么,我认为,你在里面创建一个脚本/etc/profile.d/
来修改的想法是明智的。XDG_DATA_DIRS
xyz
例如,假设你在文件夹中安装了一个名为的第三方软件包/opt/xyz/
,
$ tar xf xyz-1.0.0.tar.gz
$ cd ./xyz-1.0.0/
$ sudo make install prefix=/opt/xyz/
已安装软件包的文件系统层次结构如下所示:
/opt/xyz/
|-- etc/
| `-- xdg/
| `-- menus/
| `-- applications-merged/
| `-- X-Xyz.menu
`-- usr/
|-- bin/
|-- lib/
|-- libexec/
`-- share/
|-- applications/
| |-- org.example-Xyz_CoolFeature.desktop
| `-- org.example-Xyz_AwesomeFeature.desktop
`-- desktop-directories/
`-- org.example-Xyz.directory
将文件夹路径添加/opt/xyz/usr/share
到XDG_DATA_DIRS
环境变量
export XDG_DATA_DIRS=/opt/xyz/usr/share:${XDG_DATA_DIRS}
应该达到预期效果,即 DM 应该搜索
在文件夹内
/opt/xyz/usr/share/applications
,.desktop
以及/opt/xyz/usr/share/desktop-directories/
在文件夹内.directory
。
.menu
类似地,您可以通过存储在文件夹中的一个或多个文件自定义 DM 的应用程序菜单/opt/xyz/etc/xdg/menus/applications-merged/
,并将文件夹路径添加/opt/xyz/etc/xdg
到环境变量中XDG_CONFIG_DIRS
:
export XDG_CONFIG_DIRS=/opt/xyz/etc/xdg:${XDG_CONFIG_DIRS}
例子:/etc/profile.d/xyz-xdg-config.sh
case "$XDG_CURRENT_DESKTOP" in
'KDE' | 'ubuntu:GNOME' )
export XDG_DATA_DIRS=${XDG_DATA_DIRS:-/usr/local/share:/usr/share}:/opt/xyz/usr/share
export XDG_CONFIG_DIRS=${XDG_CONFIG_DIRS:/etc/xdg}:/opt/xyz/etc/xdg
;;
esac
另请参阅桌面菜单规范(v1.1)。
对于图标文件,请参阅:.desktop 文件中声明的图标的绝对路径是什么?