READMESource: main@3bd20e6e
dsh-float-reader
浮在对话窗口上方的透明阅读窗。支持 TXT / EPUB,能看标题、加粗、图片,可拖动缩放到任意位置,点窗外自动收成一根横条,幽灵模式下只剩正文和一个开关。
给 DeepSeek Harness Web UI 用的插件(shell.overlay + sidebar.footer.action 两个槽位),不替换任何自带界面。
功能
- TXT / EPUB:自己解析 zip(
DecompressionStream('deflate-raw'),无第三方依赖),只取正文;目录页和空白页自动跳过 - 富文本:标题层级、加粗、斜体、下划线、列表、引用、分隔线、表格、
<pre>;内联样式只保留字重、斜体、下划线、字号、对齐五项 - 图片:正文内自适应宽度、限高 180px,点击全屏放大,再点或 Esc 关闭
- 章节:优先用
nav.xhtml/toc.ncx的章节名,没有才退回<h1> - 进度:按「第几章 + 章内比例」记忆,换字号、缩放、收起再展开都不丢
- 交互:拖标题栏移动、右下角缩放、点窗外收起为 30px 横条、单击横条展开、连按两次 Esc 隐身
- 幽灵模式:顶栏、底栏、进度线、滚动条全部不渲染,只留正文和右上角一个 20px 开关(它同时是拖拽手柄)
- 主题:跟随 DSH 的
--dsw-alias-*token,明暗主题自动切换;文字带轻微阴影,压在代码块上也读得清
安装
要求 DSH >= 0.2.0-rc.1。
git clone https://github.com/tianluyao328/dsh-float-reader.git
dsh plugin --profile <你的 profile> add ./dsh-float-reader
装好后刷新页面。入口在侧边栏底部、设置按钮上方的小书图标;首次安装会自动弹一次窗。
使用
| 操作 | 效果 |
|---|---|
| 拖顶部窄条 | 移动窗口(幽灵模式下拖右上角小按钮) |
| 拖右下角 | 缩放,最小 240×170 |
| 点窗口外任意处 | 收成 30px 横条,位置不变 |
| 单击横条 | 展开回原来的高度 |
| 连按两次 Esc | 直接隐藏 |
拖 .txt / .epub 到窗口 |
打开这本书 |
| 底部工具栏 | 换书、章节跳转、字号 ±、点击穿透锁 |
| 点击正文图片 | 全屏放大查看 |
已知边界
- 不改 DSH 的输入框:composer 是宿主组件,配置里只有
busyEnter,插件没有改动其尺寸的接口,所以输入框高度不受本插件控制 - 不还原 EPUB 的排版:不读书里的 CSS 和字体,只保留结构语义,避免和主题打架
- DRM 打不开:
META-INF/encryption.xml里加密了正文的书会提示无法打开;只加密字体的书正常 - 图片走 blob URL:常驻内存,切换书籍时释放
开发
数据层(zip 读取、OPF/spine、HTML 净化、分章)是纯函数,集中在 client.js 的 book-core 区块,测试直接把这段代码拿出来在 Node 里跑真实电子书:
node test/epub-check.mjs ~/Downloads # 解析 + 富文本 + 图片 + 结构校验
测试会检查:危险标记、残留 class、未允许的内联样式、标签闭合、章节偏移,以及单测(实体解码、脚本/样式剔除、GBK 回落等)。
许可
MIT
No comments yet. Be the first to write one.