Workflow & Automation
dsh-desktop-launcher
lvienoeria/dsh-desktop-launcher · ★ 1
A lightweight DeepSeek Harness plugin that installs a desktop double-click launcher — dsh.app with the official black whale icon on macOS, dsh.desktop on Linux; double-click starts the Web UI and opens the browser. Everything is a plugin.
安装
dsh plugin --profile web add github:lvienoeria/dsh-desktop-launcherGitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试
For install and environment setup, plus plugin development tutorials, see DSH community docs ↗
README
Table of contents
English | 中文
A tiny DeepSeek Harness plugin that installs a desktop double-click launcher for the harness: a dsh.app with the official black-whale icon (macOS) or a dsh.desktop entry (Linux). Double-click it and the web UI starts and your browser opens. Everything is a plugin — this whole thing is just a bundle.
Lightweight: zero dependencies, ~147 KB package (mostly two 1024px icon PNGs; the macOS .icns is generated on the fly with the built-in sips + iconutil). It only touches the desktop side — no terminal command, no bundled scripts in your PATH. The terminal launcher lives in the separate dsh-launcher package, so you install exactly what you want.
What it does
Loaded as a bundle, the plugin's apply runs on every harness boot and converges these artifacts (idempotent: a fast no-op when the config is unchanged):
| Artifact | Where | What |
|---|---|---|
| Launcher script | ~/.dsh-launcher-desktop/dsh-start.command |
starts dsh, polls the web UI URL, opens the browser when ready |
| macOS app | ~/Desktop/dsh.app |
double-clickable, official whale icon, opens Terminal running the launcher |
| Linux entry | ~/.local/share/applications/dsh.desktop |
app-menu launcher (Terminal=true) |
| Icon | bundled whale / whale-dark (1024px PNGs) |
official deepseek-harness black-whale mark on a rounded card |
Install
Prerequisites: the dsh CLI and pnpm ≥ 9 (the harness pins pnpm 11 — corepack enable if yours is older).
From npm:
dsh plugin --profile web add dsh-desktop-launcher
From GitHub — plain JS, no build step, so nothing to allowlist:
dsh plugin --profile web add github:LvienOeria/dsh-desktop-launcher
Local path installs work too (zero dependencies):
dsh plugin --profile web add ./dsh-desktop-launcher
Then start dsh once — the plugin generates the launcher:
dsh --profile web # installed CLI
# or
pnpm dsh web # source checkout (auto-detected)
Done. Double-click dsh on your Desktop; closing the terminal window it opens stops the harness.
Customize
Edit your profile's patch layer (~/.dsh/profiles/<profile>/cordis.patch.yml) — later layers win, and a patch replaces a row's whole config:
- id: dsh-desktop-launcher
config:
launcherName: dsh # desktop app / entry name
iconStyle: whale-dark # whale | whale-dark
iconFile: '' # absolute path to your own .icns/.png
url: http://127.0.0.1:3080 # web UI URL to poll and open
sourceDir: /path/to/deepseek-harness # run `pnpm dsh web` from a checkout
startCommand: '' # fully custom start command (single line)
autoOpenBrowser: true
Custom icons
Drop any .icns (macOS) or .png (Linux) anywhere and point iconFile at it; a .png on macOS is converted to .icns automatically. The built-in whale / whale-dark styles are the official mark on light/dark cards; regenerate them from the harness favicon with python3 scripts/build-icons.py /path/to/deepseek-harness/apps/web/public/favicon.svg (needs Pillow + macOS sips).
How the start command is resolved
startCommand(explicit)sourceDir→cd <dir> && pnpm dsh web- cwd is a source checkout whose
package.jsonhas adshscript - an installed
dshCLI on PATH (recursion guard: never our own wrapper) - fallback
dsh --profile web(with a warning)
How it stays safe
- Every generated file carries a
# managed by dsh-desktop-launcher vXmarker. An existing file or app bundle without the marker is backed up to<path>.bakbefore replacement (never silently clobbered). - Unchanged config → nothing is rewritten (state hash in
~/.dsh-launcher-desktop/state.json). - Bad config (unknown
iconStyle, missingiconFile, non-http(s)url, multi-linestartCommand) fails loudly with a clear message. - Install failures are logged prominently but never take the harness down — dsh still boots.
Uninstall
dsh plugin --profile web remove dsh-desktop-launcher
rm -rf ~/.dsh-launcher-desktop ~/Desktop/dsh.app
# plus, on Linux: ~/.local/share/applications/dsh.desktop
Notes
- macOS: the first launch may ask you to confirm opening the generated app — that is Gatekeeper, click Open.
- The whale mark is from deepseek-harness (
apps/web/public/favicon.svg); it is used here solely for the launcher icon. - Want a terminal command instead of / in addition to the desktop app? Install dsh-launcher.
- Windows is not supported (nothing is installed; a warning is logged).
License
MIT — see LICENSE.