如何将 .appimage 程序的快捷方式添加到启动器?

H3R*_*T1K 6 20.10

之前已经问过这个问题,但提供的答案不再有效。

Joe*_*Joe 3

这有几个部分。

第一个最基本的问题是,就 Linux 而言,AppImage 只是一个与其他任何程序一样的可执行二进制程序。为此,您要做的第一件事就是使 AppImage 文件可执行,因为在您下载的大多数内容中通常会禁用该权限。

chmod 755 your-AppImage-file
Run Code Online (Sandbox Code Playgroud)

另一部分是告诉您的系统在哪里可以找到 AppImage 文件。当您从 GUI 运行时,不要假设环境设置与从终端运行它们时相同。特别是,KDE 不会.bashrc首先运行,因此它所做的任何自定义(例如添加$HOME/bin到 PATH 中)尚未完成。

我存储的所有 AppImage 文件$HOME/Containers不在我的 PATH 中,因此 Linux 默认情况下找不到它们。因此,我可以将该目录添加到我的 PATH 中,或者在运行 AppImage 时指定它。我选择后者。

解决此问题后,您所要做的就是在启动器中添加一个条目来运行 AppImage。应将其设置为运行 AppImage 文件的绝对路径。

第二个问题是我使用的许多 AppImage 在文件名中包含版本号。当这些更新(有时自动更新)时,这会破坏指向旧名称的菜单条目。我没有在每次发生这种情况时手动编辑菜单,而是编写了一个帮助程序脚本来通过为我查找 AppImage 来处理此问题。

这应该保存在您的 PATH 目录中的文件中,例如$HOME/bin并设置为可执行文件。

#!/bin/bash
## app_launch 
## Launch an AppImage with a variable name
## Copyleft 06/10/2019 - Joseph J Pollock - JPmicrosystems
## Usage: app_launch <unique-name-substring>
## FIXME: arg may not have embedded blanks

##source $HOME/bin/bash_trace
cd "$HOME/Containers"  ## Where all my AppImages live
##find . -iname \*$1\*.AppImage  ## debug
real_name="$(find . -iname \*$1\*.AppImage)"
##echo "real_name = [$real_name]"

count="$(echo "$real_name" | wc -l)"
if (( count > 1 ))
then
  echo "Found more than one possible AppImage"
  exit 1
fi

if [[ ! -x "$real_name" ]]
then
  echo "Can't find an executable AppImage for [$1]"
  exit 1
fi

./"$real_name"
Run Code Online (Sandbox Code Playgroud)

我在菜单项中使用它:

app_launch electrum %U
Run Code Online (Sandbox Code Playgroud)

这里的技巧是选择一个字符串(上例中的“electrum”),该字符串对于所需的 appImage 文件名是唯一的,但在不同版本之间不会改变。

%U 并不是绝对必要的,但请参阅下面的注释。

当你第一次为新的 AppImage 配置菜单项时,你应该第一次从终端运行 app_launch,因为如果出现问题,它会向控制台发出消息,而我没有费心让它们成为 GUI 消息,所以你赢了从菜单/启动器运行脚本时看不到它们。


添加菜单项时,您可以添加一些可选参数作为参数。您通常不需要它们,但它们在更高级的用途中会派上用场。这些在 KDE 中工作,但我怀疑它们是更通用标准的一部分,并且也应该在其他地方工作。

%f - a single file name
%F - a list of files; use for applications that can open several local files at once
%u - a single URL
%U - a list of URLs
%d - the folder of a file to open
%D - a list of folders
%i - the icon
%m - the mini icon
%c - the caption
Run Code Online (Sandbox Code Playgroud)

我有一些 bash 脚本将文件名作为参数。我的菜单中有它们,并且我还将它们设置为文件管理器中的文件类型选项,当我右键单击文件管理器中的文件图标时会提供这些选项。当我这样做时,文件管理器会将 %f 替换为我刚刚单击的文件名,以便我的脚本知道如何使用该文件。