functy23/dsh-fullscreen-settings ↗★ 2
dsh-fullscreen-settings
将设置弹窗转换为整页全屏设置页 适合喜欢Codex风格全屏设置界面、追求视觉整洁的用户。
安裝
此插件尚未提供可驗證的 bundle,或相容性檢查未通過。請先閱讀倉庫說明。 閱讀完整 README ↗
說明文件
閱讀完整 README ↗dsh-fullscreen-settings
把 DSH 的设置弹窗,变成 Codex 那样的整页全屏设置页。
Issues • Changelog • 中文 / English
效果
| 改动前 | 改动后 | |
|---|---|---|
| 形态 | 屏幕中央 800×800 的弹出式 modal,背后有遮罩 | 铺满整个窗口的整页设置,没有遮罩 |
| 退出 | 右上角一个小叉号 | 左上角一整行「← 设置」 |
| 左栏 | 188px 分类栏 | 248px 分类栏,带发丝分隔线 |
| 内容 | 800px 宽,行拉满 | 单列最大 880px,长行不再被拉得过长 |
左上角的「← 设置」是一个按钮:箭头和标题同处一个色块,鼠标悬停时整行高亮, 和主界面左栏的「新会话」「插件」条目同款;点箭头或点文字都返回上一页。
macOS 上顶部会自动让开红绿灯,那条留白同时是窗口拖动区;窗口进入全屏时留白自动收起。
安装
DSH NEXT 的 desktop profile 由 Electron 应用独占管理(dsh plugin --profile desktop …
会被拒绝:profile desktop is managed exclusively by the Electron application),
按下面任一方式安装:
方式一:应用内安装(推荐)
在侧栏「插件」页的安装输入框里填:
github.com/functy23/dsh-fullscreen-settings
github:functy23/dsh-fullscreen-settings 同样可以。
方式二:手动挂载(本插件当前就是这么装的)
在 ~/.dsh/profiles/desktop/cordis.patch.yml 末尾追加:
- insert:
- id: ui-fullscreen-settings
name: /绝对路径/dsh-fullscreen-settings/lib/index.js
其他 profile
web / dsh-tui profile 不受此限制,可以直接用 CLI:
dsh plugin --profile web add github:functy23/dsh-fullscreen-settings
无论哪种方式,装完都要刷新界面(菜单「DSH NEXT → 重新加载界面」,或 Cmd+R)—— profile patch 会让宿主热重组,但客户端模块图是在页面加载时取得的。
原理
宿主半边是空的(lib/index.js 只有空 apply()),全部效果在浏览器半边完成,
只做两件事:
- 一段 CSS,锚在运行版产品自带的属性
div[data-shortcut-modal="settings"]上, 结构用元素选择器(> nav/> div),不依赖 CSS Modules 的哈希类名, 产品换构建也不会失效。 - 遮蔽
settings.header这个 single 槽的官方占用者:single 槽的规则是 「最低 priority 渲染」,官方占用者是 priority 0,本插件用-1000顶掉它, 改渲染左上角那一个整行按钮。
关闭动作直接调 @deepseek-ai/dsh-client-ui-primitives 的 closeTopModal()
—— 这正是官方设置快捷键关闭弹窗时用的同一个函数;失败时退回点击官方关闭按钮。
不修改、不打包官方任何文件,DSH 升级后即使某个细节变了,最坏情况也只是样式回退。
目录结构
dsh-fullscreen-settings/
├─ lib/
│ ├─ index.js 宿主半边:空 apply()
│ └─ client.js 浏览器半边:样式 + 「← 设置」按钮
├─ tests/
│ └─ client.test.mjs 零依赖单元测试(node --test)
├─ assets/icon.svg
├─ package.json dsh.client 声明 + test 脚本
└─ README.md / README.en.md / CHANGELOG.md / LICENSE
lib/ 就是源码,没有构建步骤;改完刷新界面即可。
开发
cd dsh-fullscreen-settings
node --test tests/ # 4 个用例:注册 / 样式 / 整行按钮 / 兜底
node --check lib/client.js
兼容性
按 DSH 0.2.0-rc.1(DSH NEXT 2.0.16-next,窗口 titleBarStyle: hiddenInset,
红绿灯 x=16 y=18)实测。用到的都是产品自有属性、插槽契约与主题变量
(--dsw-alias-* / --dsh-frame-*),跨主题安全。
回滚
删掉 cordis.patch.yml 里那段 - insert:(或在该 profile 的插件页里卸载),
刷新界面即可;设置会回到原来的居中弹窗。
License
MIT © 2026 Functy