介面
本頁是 lip 交互介面的簡明參考:按鍵、各個頁面及其背後的命令,以及每個頁面都遵守的規則。想一步一步學習介面,請從介面導覽開始。
規範性定義見協議的 lip-tui(1) 頁。
啟動
lip標準輸入和標準輸出都是終端機時,不帶參數的 lip 會開啟介面;否則輸出幫助(見命令行)。
- 介面同一時間只操作一個工作區,即目前工作區:一開始是啟動
lip時所在的資料夾。 - 介面由 lip 的常駐程式執行。可以同時開啟多個介面。
- 終端機至少要有 60 列、16 行。更小的終端機裡,lip 會請你放大終端機,這時唯一可用的按鍵是
Ctrl+C,它不經詢問直接結束。 - 終端機不足 80 列時,焦點在頁面上的時候,側邊欄只為每個頁面顯示一個符號。
按鍵
同樣的按鍵在每個頁面上作用相同。螢幕最下面一行列出焦點所在位置可用的按鍵。
| 按鍵 | 作用 |
|---|---|
↑ ↓ | 在清單或選單裡移動。在側邊欄裡顯示上一個或下一個頁面。 |
← → | 在側邊欄和頁面之間、並排的窗格或按鈕之間移動;變更有多個取值的選項。 |
Enter | 開啟或執行選取的內容。在清單的某一行上,開啟它的操作。 |
Space | 在可以多選的地方勾選一行;開啟或關閉一個選項。 |
Tab、Shift+Tab | 前往下一個或上一個區域,在側邊欄和頁面的各個區域之間循環。 |
Esc | 返回上一層:從對話方塊回到頁面,從頁面的內層區域回到前一個區域,從頁面回到側邊欄。在側邊欄裡詢問是否結束。 |
PgUp PgDn Home End | 在清單或文字裡翻頁。在側邊欄裡,Home 和 End 顯示第一個和最後一個頁面。 |
Ctrl+C | 在「伺服器」頁且伺服器執行時,停止伺服器。正在執行變更時,取消它。其他情況下詢問是否結束。 |
| 字母和數字 | 焦點在輸入框裡時用於輸入。在其他地方不起作用:介面沒有字母快速鍵。 |
頁面
| 頁面 | 作用 | 命令 |
|---|---|---|
| 首頁 | 顯示目前工作區的狀態和下一步該做什麼。 | |
| 伺服器 | 啟動和停止伺服器,顯示它的輸出,把你輸入的內容發給它。 | lip run --managed --detach、lip config set restart … --workspace |
| 模組 | 列出已安裝的套件;安裝、更新和解除安裝它們。 | lip list、lip install、lip update、lip uninstall |
| 取得模組 | 搜尋 levimc.org 上的模組,並安裝其中某個版本。 | lip install |
| 遊戲設定 | 編輯 server.properties、allowlist.json 和 permissions.json。 | 無 |
| 模組設定 | 編輯已安裝模組的設定檔。 | 無 |
| 工作區 | 列出工作區;切換、新增和移除工作區;建立伺服器;變更某個伺服器的遊戲或載入器。 | lip setup |
| 工具 | 建立 lip.toml、移轉 tooth.json、封裝 ZIP、檢視套件資訊。 | lip pkg init、lip pkg migrate、lip pkg pack、lip pkg view |
| 設定 | 語言、GitHub 代理伺服器、自動重新啟動、快取、lip 的更新、常駐程式、版本。 | lip config、lip cache clean、lip self-update、lip daemon status、lip --version |
介面執行的命令遵守該命令自己的頁面的定義,以目前工作區為工作目錄,但有以下不同:
- 命令的輸出顯示在介面裡,是英文。
- 命令要詢問的內容在對話方塊裡詢問。
- 命令失敗時,介面顯示原因,然後繼續執行。
預覽與應用
對工作區裡的套件所做的每項變更都走同一個流程:安裝、更新、解除安裝,以及安裝遊戲或載入器。
| 步驟 | 發生什麼 |
|---|---|
| 1. 預覽 | lip 以試執行的方式執行命令,顯示它將要做什麼。此時什麼都沒有改變。 |
| 2. 套用或取消 | 套用繼續。取消不作任何變更。預覽發現沒有可改的內容時,只有關閉一個按鈕。 |
| 3. 授權合約 | 僅當這次變更要安裝遊戲時:lip 顯示《Minecraft 終端使用者授權合約》和《Microsoft 隱私權政策》。接受繼續;拒絕不作任何變更。 |
| 4. 進度 | Esc 或 Ctrl+C 取消;已經做的部分會被復原,並有一個標題為已取消的對話方塊說明。這不算失敗。 |
| 5. 結果 | 命令的輸出,以及 ✓ 完成。 |
- 應用不會從頭再來:預覽時讀取和下載的內容會直接使用。
- 安裝伺服器的預覽裡點名了某些已安裝的模組、說它們沒有適合新遊戲或新載入器的版本時,選擇套用會解除安裝這些模組。
- 失敗時顯示原因、lip 給出的提示(如果有),以及失敗報告的路徑(在工作區的
.lip/logs下)。
伺服器執行期間
只要 lip 在執行某個工作區的伺服器,這個伺服器就算在執行,不管是誰啟動的:介面、lip run --managed,還是終端機裡普通的 lip run。這期間,介面對該工作區的行為如下:
| 內容 | 伺服器執行期間 |
|---|---|
| 安裝、更新和解除安裝套件(模組、取得模組) | 不可用。 |
| 在它的資料夾裡建立伺服器、變更它的遊戲或載入器(工作區) | 不可用。 |
server.properties、allowlist.json、permissions.json(遊戲設定) | 只顯示,不能修改或儲存。未儲存的變更會保留到伺服器停止。 |
| 模組的設定檔(模組設定) | 照常修改和儲存。頁面會提示變更可能需要重新啟動。 |
| 其他一切:瀏覽模組、切換工作區、工具、設定 | 照常。 |
不可用的內容仍然顯示在螢幕上,是灰色的,並註明原因:請先停止伺服器。
以上只針對介面。命令 lip install、lip update、lip uninstall 和 lip setup 在伺服器執行期間不會被拒絕,見用命令執行伺服器。
結束介面不會停止由常駐程式執行的伺服器。如果 lip 因為無法使用常駐程式而自己執行介面,結束時會停止介面啟動的伺服器。
設定檔
| 檔案 | 讀取 | 寫入 |
|---|---|---|
server.properties | 「遊戲設定」頁顯示時。 | 儲存時:只寫改過的屬性的值,不動其他任何字元。檔案不存在時不會建立。 |
allowlist.json、permissions.json | 同上。不存在的檔案讀作空清單。 | 儲存時:整個檔案,不含註釋。檔案不存在時會建立。 |
模組的 .json 檔案 | 在「模組設定」頁選取該檔案時。 | 儲存時:整個檔案,不含註釋,每個名稱留在原位。檔案已不存在時不會建立。 |
| 模組的其他檔案 | 同上。 | 從不寫入。 |
- lip 讀不懂的檔案只顯示,從不寫入。
- 自 lip 讀取之後在磁碟上被改動過的檔案,只有在你同意時才會被覆寫。
- 帶著未儲存的變更離開頁面時,會詢問是否儲存。
- 儲存的變更在伺服器下次啟動時生效。
模組的檔案指 mods/<mod>/config/ 裡的檔案;如果一個都沒有,則是直接放在 mods/<mod>/ 裡的 .json、.ini、.toml、.yml、.yaml 檔案(manifest.json 除外),以及 mods/<mod>/data/config.json。
語言
language 的值 | 介面 |
|---|---|
en | 英文 |
zh-Hans | 簡體中文 |
zh-Hant | 繁體中文 |
| 未設定 | 系統的語言:英文,或按區域設定決定的中文。 |
語言在設定頁選擇,或者用 lip config 設定;見設定。變更立即生效。命令輸出的內容在任何語言下都是英文。
GitHub 檢查
介面啟動時,如果 github_proxy 沒有設定,lip 會在背景檢查一次能否連上 GitHub,最多等待 10 秒。連不上時,介面會詢問怎樣連線:
| 回答 | 作用 |
|---|---|
| 使用代理伺服器 | 詢問代理伺服器的網址、進行測試,並把 github_proxy 設為該網址。 |
| 直接連線 | 把 github_proxy 設為空值:lip 不再檢查,也不再詢問。 |
| 以後再說 | 不作任何變更;下次介面啟動時 lip 會再檢查。 |
見設定。
結束狀態
結束介面時,lip 以程式碼 0 結束,不管在介面裡執行的命令結果如何,也不管伺服器以什麼程式碼結束。
檔案
| 檔案 | 介面 |
|---|---|
狀態目錄裡的 workspaces.json | 讀寫工作區清單。 |
設定目錄裡的 config.toml | 讀取 language 和 github_proxy;在「設定」頁和 GitHub 檢查時寫入它們。 |
工作區裡的 .lip/config.toml | 讀寫 restart(自動重新啟動)。 |
工作區裡的 server.properties、allowlist.json、permissions.json | 讀取;儲存時寫入。 |
mods/ 下模組的設定檔 | 讀取;儲存時寫入其中的 .json 檔案。 |
工作區裡的 .lip/logs/ | 命令失敗時寫入失敗報告。 |
https://levimc.org/api/v4/mods/ | 讀取模組目錄。其內容不會寫入磁碟,也不經過 github_proxy。 |
介面執行的命令會讀寫它們各自頁面所說的檔案。lip 的所有檔案和目錄見檔案。