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。

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

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

小夜