我应该将安装在 /opt 中的第三方应用程序的 .desktop 文件放在哪里?

我应该将安装在 /opt 中的第三方应用程序的 .desktop 文件放在哪里?

我应该将.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/shareXDG_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 文件中声明的图标的绝对路径是什么?

相关内容