使用 Gnome 启动器的相对路径

2024-04-15

我们正在开发一个需要在可移动设备(例如 USB 记忆棒)上运行的应用程序。在 Linux 上,我们使用 Gnome 启动器将应用程序的快捷方式放置在设备的根目录上。但是,我们需要对可执行文件和图标使用相对路径,因为我们事先不知道设备将安装在哪里。在 .desktop 文件中我有类似的内容:

Exec=../myapp/myexecutable
图标=../myapp/myicon.png

未找到可执行文件或图标。我阅读了 .desktop 文件中图标查找的规范(http://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html#icon_lookup),但它并没有启发我。

有没有办法让启动器使用相对路径?如果没有,是否有另一种方法来实现我想要的(即带有图标和可执行文件的快捷方式,使用相对路径指定)?


不支持相对路径*。

一种解决方案是使用安装程序。此脚本根据运行脚本的位置更新桌面文件。使脚本可执行,用户可以单击它进行安装。该脚本要求桌面文件可写。

这是在考虑到 Linux 的情况下完成的。该文件名为自动运行程序;但这只是一个约定,它通常不会自动运行。如果您将其部署在 Linux 以外的其他系统上,则将该文件命名为其他名称(自动运行程序),或者根据平台调整它来做不同的事情。

#! /bin/sh

####  Fixup $APPNAME.desktop.
APPNAME=xvscatter
ICONNAME=xv_logo.png

cd $(dirname "$0")
APPDIR="$PWD/$APPNAME"
EXEC="$APPDIR/$APPNAME"
ICON="$APPDIR/$ICONNAME"

sed -i -e "s@^Icon=.*@Icon=$ICON@" \
    -e "s@^Exec.*@Exec=$EXEC@"  "$APPNAME.desktop"

* 公约为自由桌面 http://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html#directory_layout是将图标放在 $HOME/.icons、/usr/share/icons 或 /usr/share/pixmaps 中。这些目录下是不同图标大小和类型的子目录。当使用这些目录之一存储图标时,桌面文件中仅列出图标名称(不包含目录);否则记录文件的完整路径。

可执行文件(如果在路径中)可以在没有路径名的情况下列出(不安全)。最好列出完整路径。想象一下由于未指定完整路径而启动了错误的程序。

另一种可能性是将桌面文件复制到用户的桌面或/usr/共享/应用程序,并在那里进行编辑。当程序位于只读媒体上时执行此操作。

因为以上都不会导致真正的安装,所以如果可能的话,请使用平台的本机安装程序和打包工具(rpm、dep、portage 等)。这些工具提供了完整安装的框架,包括适当的文件权限(例如 selinux)和桌面菜单。它们还提供轻松卸载。

如果程序必须从可移动媒体运行,请考虑使用系统安装来仅安装符号链接,可能是 /opt/vendor/progname。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Gnome 启动器的相对路径 的相关文章

随机推荐