dsh-desktop-host

August 20, 2026 · View on GitHub

DSH Desktop 窗口宿主(Rust / Tauri v2)——为 dsh-desktop-tools 插件提供桌面窗口。

License: MIT Windows x64 macOS Linux

宿主以 WebView 封装 dsh web 界面,负责启动/看护服务进程、窗口与托盘、环境面板弹窗、代码编辑器入口。 运行时管理、平台兼容、计费等能力全部在 dsh 插件里——换宿主不改变环境

平台支持

平台架构说明
Windowsx64WebView2(Win10/11 自带)
macOSarm64 / x64WKWebView(macOS 11+)
Linuxx64WebKitGTK(需系统依赖)

安装

安装 dsh-desktop-tools 插件时, 宿主二进制会按当前操作系统自动从 GitHub Release 下载(找不到对应资产时才回退到源码构建), 无需手动编译。也可从 Releases 直接下载对应平台的二进制, 然后设置 DSH_DESKTOP_BIN 环境变量或插件配置 desktopBin 指向它。

手动构建

需要 Rust 工具链(https://rustup.rs)。

git clone https://github.com/YUEEEEY/dsh-desktop-host.git
cd dsh-desktop-host
cargo build --release
# 产物:target/release/dsh-desktop(Windows 为 dsh-desktop.exe)

Linux 额外依赖(Debian/Ubuntu)

sudo apt-get install -y libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev libgtk-3-dev patchelf

功能

  • 系统托盘:显示/隐藏窗口、打开环境面板(弹窗)、打开代码编辑器、在浏览器打开、重启服务、检查更新、开机自启、退出;tooltip 显示 dsh 运行状态。
  • 环境面板弹窗Ctrl+Shift+P 或托盘/菜单打开独立面板窗口(运行时版本 / 更新 / 平台兼容 / 计费摘要)。
  • 代码编辑器Ctrl+Shift+E 或托盘/菜单在主窗口内打开代码编辑器(浏览与编辑工作区文件)。
  • 自动更新提示:每 6 小时检查一次 dsh 运行时更新,发现新版本时在托盘提示(也可手动"检查更新")。
  • 单实例:重复启动时聚焦已有窗口,不会产生多个服务进程。
  • 开机自启:托盘一键开关,状态持久化。
  • 窗口状态记忆:记住上次的窗口位置与尺寸。
  • 服务看护:dsh 服务异常退出时自动重启(最多 3 次,退避重试)。

使用

# 方式一:交给插件(推荐)
dsh plugin --profile web add dsh-desktop-tools
dsh web   # 服务就绪后自动打开桌面窗口

# 方式二:手动指定宿主
export DSH_DESKTOP_BIN=/path/to/dsh-desktop
dsh web

dsh web --no-desktop 可关闭自动开窗。

宿主命令行参数:

dsh-desktop [options]
  --url <url>       服务已由外部启动,直接打开该地址的窗口
  --serve           宿主自己启动(或连接)dsh web 服务(默认)
  --port <n>        (--serve 时)服务端口
  --workspace <dir> (--serve 时)工作区
  --home <dir>      DSH_HOME

窗口内快捷键:Ctrl+Shift+P 环境面板(弹窗)、Ctrl+Shift+E 代码编辑器、Ctrl+Shift+H 回到主界面(或菜单"视图")。

开发

host/
├─ src/
│  ├─ lib.rs        # Tauri 应用:窗口、托盘、菜单、面板弹窗、更新检查、启动参数
│  ├─ server.rs     # 启动/看护 dsh 服务进程
│  ├─ runtime.rs    # 定位 dsh 安装(DSH_RUNTIME_DIR / npm 全局)
│  └─ settings.rs   # 端口/工作区/自启/窗口状态设置
├─ tauri.conf.json
└─ Cargo.toml

发布新版本:打 tag(如 v0.1.0)→ GitHub Actions 自动构建四平台二进制并创建 Release。

License

MIT