dsh-custom-splash
给 DeepSeek Harness 加一段开屏动画:每次启动从三段里随机播放一段,播完自动淡出。

上图就是随包的三段,从左到右各取一帧:
| 文件 | 时长 | 码率 | 画面 |
|---|---|---|---|
assets/clip-1.mp4 |
8.06s | 2659 kbps | 闭眼半身特写,柔光星尘 |
assets/clip-3.mp4 |
7.05s | 2951 kbps | 左侧 DEEPSEEK 大字 + 右侧脸部 + 数据流 |
assets/clip-5.mp4 |
7.05s | 2106 kbps | 深色字标 + 青色瞳孔特写 |
安装
dsh plugin --profile desktop add github:muning0214/dsh-custom-splash
- 桌面版用
--profile desktop,Web 版用--profile web - 装完完全退出 DSH 再重开(bundle 在启动时装配)
- 仓库里没有构建产物依赖、也没有
prepare/postinstall脚本,pnpm add不会编译任何东西,不会触发构建授权
特性
- 随机播放:上面三段,每次加载(= 每次重启)用 Fisher–Yates 洗牌取一段
- 随时跳过:
Esc或点击画面;播完自动淡出 - 隐藏标题栏按钮:Windows 右上角那三个按钮是系统画的,CSS 盖不住,这里改成让它们融进画面
- 实时锐化:SVG
feConvolveMatrix补偿低码率源的糊感,可在index.mjs里调强度 - 绝不卡启动:素材坏一个自动换下一个;全部失败、解码报错、播放被拒、超过 20 秒,都立刻放行
换成你自己的视频
- 把 mp4 放进
assets/ - 改
index.mjs顶部的ASSETS表:
const ASSETS = new Map([
['clip-1.mp4', 'video/mp4'],
['clip-3.mp4', 'video/mp4'],
['clip-5.mp4', 'video/mp4']
])
加一行就多一段,删一行就少一段。
视频需要 faststart(
moov在mdat之前),否则浏览器要下完整个文件才能播。 修复:ffmpeg -i in.mp4 -c copy -movflags +faststart out.mp4
可调参数
| 位置 | 作用 | 默认 |
|---|---|---|
MAX_HOLD |
最多遮挡多久(毫秒),兜底放行 | 20000 |
fade |
淡出时长(毫秒) | 420 |
kernelMatrix |
锐化卷积核,中心值越高越锐,超过 3.2 开始出白边 | 2.4 / -0.35 |
CAPTION_CSS |
标题栏按钮透明规则 | 见源码 |
实现
只用了宿主的三个公开扩展点,没有改任何打包文件。
1. 视频路由 — connection.fetch.register()
ctx.connection.fetch.register({
path: '/api/dsh-splash/clip-1.mp4',
methods: ['GET', 'HEAD'],
requestBody: 'buffered',
fetch: (request) => serveAsset(request, 'clip-1.mp4')
})
必须支持 Range,否则 Chromium 无法流式解码视频。只读白名单里的文件,路径不可穿越。
2. 注入播放器 — webserver/index-inject
往 index.html 的 body 开头注入一段自包含脚本,在应用外壳挂载之前用 Shadow DOM 盖一层全屏 <video>。样式与页面完全隔离,卸载时随宿主一起消失。
3. 隐藏标题栏按钮 — 借用 preload 的色探针
DSH 桌面用 titleBarStyle: "hidden" + titleBarOverlay,按钮由系统绘制在网页之上,z-index 再高也盖不住。但 preload 里有一个隐藏 span,其 background-color / color 被读出来,经 IPC dsh-desktop:windows-appearance 交给主进程 setTitleBarOverlay()。
preload 监听 document.head 的变动,所以注入一条把该探针改成 transparent 的 <style> 就会自动触发重发:
[data-windows-titlebar] body:has(> #dsh-custom-splash)
> span[style*="--dsw-specific-sidebar-fill"]{
background-color: transparent !important;
color: transparent !important;
}
移除这条 <style> 时,按钮配色自动还原。
已知限制
- 分辨率 1280×720:这是素材源文件本身的分辨率,不是压缩掉的。1080p 以上的屏幕会放大显示,靠实时锐化补偿
- 码率 2106–2951 kbps:高于视频平台常见的 720P 档(约 1–1.5 Mbps),但暗场与发丝细节仍有损失
- 只在 Windows 桌面版验证过;macOS / Linux 上标题栏处理会跳过,其余功能照常
- 三段的时长不一致(8.06s / 7.05s / 7.05s),所以开屏时长会略有浮动
素材来源与许可
代码以 MIT 发布。
但 assets/ 里的动画片段不在此许可范围内:它们是第三方动画素材,版权归原作者所有,随仓库附带仅用于演示本插件的效果。如需公开分发或商用,请把 assets/ 替换为你自己拥有权利的素材。
卸载
dsh plugin --profile desktop remove dsh-custom-splash
No comments yet. Be the first to write one.