快轉到主要內容

將Linux AppImage變成真正的可攜式軟體!Portable mode使用方式

Linux系統 Linux使用技巧 AppImage
🗓️ 民國112年 癸卯年
✍ 切換正體/簡體字
目錄

AppImage安裝教學一文我提過了AppImage格式的使用方法。儘管AppImage設計上是可以一個檔案在任意Linux系統上執行,不過還有個問題沒有解決:設定不會跟著程式跑。

考慮以下情況:

你下載了打包成AppImage的GVim,想要把它放到USB隨身碟帶著走,但是vimrc怎麼辦呢?萬一其他電腦也有vimrc呢?

能不能把vimrc也帶著走,好讓我們點二下開啟GVim的時候就會自動讀取放在隨身碟的vimrc?

這個時候我們可以利用AppImage提供的Portable mode模式,做一個假的家目錄給AppImage優先存取!

1. Portable mode使用方式
#

  1. 在AppImage所在的目錄,建立同名目錄,後面加上.home。例如gvim.AppImage就建立gvim.AppImage.home

  2. 再來把.vimrc放到gvim.AppImage.home

  3. 我們在該個vimrc檔案加入自訂打招呼訊息

autocmd VimEnter * echo "vimrc of gvim.AppImage"
  1. 點選執行gvim.AppImage,在左下角確實看到了打招呼訊息,證實AppImage現在是優先讀取這個目錄了。

以此類推,如果你要在隨身碟放置一堆AppImage程式,那麼結構就會變這樣

.
├── firefox.AppImage
├── firefox.AppImage.home
├── gvim.AppImage
├── gvim.AppImage.home
├── libreoffice.AppImage
├── libreoffice.AppImage.home
├── krita.AppImage
├── krita.AppImage.home

2. Portable Mode原理
#

Portable mode是AppImage打包工具「AppImageKit」提供的功能,可以將同一個目錄下的目錄當成特定目錄使用。

.home結尾的目錄,對應的就是$HOME環境變數,指向使用者的家目錄。上面Gvim的例子,AppImage一偵測.home目錄的存在,便會優先將其當作家目錄使用,讀取vimrc。當然這裡不是Linux使用者真正的家目錄,而是目前路徑下的.home目錄。

另外,若AppImage所在目錄有.config結尾的目錄,對應的就是$XDG_CONFIG_HOME環境變數,該變數指向~/.config,這是大多數Linux程式放設定檔的位置,例如MPV、Google Chrome的設定檔。

AppImage支援的就以上二個,其餘XDG的環境變數不支援的樣子。AppImage是執行時自己判斷.home是否存在,沒辦法在命令行中強迫AppImage要用「哪個家目錄」。


.home目錄就足夠了!我們可以在下面放置家目錄,給應用程式使用。

例如.local/share.local/state.local/bin.ssh等常用的程式目錄。

3. 利用Portable mode隔離程式設定檔
#

既然你知道AppImage有Portable mode可以有自己的家目錄了,那這個方法當然也可以用來隔離AppImage設定檔。

例如,用APT安裝了MPV,你又下載了AppImage的MPV,想測試不同版本之間的差異,那你肯定不會讓他們共用~/.config/mpv/mpv.conf了!

利用上面提及的技巧,給AppImage版的MPV新增一個mpv.AppImage.config的目錄,隔離設定檔吧。

參考資料
#

Using portable mode - AppImage documentation

相關文章

Hyprland設定教學,漂亮又不佔資源的Linux Wayland視窗管理器
Linux系統 Linux使用技巧 Wayland Hyprland
Ubuntu LTS如何安裝Nvidia顯示卡驅動、CUDA、cuDNN、NVIDIA Container Toolkit套件
Linux系統 Linux使用技巧 Ubuntu Nvidia
Ubuntu 22.04如何連接Apple Airpods Pro藍牙耳機並查看電量
Linux系統 Linux使用技巧 GNOME Ubuntu KDE Plasma

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur連結。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。