快轉到主要內容

將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強制投放的廣告。有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。