dsh-splash:把啓動開屏做成取景框的 DSH 插件

前言

DSH 啓動時,頁面在等 Host 連接、工作區就緒之前是一段空白。多數插件要麼不做開屏,要麼給出一條和真實進度無關的假進度條:它只是按時間走完,啓動慢的時候看起來像卡住,啓動快的時候又像在拖時間。

dsh-splash 是 dustcpu 維護的一個 DSH 開屏插件,做法是把取景框本身當進度計:框的寬高與圓角隨真實啓動進度從一個小窗口推到鋪滿屏幕,百分比直接畫在框內底部。讀的是實際完成度,不是計時器。下面介紹它的機制、安裝方式和可調參數。

這是什麼

一句話定位:一個幾何風的 DSH 啓動開屏插件,畫面主體是一個在等距菱格海面上旋轉受光的彭羅斯三角,開屏結束後不消失,而是縮到輸入框左側變成一個隨工作狀態變色常駐標記。

  • 維護者:dustcpu
  • 倉庫:https://github.com/dustcpu/dsh-geometric-splash (包名爲 dsh-splash)
  • package.json 聲明的引擎約束:node >=20、dsh >=0.2.1-rc.5 <0.3.0
  • License:MIT

它解決的是兩件事:讓等待有可讀的真實反饋,以及讓啓動後的狀態有個不佔地方的可視化標記。

核心功能

沒有進度條、沒有按鈕,取景框就是進度計。 框從 380px 起始尺寸隨進度向外推直至鋪滿窗口,圓角同步變化,當前百分比是框內底部的大號數字。

進度是真實的。 由五個加權里程碑驅動:插件圖裝載、Host 連接、工作區就緒、首幀字體,權重總和 100。電影節奏只負責按時間線把進度平滑地走一遍,但永遠不會超過真實完成度。具體的權重與計算方式見倉庫的 README.developer.md。

按任意鍵跳過。 F5 / Ctrl+R 仍然可用,刷新頁面不會把開屏吞掉。100% 後停留一拍,三角自己飛向輸入框左側外緣,縮成常駐標記。

常駐標記只換配色不改轉速。 旋轉速度恆定,按思考 / 查找 / 執行 / 改文件四種狀態切換配色;轉速本身只受推理強度影響,四檔:Off / Low / High / Max。

10 套主題色板。 取自 Monument Valley 與 Geometric Islands,通過會話頂部導航欄的小三角圖標進入主題塢切換。

安裝與啓用

DSH 桌面版不需要命令行:打開「插件」頁,在插件市場裏找到 dsh-splash,點安裝即可。注意桌面版的 profile 由應用自己管理,命令行如果 profile 名寫錯會裝到別的 profile 去,在桌面版裏反而看不到。

命令行,適用於 DSH Web 版,或你知道自己的 profile 名時:

dsh plugin --profile <你的 profile 名> add dsh-splash

這條命令來自 README。不要拼接成 dsh plugin add github:owner/repo 的形式。

兩個坑,README 裏都標了:

  1. DSH 給 profile 配了 pnpm 的發佈等待期(minimumReleaseAge),剛發佈的新版本在等待期裏會被擋住,add dsh-splash 可能裝到較舊的版本。想裝最新版就指定版本號:
dsh plugin --profile <你的 profile 名> add dsh-splash@0.2.3

pnpm 會自動把它加進 profile 的 minimumReleaseAgeExclude 放行。

  1. profile 名寫錯會裝到別的 profile 去,桌面版看不到。

本地開發版用 link 方式安裝:

dsh plugin --profile desktop add "link:C:\path\to\dsh-splash"

link 安裝需要在 profile 的 cordis.patch.yml 末尾登記一行,像這樣:

- id: dsh-splash
  name: dsh-splash

走市場 / bundle 方式安裝時這一步會自動完成。裝完刷新頁面(Ctrl+R)即可看到開屏。

典型用法

日常使用不寫配置,直接用會話頂部導航欄的主題塢:切換色板、調整開屏時長(1–12 秒)、開關常駐標記。這些設置存在當前頁面的 localStorage,不寫宿主配置,也不跨設備同步。

排障和調試時用 URL query 參數,這條路徑很適合接手別人機器時快速驗證:

?dsh-splash=off            # 本次不顯示
?dsh-splash=force          # 即使頁面已掛載也顯示
?dsh-splash-min=3800       # 本次開屏最短展示時間(毫秒),默認 7200
?dsh-splash-palette=island-night  # 本次強制使用某套色板
?dsh-splash-progress=real  # 本次切到真實進度(僅調試用)

?dsh-splash=force 的用處是頁面已經掛載完成後想復現開屏行爲,比如檢查收尾動畫和常駐標記。

適用場景與注意

適合用 DSH 且希望啓動階段有明確反饋的人,尤其是啓動鏈路較長、等 Host 連接和工作區就緒比較久的場景。對啓動速度本身不做承諾,它只是把已有的等待呈現清楚。

需要知道的邊界,README 寫明瞭三條:

  • 開屏是頁面級的。Electron 原生窗口創建到頁面腳本執行之間沒有可注入時機,這段由桌面殼自己的窗口背景承擔。
  • 啓動失敗時最多覆蓋 20 秒然後淡出,避免把錯誤頁永久蓋住,進度不會假報 100%。
  • 畫面全部由代碼繪製(canvas + SVG),不帶圖片或視頻資產,所以包體小、任意分辨率都清晰。

安全方面要注意:插件以當前 dsh 進程的權限運行。好在它不含二進制資產,裝之前把倉庫源碼和 MIT 許可證看一眼即可確認。

結尾

dsh-splash 的價值不在於畫作本身,而在於取景框與真實進度的綁定:框走到哪一步就等於啓動走到哪一步,這是普通計時動畫做不到的。常駐標記延續了這種設計——用配色而非轉速傳遞狀態,不干擾程序員對「轉得快不快」的直覺。

目錄頁:https://www.skillhub.cn/plugins/dustcpu/dsh-geometric-splash

GitHub:https://github.com/dustcpu/dsh-geometric-splash

plugin 源碼之外的兩篇文檔值得接力:真實進度權重與調試流程見 README.developer.md,發佈到插件市場的流程見 PUBLISHING.zh.md。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜