tmux
Tessera 原生支援 tmux 的控制模式(tmux -CC):視窗和窗格是第一級的介面元素,
而非文字透傳。它需要伺服器上已安裝 tmux。
為什麼要用 tmux
在以 tmux 為後盾的工作階段中,shell 執行在伺服器上。關閉 Tessera、失去 Wi-Fi、 切換到行動網路、讓裝置睡眠 —— 這些都不會終結你的工作。重新連線後,你會回到 離開時的位置。
接入
自動 tmux 啟動模式會接入(或建立)該主機專屬的工作階段,名稱為決定性的
tessera-XXXXXXXX,並在 App 重新安裝後仍會記住。具名 tmux 則接入你指定
名稱的工作階段。兩者都在主機編輯器中依主機設定。
決定性的名稱意味著,使用同一筆主機項目的兩台裝置會進入同一個 tmux 工作階段 —— 這正是在兩者之間接續工作階段如此順暢的原因。
如果 tmux 起不來,Tessera 不會讓你乾等:主機未安裝 tmux、tmux 工作階段啟動失敗,
或 dotfiles 在登入時已經 exec tmux,這些情況都會把你帶進一個純 shell,並附上
說明原因的橫幅(「此主機在登入時會自行啟動 tmux —— 將該工作階段作為純終端機
顯示」)。詳見
連線卡住時。
視窗
tmux 視窗以分頁形式出現在工作階段的頂欄中,依索引順序排列。列上的 + 按鈕可開啟新視窗;當分頁多到放不下時,一個溢位控制項會列出所有視窗。每個分頁都 帶有關閉控制項,而視窗可以從 ⌘K 面板重新命名 —— 該名稱對接入此工作階段的 所有用戶端都生效。
| 快速鍵 | 操作 |
|---|---|
| ⌘T | 新增視窗 |
| ⇧⌘W | 關閉窗格 / 視窗 |
| ⇧⌘[ / ⇧⌘] | 上一個 / 下一個視窗 |
| ⌘1 – ⌘9 | 跳至視窗 1–9 |
窗格
窗格就是真正的 tmux 窗格,透過控制模式驅動。
| 快速鍵 | 操作 |
|---|---|
| ⌘D | 左右分割 |
| ⇧⌘D | 上下分割 |
| ⌘[ / ⌘] | 循環切換窗格 |
| ⇧⌘↩ | 縮放 / 還原窗格 |
在 iPhone 上
從 iPhone 接入絕不會重排你的版面:分割和縮放狀態會維持大螢幕留下的樣子, 而手機透過切換器一次顯示一個窗格。詳見iPhone 上的 tessera。
mosh + tmux
在 mosh 之下,終端機跑在 UDP 上,而 tmux 分頁則搭乘第二條 SSH 側通道。對 mosh 主機而言,這條側通道同樣負責承載 連接埠轉發 —— 以及 真正的回捲緩衝。
響鈴
正是 tmux 控制模式的接線,讓 Tessera 能把終端機響鈴導向 通知 —— 以視窗為單位,並標記發出響鈴的分頁。
注意事項
- 環境變數和啟動指令片段只在 tmux 工作階段啟動時執行。變更之後,請在伺服器上
結束該工作階段(
tmux kill-session)才能套用更改。 - 同時從 Tessera 和另一個用戶端接入是可行的,但兩個用戶端會共用相同的視窗 —— 這是 tmux 的行為,不是錯誤。當另一個用戶端是你自己的 iPhone 或 iPad 時, Tessera 會妥善處理這種競用 —— 詳見取回控制權。
- 如果在大量重繪之後輸出看起來卡住了,⌘R(iPad)會強制完整重繪。而如果 工作階段接入後畫面始終沒有繪製,Tessera 會告訴你(「按任意鍵將其喚醒」)—— 你的第一次按鍵就會讓畫面出現。