一个AppImage如何在不同启动之间保持设置的持久性?

3个回答

@muru的回答当然是正确的,应该被点赞和采纳。
让我补充一些要点以便更清楚:
你可以通过使用--appimage-portable-home--appimage-portable-config参数来让AppImage自动创建这两个目录。这只需要做一次:
../some/path/to/my.AppImage --appimage-portable-home ../some/path/to/my.AppImage --appimage-portable-config
这将创建相应的(最初为空的)目录:
1. 然后,AppImage会认为../some/path/to/my.AppImage.home/$HOME。 2. AppImage还会认为../some/path/to/my.AppImage.config/$XDG_CONFIG_HOME。(顺便说一下,$XDG_CONFIG_HOME很常见地默认为$HOME/.config。)
如果你觉得上述两个参数太难记住了,那就记住另一个:--appimage-help。使用它将列出并解释所有可用的其他参数。
并不是每个应用程序都使用$HOME$XDG_CONFIG_HOME。在这种情况下,你新创建的目录将保持为空。否则,它们将在运行时由AppImage的有效负载填充,并在退出时保存所有要记住的设置。
许多应用程序只使用这两个环境变量中的一个,$HOME$XDG_CONFIG_HOME(因此使用my.AppImage.home/my.AppImage.config/),而不是两者都使用。
一些应用程序甚至可能会混淆如果这两个便携设置目录都存在...
如果你将old.AppImage重命名为new.AppImageold.AppImage.home/old.AppImage.config/目录将立即停止工作。你需要相应地重命名这两个目录:new.AppImage.home/new.AppImage.config/
如果你将awesome.AppImage简单地重命名为awesome,你还必须将awesome.AppImage.home/目录重命名为awesome.home/
如果你将AppImage移动到一个新位置,并希望保留先前使用的配置和主目录,则还必须将它们移动。
如果你想摆脱旧的配置并使AppImage再次使用$HOME$XDG_CONFIG_HOME的“标准”路径,那么只需再次删除这些目录。
如果你希望新的AppImage有效负载使用与系统安装版本的有效负载应用程序相同的设置,那么你应该:
1. 首先创建相关的空目录; 2. 找到系统安装的应用程序的相应配置目录; 3. 将该目录的所有内容复制到新的空目录中。

我想知道他们是否字面上使用了“与AppImage相同的名称”。感谢您的确认。您知道AppImage是否支持XDG_CACHE_HOME吗? - muru
1当AppImage启动时,它会知道自己的当前名称和绝对路径。然后,它会检查这两个命名目录是否存在,并且是否有任何有趣的内容供其阅读。-- 我不认为XDG_CACHE_HOME目前受支持。如果不存在XDG_CACHE_HOME,则负载应用程序应该使用HOME/.cache... 你是否有一个使用AppImage自己的XDG_CACHE_HOME的用例?如果是这样,你可能应该在他们的GitHub跟踪器上提交一个问题(https://github.com/AppImage/AppImageKit/issues)... - Kurt Pfeifle
嗯,只是想知道为什么有对XDG_CONFIG_HOME的支持,却没有对其他XDG目录(缓存、数据)的支持。 - muru

AppImageKit README中:

特殊目录

通常情况下,AppImage中的应用程序会将其配置文件存储在它通常存储的位置(最常见的是在$HOME内的某个地方)。如果您调用一个使用最新版本的AppImageKit构建的AppImage,并且已经存在这些特殊目录之一,则配置文件将与AppImage存储在一起。这对于便携式用例非常有用,例如将AppImage与其数据一起放在USB闪存驱动器上。

  • 如果存在与AppImage同名加上.home的目录,则在执行有效载荷应用程序之前,$HOME将自动设置为该目录
  • 如果存在与AppImage同名加上.config的目录,则在执行有效载荷应用程序之前,$XDG_CONFIG_HOME将自动设置为该目录

在Ubuntu中,AppImage默认会将设置存储在以下位置:
  • /home/user_name/.config/my_App_name
  • /home/lwbaqueros/.my_App_name
如果您删除这些文件夹,您将获得您的AppImage应用的全新版本。

  • 相关问题