終端機
Mobile SSH 終端機係為手機同平板操作而設計。佢結合咗終端機畫布、額外按鍵列、多工作階段窗格、捲動處理同重新連線行為。
終端機基礎
- 終端機採用 xterm 風格行為,支援顏色同游標鍵處理。
- 捲動緩衝區預設保留 5000 行,喺 Settings 亦可以設做 1,000、10,000 或者 50,000 行。
- 輸入之前先撳窗格去選取佢。
- 喺終端機窗格上面用兩指捏合可以更改文字大細。手勢穩定之後,Mobile SSH 會調整遠端 PTY 嘅大細。
- 雙撳窗格(或者用佢嘅展開控制項)進入全螢幕模式。喺 Android 用返回鍵,喺 iOS 用收合控制項,返去格網。
多工作階段格網
Mobile SSH 最多可以同時執行八個 SSH 工作階段。每個工作階段以窗格形式顯示喺終端機格網。撳窗格去選取佢,或者用 + Add Session 開始另一個連線。
窗格標題會話你知你身處邊度。喺 Android,佢顯示嗰個窗格真正嘅工作目錄 —— 由 tmux 問返嚟或者由 shell 經 OSC 7 報上嚟,而且喺應用程式開住嗰陣會不斷更新;喺 iOS,佢顯示遠端設定嘅標題,冇嘅話就退返做 user@host:port。
關閉窗格會中斷嗰個 SSH 工作階段。返起始畫面嗰陣,使用中工作階段仍然可以透過 Active Sessions 使用。
Eternal Terminal(ET)
每部已儲存伺服器可以揀兩種傳輸方式之一,喺新增或編輯伺服器嗰陣用 Transport 選擇器揀:
- SSH —— 標準 SSH 連線(預設)。
- Eternal Terminal —— ET 工作階段,喺斷網、裝置休眠同 IP 位址轉變之後都唔使重開你個 shell。
ET 會喺伺服器嗰邊令工作階段繼續生存,所以當你部電話轉網絡或者由休眠醒返嗰陣,Mobile SSH 會重新附加返落同一個執行緊嘅 shell,而唔係開一個新嘅。所以佢好啱流動數據、Wi-Fi/流動網絡切換,同埋長時間執行嘅指令。
ET 需要主機上有 etserver 程序。如果伺服器冇,Mobile SSH 可以經現有嘅 SSH 連線幫你安裝同啟動佢 —— 唔使你手動設定伺服器。ET 一得,就揀 Eternal Terminal 傳輸方式連線。
額外按鍵列
兩個平台都將十三個終端機按鍵擺喺你手指可及嘅位置 —— 就係喺觸控鍵盤上唔方便或者根本冇嘅嗰啲。喺 Android 佢係工作階段底部嘅一條長條(接咗硬件鍵盤嗰陣會自己收埋);喺 iOS 佢就浮喺軟鍵盤上面。
兩套預設按鍵數目一樣,但唔完全相同:
| Android | iOS | |
|---|---|---|
| 預設鍵 | ESC TAB CTRL 方向鍵 HOME PGUP END PGDN ⌫ ⌨ | ESC TAB CTRL ⇧ 方向鍵 HOME END PGUP PGDN ⌨ |
| 分別 | 有退格鍵,冇 Shift | 有黏性 Shift,冇退格鍵 |
呢一列永遠唔會滑動。 當啲鍵放唔晒落個闊度,佢哋會平均分配空間並換去第二行;仲有剩嘅就收入 ⋯ 溢出選單。冇任何鍵會匿喺滑動手勢後面或者被螢幕邊緣切走,而已經扳起咗嘅修飾鍵,一樣會作用喺你由溢出選單揀出嚟嘅鍵上面。
CTRL 係黏性修飾鍵:撳 CTRL,再輸入 C,就會傳送 Ctrl-C。Shift 喺 iOS 比喺 Android 黏啲 —— 喺 iOS 佢仲會將你喺軟鍵盤打嘅下一個字元變大階,而喺 Android 佢淨係作用喺呢條列自己嘅鍵上面(Shift+Tab、Shift+方向鍵)。
㩒住方向鍵或者 PGDN 呢類鍵唔放,佢會重複輸入。
鍵盤行為
終端機同螢幕鍵盤採用原生直通連接:你打字嗰陣,每個字元即刻傳去遠端 shell,自動更正同預測建議都關咗,所以鍵盤永遠唔會喺輸入到達 shell 之前改寫佢。噉樣令 Vim、tmux、htop、less、用特殊組合鍵嘅 shell 同遠端密碼提示都保持可預期 —— 冇任何建議緩衝需要關閉。
- 撳終端機顯示鍵盤: 啟用之後,撳終端機會要求系統顯示螢幕鍵盤。
螢幕鍵盤嘅語音聽寫照樣用得:聽寫嘅文字會好似其他輸入一樣,直接送入 shell。
硬件鍵盤
外接同 Bluetooth 鍵盤喺 Android 同 iOS 上面都可以直接操控終端機。除咗普通字元,Mobile SSH 仲對應方向鍵、Home/End、PgUp/PgDn、Insert、Delete、Esc、功能鍵 F1–F12、Ctrl+按鍵同 Alt/Option 作為 Meta 嘅組合鍵,以及 Shift+Tab。修飾鍵會同額外按鍵列嘅黏性修飾鍵一齊組合。
貼上
當你貼上落一個有要求嘅程式(bash、Vim 同其他支援 bracketed-paste 嘅應用程式),內容會用括號貼上標記包住,所以多行剪貼簿內容會以文字方式插入,而唔會逐行被自動執行。只有真正嘅貼上先會咁包住;輸入同聽寫嘅文字唔會受影響。
選取、複製、分享
喺終端機入面長撳可以選取手指下面嗰個詞語,再拉動控制點去調整範圍。選取工具列提供三個操作:
- 複製 —— 將所選文字放入系統剪貼簿。複製之後選取仍然保持 highlight,方便你分享、重新複製或者延伸範圍。
- 分享 —— 將所選文字傳俾系統分享面板(電郵、筆記、訊息等)。
- 全選 —— 將選取擴展到整個可見終端機緩衝區,然後複製或分享。
喺終端機入面尋找
搜索成個終端機緩衝區 —— 包括回滾緩衝同可見畫面 —— 並喺各個匹配之間跳轉。喺終端機控制項打開搜索,輸入查詢字串,再逐個匹配去睇。Android 同 iOS 都用得。
色彩、斜體同遠端剪貼簿
- 終端機會顯示 24-bit 真彩色 同 斜體,令主題化嘅提示符、語法高亮同 TUI 睇落同桌面上一樣。
- OSC 52 剪貼簿: 當遠端程式複製文字(tmux
set-clipboard、Vim/Neovim 嘅 OSC 52 yank),佢會落到你電話嘅剪貼簿 —— 咁你就可以喺伺服器度複製,再貼到本機 App。 - 喺 Android 同 iOS 上,寬 CJK、emoji 同組合字元(字素叢集同零寬連接符)都會正確量度同繪製,而內置嘅 Nerd Font 仲會顯示 powerline、starship、devicon 同 Material Design 圖示字形 —— 系統字型本來會將佢哋顯示成空白方格。
Shell 整合同內嵌圖片
- Shell 整合(OSC 133): 當你嘅 shell 送出 OSC 133 提示符標記時,Mobile SSH 可以喺各個提示符之間逐個跳,並喺長時間指令完成時提示你。Android 同 iOS 都用得。兩個 App 都唔會自己注入啲標記 —— 要你嘅 shell 送出(例如
PROMPT_COMMAND/precmdhook,或者 starship)。喺 Android,提示符導覽要你喺 Settings → Shell integration 開咗先有;喺 iOS,一有標記入到嚟,個選單就會自己出現。 - 揀選輸出: 喺一個指令嘅輸出入面任何位置㩒一下,就可以揀選成段輸出 —— 譬如 300 行之前嗰個 build 錯誤,唔止係最後一個指令 —— 然後複製、分享或者延伸範圍。
- 內嵌圖片: 用 Kitty graphics protocol 嘅程式會直接喺終端機畫出圖片,Android 同 iOS 都得。圖片喺揑住縮放同重新換行之後都仲喺度:佢哋以字元格為單位量度,跟住自己嗰行走,而唔係被掉咗留低個窿。佢哋屬於主畫面嘅功能,當全螢幕 TUI 接管嗰陣就會被清走。
- 馬賽克字形(Android): 方塊、點字、六分格同八分格字元由應用程式自己畫,而唔係向字型攞,所以
chafa、timg同 ANSI art 可以完美貼合成個格網 —— 冇接縫、冇空白方格,無論你揀咗咩字型都一樣。 - 真正嘅工作目錄(Android): 窗格標題顯示嗰個窗格實際身處嘅位置,由 tmux 問返嚟或者由 shell 經 OSC 7 報上嚟,而唔係上一個提示符啱啱印咗啲乜。
外觀同按鍵
喺 Android 同 iOS,Settings 可以俾你自訂終端機:
- 字型: 揀系統等寬字型、JetBrains Mono 或者 Source Code Pro。
- 配色: Default、Solarized Dark 或 Light、Gruvbox、Dracula,或者 Nord —— 即時套用到開住嘅面板。
- 附加按鍵列: 新增、移除、重新排序同隱藏按鍵,自訂你自己嘅跳脫序列按鍵,並重設做預設,仲有即時預覽,會顯示你實際會得到嘅分行結果。Android 將呢啲擺喺 Keys 分頁;iOS 就喺 Extra keys → Customize keys 下面。
- 由預設加入: 大約 45 個按鍵、分做六組嘅面板 ——
F1–F12、^C^D^Z^R^L呢類 Ctrl 組合鍵、|~/_:等符號,同埋修飾鍵。F1–F12係以普通跳脫序列送出,所以唔使FN組合鍵。Android 仲提供一個 📎 Attach a file 鍵,撳咗會打開檔案選擇器並上載入運行緊嘅工作階段;iOS 就提供INS、DEL,同埋一個會展開數字列嘅FN鍵。 - 回滾大細: 1,000、5,000、10,000 或者 50,000 行(預設 5,000)。套用喺新開嘅窗格。
- 文字大細: 一個滑桿,同揑住縮放並存。
- 主題: 成個 App 可以揀 System、Light 或者 Dark。
重設係還原到出廠預設,而唔係將今日呢份清單凍結咗,所以之後版本嘅改良一樣去到你度。改動會即時套用到已經開住嘅窗格。
捲動
Mobile SSH 會根據終端機狀態路由捲動手勢:
- 喺正常 shell 輸出,滑動會捲動本機捲動緩衝區。
- 喺滑鼠模式嘅終端機應用程式,捲動會傳送滑鼠滾輪逸出序列。
- 喺冇滑鼠模式嘅備用畫面應用程式(例如好多 tmux 工作階段),捲動會進入 tmux 複製模式並傳送逐行捲動指令。
喺 Android,喺追蹤滑鼠嘅程式入面㩒一下,會當成喺嗰個字元格上面㩒咗左掣,所以 htop、vim 同㩒一下就聚焦嘅窗格都響應到觸控。喺 iOS,喺同一類程式入面㩒一下係彈鍵盤而唔係㩒滑鼠;淨係滾輪捲動會報上去。
如果你喺向後捲動嘅狀態下輸入,Mobile SSH 會返去即時終端機檢視。
tmux 行為
Mobile SSH 會觀察送出嘅 tmux attach 同新工作階段指令,例如:
tmux attach -t work
tmux a -t work
tmux new -A -s work
當你喺 tmux 入面時連線中斷,應用程式可以記住嗰部伺服器最後嘅 tmux 工作階段名稱,並喺重新連線之後嘗試重新附加。如果冇觀察到明確嘅工作階段名稱,但應用程式知道你曾經喺備用畫面嘅類 tmux 工作階段,佢可能會嘗試通用嘅 tmux attach。
呢個行為係盡力而為。如果遠端 tmux 工作階段已經唔存在,遠端 shell 仍然可用。
Tmux 管理器
Mobile SSH 內置咗一個 tmux 管理器,等你唔使打 prefix 組合鍵都可以瀏覽同控制 tmux。喺已連線嘅工作階段撳 Tmux 掣打開佢。佢分三欄列出:
- Sessions —— 伺服器上面每一個 tmux 工作階段。
- Windows —— 所選工作階段入面嘅視窗。
- Panes —— 所選視窗入面嘅窗格。
喺管理器入面你可以:
- 將一個工作階段 Attach 落目前嘅終端機。
- Create 新工作階段或視窗,同埋 rename 佢哋。
- 將窗格橫向或縱向 Split、將窗格 zoom,以及 kill 工作階段、視窗或窗格。
- 按名稱或建立日期 Sort 工作階段。
🔔 標示任何代理等緊輸入嘅工作階段,等你一眼就見到停低咗嘅 Claude Code 或者 Codex,並附加落去。呢個同上面嘅 reattach 提示互補:reattach 邏輯喺重新連線時自動還原你上一個工作階段,而管理器就俾你完全手動控制。
兩個平台都可以喺同一部主機上管理多過一個 tmux 伺服器(socket),亦可以按名稱或建立日期排序工作階段。
Herdr 同 Zellij(Android)
Android 為另外兩個多工器提供咗同樣嘅嘢。每個都有自己嘅工具列圖示,而且要應用程式真係喺伺服器上面搵到嗰個程式,個圖示先會出現 —— 所以個工具列會話你知嗰邊裝咗乜,唔使你自己行 which。
- Herdr 用佢自己嘅一套詞彙:工作階段、工作區、分頁、窗格。每個窗格會顯示佢個代理嘅狀態 —— 做緊嘢、等緊你、閒置 —— 而卡住咗嘅代理可以直接喺清單度回覆。Herdr 自己嘅狀態會餵入應用程式嘅代理徽章,所以就算伺服器上面冇裝 hook 都用得。
- Zellij 列出工作階段、分頁同窗格,並支援 attach、rename、kill 同 split。被 kill 咗嘅工作階段仍然會列出,所以 attach 就會令佢哋復活,而 delete 就會永久忘記佢哋。分頁同窗格嘅詳細資料要 Zellij 0.44 或以上;舊版本嘅話,個頁面會顯示分頁名稱並解釋原因。Split 要有 client 附加咗喺個工作階段度,個頁面會照直解釋,而唔係俾粒一定失敗嘅掣你撳。
如果 herdr 或者 Zellij 裝咗但唔喺登入 shell 嘅 PATH 入面,個頁面會提議幫你加返。
每部已儲存伺服器都有一個 Attach on connect 設定:Auto (detect)、Nothing、tmux、herdr 或者 Zellij。Auto 會揀你喺嗰部伺服器上次用嗰個,跟住揀有活躍工作階段嗰個,再跟住揀裝咗嗰個 —— 如果佢仲未探測過部伺服器,佢寧願咩都唔 attach,都唔會亂估。
iOS 應用程式今日淨係支援 tmux。
Agent alerts
當遠端 AI 編碼代理 —— Claude Code、Codex、Gemini —— 卡住咗等緊你,Mobile SSH 會話你知。佢唔會靠讀你嘅終端機輸出去估。有兩條路徑,佢哋提供嘅詳細程度唔同。
響鈴
開箱即用:由一個你冇睇緊嘅工作階段傳嚟嘅終端機響鈴會觸發提示,好多工具已經送出嘅桌面通知跳脫序列(OSC 9、OSC 777)亦一樣。喺你啱啱打完嘢之後即刻嚟嘅響鈴會被忽略,所以平時 shell 自動補全嗰啲聲唔會嘈你。
呢個唔使任何設定,不過應用程式淨係知有嘢響咗。
Agent hook
要應用程式知道係邊個代理等緊、佢做緊乜,就要喺伺服器上面裝 agent hook:
- iOS: Settings → Agent alerts → Install Agent Hook。如果連咗多過一部伺服器,佢會問你揀邊部。
- Android: 長撳工作階段嘅窗格標題,揀 Install agent hooks。
呢個會喺嗰部伺服器寫入一個細細嘅 shell 腳本,位置係 ~/.mobile-ssh/agent-hook.sh。佢唔綁定任何代理 —— 佢收命令列參數,而唔係去解析某一間供應商嘅格式 —— 所以任何識行指令嘅嘢都可以經佢報告。刪咗個檔案就係乾淨咁解除安裝。
一旦代理經個 hook 報告:
- 窗格標題會顯示
claude · needs you,或者寫住佢跑緊嘅工具。 - 代理卡住咗嘅窗格會有琥珀色邊框。你而家已經睇緊嗰個窗格就唔會加 —— 個提問就喺你眼前。
- 工具列一個徽章會數住所有連線上面等緊嘅代理,上限係
9+。 - Agents 畫面會列出每條連線上面嘅每個代理,連同佢做緊乜同等咗幾耐。
唔使打字都答到
當代理問一條有固定選項嘅問題,應用程式會喺 Agents 清單為每個選項顯示一粒掣 —— 最多六個。喺 Android,你亦可以撳窗格標題入面嘅代理標籤。
你嘅答案唔會打入個工作階段。佢係經另一條通道寫入檔案,再由個 hook 讀返,所以回覆唔會搞亂畫面上面嘅嘢。如果個提問根本冇提供某個選項,應用程式會拒絕送出;如果連線之後斷咗,佢會照直話你知,而唔會靜雞雞失敗。
設定
兩個平台嘅提示預設都係開嘅,通知、聲音、震動,同埋「你而家睇緊嗰個工作階段要唔要都提示」各有獨立開關。
有個預設值值得知:聲音只限耳機。如果冇插線亦冇配對耳機,提示會出通知同震,但唔會出聲。如果你想電話喇叭都聽到,就熄咗佢。
冇靈敏度設定,亦冇提示音選擇器 —— 啲控制項就只係開/關。
全螢幕終端機程式
對於 Vim、less、htop、ncurses 工具同 tmux 窗格等程式:
- 輸入會直接傳去程式 —— 冇自動更正或者建議緩衝去干擾。
- 用額外按鍵列輸入
ESC、方向鍵、PGUP同PGDN。 - 如果文字太細,用捏合縮放,然後等一陣等遠端終端機大細穩定。