跳至主要內容
SHAO MEDIA

9.7 MiB 先被量了出來:Snow Shot 的重寫,把「輕量」設計成一份可核對的表格

從 V2EX 開發者分享的 Snow Shot 重寫過程與 VMMap 記憶體實測數據看起,觀察一款開源截圖軟體如何用 Qt Widgets 加 Rust,把效能承諾設計成可核對的介面。

科技 設計評論 約 4 分鐘
本章章節
  1. 一張量測表,比形容詞誠實
  2. 從 Web 到 Qt:介面語言的搬遷
  3. HDR 與 MCP:兩個被認真對待的邊緣情境
  4. 觀點

一款截圖軟體的價值,通常被講成功能清單的長度。但在 V2EX 的分享創造板上,開發者 mgchao 貼出的這則帖子,最先給讀者看的卻是一張記憶體量測表。這個順序本身就是一次設計決策。

Snow Shot 是一款開源截圖軟體。開發者說明,第一版花了約一年,以 Tauri 為基礎;這次同樣花了一年,從頭重寫。重寫的第一個目標不是新功能,而是後臺閒置時動輒五、六百 MB 的記憶體佔用。

一張量測表,比形容詞誠實

帖子裡的實測方式寫得相當具體:同一臺運行 Windows 26H2 的電腦,單臺 4K 顯示器,捕獲區域略小於 3840 × 2160,用 VMMap 記錄三款軟體主進程在三種狀態下的數據,包括初始狀態、透過系統匣觸發截圖十次後,以及截圖並貼圖十次後。

數字會說話。Snow Shot 初始狀態的私有工作集約 9.7 MiB,貼圖十次後為 24.33 MiB。作為對照,Snipaste 初始為 26.00 MiB,貼圖十次後升到 94.96 MiB;被以「某 P」代稱的第三款軟體,初始即為 32.67 MiB,後段數據更高。

開發者也交代了測量的限制:部分軟體在空閒時會呼叫 EmptyWorkingSet,之後的私有工作集數值會明顯偏低,因此不作為比較依據。這句附註值得注意。多數產品宣傳會挑對自己有利的欄位,這裡反而先聲明了哪些欄位不可信。效能敘事被設計成一頁可核對、可重做的文件,而非一句行銷標語。

從 Web 到 Qt:介面語言的搬遷

技術選型上,這次重寫的分工很清楚。介面與互動用 Qt Widgets,開發者的說法是「盡可能復刻 Ant Design 組件庫」,從原本的 Web 組件庫一步步遷到 Qt。截圖、錄屏等底層模組用 Rust 實作,透過 C FFI 與 C++ 對接。標註繪製則用自行維護的繪圖引擎,按截圖標註的需求調整;圖形處理在 Windows 與 macOS 上分別做適配。

這是一條不常見的路徑。近年桌面工具軟體的主流是把介面搬進 Web 技術棧,換開發效率,代價常是常駐記憶體。Snow Shot 反向而行,把介面留在原生控件層,把 Web 的視覺語言(Ant Design 的間距、圓角、組件節奏)當成一種要被「復刻」的設計規格,而不是直接依賴的執行環境。舊版的介面風格被保留了下來,換掉的是撐起它的整套技術。

繪製端的改進也有具體對應:局部重繪與快取,盡量只更新變化的區域,選區過渡動畫、拖動與標註響應重新調整。筆記型電腦上的功耗考量,則採用軟體渲染、減少不必要的刷新;錄屏在支援的裝置上改用 GPU 處理與硬體編碼。

HDR 與 MCP:兩個被認真對待的邊緣情境

功能面上,帖子列了截圖標註(矩形、橢圓、箭頭、文字、馬賽克,外加自動識別可能需要打碼的區域、智慧擦除、水印與標註模板)、OCR 文字與表格識別、藉 AI 視覺模型把圖片轉成 Markdown、螢幕錄製(滑鼠軌跡、按鍵顯示、聲音、高幀率、裁剪、預覽),以及把圖像與文字固定在螢幕上的貼圖功能。

其中兩項特別能看出設計取捨。一是 HDR 處理:用 HDR 顯示器的使用者常遇到螢幕上看起來正常、截出來卻發白過曝、得先關 HDR 的窘境,這次重寫針對此做了處理,帖子附了與 Snipaste 的對比截圖。二是 MCP 支援:截圖、選區、標註、OCR、錄屏的開始暫停停止、貼圖與模板管理、背景任務查詢,都開放成可被 AI 客戶端或自寫程式呼叫的介面。一款截圖工具把自己拆成一組可編排的指令,這在這類工具裡仍屬少數。

觀點

Snow Shot 這次重寫最值得記下的,未必是 9.7 MiB 這個數字本身,而是數字被呈現的方式:寫明機器、系統版本、螢幕規格、量測工具、操作次數,並主動排除會失真的欄位。在同類工具競相以功能數量說話的市場裡,把「輕量」從形容詞做成一份別人可以重複驗證的表格,這本身就是一種介面設計。願意被量測的軟體,通常也願意被使用得很久。

主題 介面與互動設計、數位文化與科技

標籤 #snowshot+介面與互動設計、#開源截圖軟體+效能敘事、#qtwidgets+軟體工藝

相關報導