在 AppImage安裝教學一文我提過了AppImage格式的使用方法。儘管AppImage設計上是可以一個檔案在任意Linux系統上執行,不過還有個問題沒有解決:設定不會跟著程式跑。
考慮以下情況:
你下載了打包成AppImage的GVim,想要把它放到USB隨身碟帶著走,但是vimrc怎麼辦呢?萬一其他電腦也有vimrc呢?
能不能把vimrc也帶著走,好讓我們點二下開啟GVim的時候就會自動讀取放在隨身碟的vimrc?
這個時候我們可以利用AppImage提供的Portable mode模式,做一個假的家目錄給AppImage優先存取!
1. Portable mode使用方式#
在AppImage所在的目錄,建立同名目錄,後面加上
.home
。例如gvim.AppImage
就建立gvim.AppImage.home
再來把
.vimrc
放到gvim.AppImage.home
我們在該個vimrc檔案加入自訂打招呼訊息
autocmd VimEnter * echo "vimrc of gvim.AppImage"
- 點選執行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
的目錄,隔離設定檔吧。