Skip to content
dsh.fish
Bundle

@midnightbell/dsh-desktop-mode

DSH 桌面版插件:设置页新增「桌面模式」分组,开关一键开启桌面版(独立窗口 + 桌面快捷方式)。

weekly downloads
22 weekly downloads
License
MIT
Updated
Updated yesterday

Readme

# @midnightbell/dsh-desktop-mode — DSH 桌面版插件

在 DSH Web 设置页新增「桌面模式」分组,把 DSH 变成独立桌面应用:

- **开关「启用桌面版」**:开启后自动创建桌面快捷方式(`DSH 服务.lnk`)并打开独立桌面窗口(WebView2 内嵌界面,无浏览器标签/地址栏)
- **「打开桌面版窗口」**:随时启动/聚焦桌面窗口
- **「创建桌面快捷方式」**:在桌面生成指向桌面程序的快捷方式
- **状态行**:显示桌面程序位置、当前是否运行在桌面窗口内

## 架构:薄壳 + npx

插件自带一个 ~40KB 的**薄壳窗口程序**(`bin/DSH.exe` + WebView2 DLL,共 ~0.8MB),
不包含任何 Node 运行时:

- 端口上已有 `dsh web` 服务 → 直接开窗口连接
- 没有服务(如控制台被关闭、或快捷方式冷启动)→ 通过
  `npx -y @deepseek-ai/dsh web --port <port>` 自动拉起**后台分离服务**
  (不挂任何控制台,关闭控制台不影响它)
- 窗口内置看门狗:服务断开后几秒内自动用 npx 重启并重连——效果上桌面版
  “接管”了服务

装了本插件的用户必然已能运行 `npx @deepseek-ai/dsh web`(插件随 dsh 服务
安装),因此除 Node.js 与 WebView2 运行时(Windows 10/11 自带)外无其他依赖。

## 安装

```bash
dsh --profile web plugin add @midnightbell/dsh-desktop-mode
```

(等价于在 profile 中安装依赖并把包名加入 `dsh.profile.bundles`。)安装后
重启 `dsh web` 服务,设置页左栏即可见「桌面模式」。

## 卸载

```bash
dsh --profile web plugin remove @midnightbell/dsh-desktop-mode
```

桌面快捷方式(如有)手动删除即可;数据文件 `~/.dsh/.dsh-desktop-mode.json`
可留可删。

## 工作原理

- **Host 半**(`lib/index.js`):注册 `POST /desktop-api` 端点,提供
  `load / save / probe / createShortcut / launch`;设置持久化到
  `DSH_HOME/.dsh-desktop-mode.json`
- **Client 半**(`lib/client.js`):注册 `settings.section`(id: `desktop`),
  通过 fetch 调用 host 端点
- **薄壳**(`bin/`):`DSH.exe` 为 .NET Framework 4.x + WebView2 WinForms
  程序,源码见 DSH-Desktop 发行目录 `src/DSHDesktop.cs`

## 要求

- Windows 10/11(`os: ["win32"]`)
- Node.js(能运行 `npx @deepseek-ai/dsh web`)
- Microsoft Edge WebView2 运行时(Windows 10/11 通常自带)

## License

MIT

Install

dsh plugin --profile web add @midnightbell/dsh-desktop-mode@1.0.0

Profile: web

Source