将AppImage文件注册为桌面应用程序

如何将一个 .appimage 文件(具体来说,是在 这里 找到的平铺地图编辑器)注册为桌面应用程序?(就像 Firefox 一样 - 我可以通过在搜索中键入“Firefox”来启动它,而不是打开控制台并键入 /path/to/directory/firefox.ext

将可执行文件放置在你的PATH中,比如/usr/bin,然后你就可以像启动Firefox一样启动它了。 - George Udosen
有没有办法在我的 PATH 中放置一个文件的“快捷方式”?我不想把它移到那里。 - user662777
没关系,我刚刚写了一个bash脚本来启动它,并将其放在了~/bin目录下。谢谢你的帮助,尽管你实际上并没有回答我的问题 :P - user662777
3个回答

创建一个指向应用程序的.desktop文件--这是一个Minecraft的.desktop示例:
[Desktop Entry]
Type=Application
Name=Minecraft
Comment=Minecraft
Icon=/home/bram/Applications/Minecraft/icon.png
Exec=/home/bram/Applications/Minecraft/minecraft
Terminal=false
Categories=Minecraft;game

将该文件放入~/.local/share/applications目录中。

你说的做完了,执行AppImage的时候会保持终端开启吗?有没有办法只打开AppImage而不需要同时开启终端呢? - cssmtnr
16为什么在AppImage已经包含了图标的情况下,你还需要下载一个单独的图标呢?你如何使用来自AppImage本身的图标呢? - Dan Dascalescu
我试图为AppImage创建一个桌面启动器,它的图标位于/opt/app-dir/目录下。我运行了chmod 777 icon.png命令,但是图标没有显示出来。我不得不将图像放在/usr/share/pixmaps/目录下,并在启动器中添加Icon=<icon-name-without-extension-or-path>来使图标可见。 - Mike
@Mike(以及可能还有其他人)。由于有26个人点赞并且据推测他们都关注了这个回答,所以其中一个人能否将示例中的Minecraft替换为Joplin,以免后来者需要再次替换。 - Kvothe
@DanDascalescu 不确定这是否是最正确的方法,但我能够通过终端以这种方式提取图标:./Some-X.Y.Z.Appimage --appimage-extract,它会提取到一个squashfs文件夹,在那里我能够找到一个PNG文件作为图标。 - jmunsch

你还可以使用AppImageLauncher,它提供了桌面集成以及一些额外的功能。与appimaged不同的是,它:
  • 在创建AppImage的桌面入口之前会要求确认。
  • 可以处理任何位置的AppImage。
  • 不使用守护进程进行监控,因此更高效。
关于其工作原理的具体细节,请参阅wiki。您可以直接从发布页面提供的软件包中安装,或者使用PPA软件源中的软件包进行安装。
sudo add-apt-repository ppa:appimagelauncher-team/stable
sudo apt-get update
sudo apt-get install appimagelauncher

我刚刚通过PPA在Ubuntu Focal上安装了它。我启动了一个Zoom AppImage,现在如果我输入Zoom,它会出现在启动器中。很方便 :) - Immanuel Weihnachten
1你能否提供一个简单的例子来说明它是如何工作的?对于链接的维基百科的粗略阅读并没有清楚地解释。 - Kvothe
@Kvothe 我不是这个工具的创建者 :) 考虑在存储库中创建一个问题,要求相同的功能。 - aksh1618
也在PopOS 21.04的GNOME上工作过。太棒了! - Reza Taba
它很好用!我所要做的只是(a)按照这里显示的安装,(b)在终端中运行它,即"$ appimagelauncher",以及(c)像平常一样打开AppImage。第一次运行AppImage时,appimagelauncher会捕获它并"安装"它。就是这样! - gvegayon
@gvegayon 你确定需要执行步骤b吗?我不记得需要这样做。对我来说,只需要安装并双击appimage文件就可以了。 - aksh1618
非过时的、更新的 https://github.com/probonopd/go-appimage/blob/master/src/appimaged/README.md 自动监视并链接位于 ~/Downloads 目录中的文件,这事实有点令人担心。 - undefined

根据appimagekit的说法,正确的方法是使用appimaged来进行.AppImage文件的注册。
对于64位系统:
wget "https://github.com/AppImage/appimaged/releases/download/continuous/appimaged-x86_64.AppImage"
chmod +x appimaged-x86_64.AppImage
./appimaged-x86_64.AppImage --install

二进制文件将复制到/home/ubuntu/.local/bin/appimaged,然后在安装完成后删除下载的副本。然后您必须注销并重新登录。
阅读时,它将监视并注册以下位置:
~/Downloads
~/.local/bin
~/bin
/Applications
/isodevice/Applications
/isofrom/Applications
/run/archiso/img_dev/Applications
/opt
/usr/local/bin

要在菜单中显示,这意味着您已经将一个桌面文件放置在正确的位置,即您的.AppImage文件内,通常是/usr/share/applications/<myproject>.desktop
如果您在应用程序托盘中搜索,您应该很快找到您的应用程序。假设mime xml也被捆绑在一起,守护进程还应该注册任何特定于应用程序的文件关联,通常是/usr/share/mime/packages/<myproject>.xml。如果图标显示不正确,您可能需要注销并再次登录。这可能是因为在测试图像时图标被错误地缓存了两次。

appimaged链接中的建议是使用 sudo systemctl --user [...] 来启用,但是难道不应该使用 --system [也就是默认选项] 吗?使用 --user 的话会不会只启用给我的用户呢?顺便说一句,我尝试为所有用户安装digikam。 - pbhj
在我的系统上,Ubuntu 14.04,systemctl的步骤没有正常工作。你应该向项目团队询问如何最好地完成这个任务。这个服务似乎是设计为在用户空间中运行的,所以系统范围的安装技术并不明显。也许你会对将appimage永久地放在某个位置(例如/opt/bin/appimaged),并在/etc/xdg/autostart/appimaged.desktop中为所有用户使用登录脚本感到满意,但是这个脚本要使用--no-install开关。 - tresf
然后将数码相机放置在(例如)/opt/bin/digicam中,守护进程应该能够找到它,因为它将与上述倒数第二个搜索位置匹配。 - tresf
1Appimaged是从https://github.com/AppImage/AppImageKit#appimage-usage指向https://github.com/AppImageCommunity/appimaged的,但该链接已被弃用,指向https://github.com/probonopd/go-appimage/blob/master/src/appimaged/README.md,该链接又指向https://github.com/probonopd/go-appimage/blob/master/src/appimaged/README.md。在2023年,这对我来说是有效的。如果按照这些说明安装appimage,它将监视$PATH、~/Applications、~/.local/bin、/opt、/usr/local/bin和~/Downloads(!!!),并配置您的菜单以链接到appimages。胜利! - undefined
1@DaveX,谢谢你的推荐。奇怪的是,go-appimagego-appimaged都被标记为“实验性”。我会联系probonopd,看他有什么建议,并相应地更新答案。 - undefined