跳至主要內容
SHAO MEDIA

一個 # 號先亮了起來:wmux 的狀態欄,是一套被排好的注意力介面

從 wmux 這款 Windows 上的 tmux 替代品看起,觀察終端機多工介面在狀態欄符號、快捷鍵文法與按鍵轉譯上的設計取捨。

科技 設計評論 約 5 分鐘
本章章節
  1. 先看那條狀態欄
  2. 崩潰之後,格子還在
  3. 快捷鍵是一套文法,不是一串對照表
  4. 在 Windows Terminal 的陰影下
  5. 一個符號的份量

9 月 22 日,開發者 newdee 在 V2EX 上發布了 wmux,一個用 Rust 寫成、直接跑在 Windows 原生 ConPTY 上的終端機多路復用工具。這類消息通常淹沒在數十則分享創造的帖子裡,但 wmux 值得從設計的角度看一次。因為它處理的課題,恰好是介面設計裡最古老也最實際的一項:如何在最小的面積裡,讓人知道別的地方發生了什麼。

先看那條狀態欄

終端機的多工工具幾十年來都長得差不多:螢幕邊緣一條窄窄的狀態欄,左邊列著幾個視窗名,右邊放時間與主機名。大多數人從不細看它。wmux 承襲了 tmux 的這條欄,卻在其中做了一件值得注意的事:把「事件」壓縮成單一字元,掛在視窗名後面。

具體的規則是這樣:某個你沒盯著的視窗一有動靜,那個視窗名後面就多一個 #;程式觸發了響鈴,符號換成 !;太久沒有輸出,換成 ~。三個符號,三種時間尺度上的注意力線索:正在發生、剛剛喊過你、已經安靜太久。

這套符號系統其實源自 tmux,並非 wmux 原創。但把它放到 Windows 的工作情境裡,意義有些不同。Windows 的通知中心走的是 toast 卡片路線,面積大、會消失、和終端機的資訊流完全脫節。開發者把十幾分鐘的編譯丟到另一個視窗然後去寫別的東西,這件事在 Windows 上一直缺乏一個低調的回報機制。wmux 的選擇是反 toast 的:不要彈出、不要聲音,就在你視線餘光掃得到的那條欄上,加一個像素等寬的字元。然後配一組 C-b M-n,讓你從符號直接跳到現場。

好的通知設計,向來是告訴你「哪裡有事」,而不是把事情整個搬到你眼前。這條狀態欄是後者 philosophy 的一次乾淨示範。

崩潰之後,格子還在

另一個細節比通知更打動人。一般終端機分屏裡的程式一旦崩潰或退出,那一格就跟著消失,畫面上曾經印過的東西一起被收走。wmux 學了 tmux 的 remain-on-exit:pane 留在原地,底下反白一行 [cmd exited with 3],程式生前印過的每一個字都還在,想重來就 respawn-pane 原地復活。作者自己的說法很有畫面感:凌晨三點崩的,早上八點還在那裡等你。

從介面設計看,這是「錯誤也是一種狀態」的具體實踐。多數工具把失敗處理成消失,把畫面讓給下一個任務;wmux 把失敗凍結成可回看的現場。對除錯的人來說,那一格沒被收走的輸出,價值不低於任何日誌系統。

快捷鍵是一套文法,不是一串對照表

wmux 最核心的設計決策,其實是「不重新發明」。C-b 前綴、% 左右分、” 上下分、hjkl 移動、z 放大、d 脫離,整套照搬 tmux。作者的補充說明講得很直白:這主要給用慣 tmux 的人,操作習慣可以繼續保持。現成的 .tmux.conf 拿來基本能用,不認得的選項會被忽略而不是報錯。

這裡有一個值得停下來看的取捨。同樣的功能,另一條路是重新設計一套更「Windows 原生」的快捷鍵,配選單、配滑鼠優先的操作。走那條路的工具不是沒有,但對目標用戶而言,tmux 的按鍵組合早已經過肌肉記憶的長期投資,是一套內化的文法。wmux 選擇當一個翻譯者,而非新語言的作者。連 C-b > 彈出的 pane 操作清單,也只是把記不住的動詞列出來挑一個字母,文法本身沒動。

真正的工程難點藏在按鍵轉譯上。PowerShell 的 PSReadLine 組合鍵、Ctrl+Space、中文輸入法、WSL 裡的 vim 與 htop,要在同一個視窗的不同格子裡各安其位,按鍵必須以 Windows 原生格式傳遞,而非拆成字元流模擬。這是很多類似工具在中文環境裡翻車的地方,也是「3 MB 一個 exe 下載就能用」背後真正難做的那一層。介面的誠實往往體現在這種使用者看不見的地方。

在 Windows Terminal 的陰影下

V2EX 評論區的提問很典型:Windows Terminal 不夠用嗎?就「分屏」這個字面功能而言,確實夠用。但 Windows Terminal 的分屏是視窗層的:關掉終端,格子裡的東西一起結束。wmux 賣的是會話層的持久,關掉視窗、斷開連線,甚至重開機之後,wmux resume 把分屏布局、每格跑著的命令、所在目錄、連同當時螢幕上的輸出一併帶回來。評論裡也有人提起 herdc 之類的前例,作者的回應同樣坦率:用過,但和 tmux 的手感有差距。

這個差距正是設計的所在。同樣叫多路復用,有的工具把重點放在程序守護與提醒,有的把重點放在完整移植一套操作身體記憶。wmux 選了後者,並且用監控符號和 pane 不消失這兩個細節,把前者的優點也補了進來。

一個符號的份量

回到開頭那個 #。終端機是當代少數還保留「純文字即介面」信念的環境,它的設計語言不由像素構成,而由字元、前綴鍵與狀態欄構成。wmux 證明瞭這套語言可以跨系統移植,也證明最小的設計單位,一個掛在視窗名後面的符號,足以撐起一整套注意力的分配方式。工具會不會被更多人採用尚待時間,但那條狀態欄上的 #、! 與 ~,已經是一次教科書級的節制示範。

主題 介面與互動設計、視覺敘事

標籤 #wmux+介面設計、#終端機+互動設計、#開源工具+視覺敘事

相關報導