Back to directory

dsh-desktop-linux

Maintenance: Active

ffyfox/dsh-desktop-linux

Ports DeepSeek Harness desktop packaging to Linux with AppImage, deb, rpm, and Arch PKGBUILD outputs built from upstream sources.

View on GitHub
$ dsh plugin add dsh-desktop-linux

62

stars

4

forks

Shell

Language

NOASSERTION

License

2026-09-26

Created

2026-11-13

Last push

MIT community port (Shell) of the official DSH desktop packaging to Linux, producing AppImage / deb / rpm / Arch packages with tray, glass and frameless patches.

DSH integration

Native runtime

Author-claimed

Safety audit

Unaudited

Last verified

2026-11-10

License

MIT

01What can it help you accomplish?

  • Run the official DeepSeek Harness desktop app on Linux, which upstream does not support

    AppImage, deb, rpm and Arch packages of the official Electron app, with a dsh-app:// renderer protocol, bundled Node / pnpm / Python runtimes and its own desktop profile

    Linux users who want the desktop client instead of the CLI or a browser tab

  • Get a window back after closing it, since closing only hides it

    A tray icon with a menu (patch 0013), so the window can be reopened, or the app fully quit from the tray, Application → Quit or Ctrl+Q

    Users who close the window and think the app exited

  • Make the window look like the macOS build, or drop the system title bar

    Opt-in glass mode (hidden menu bar, sidebar tint) and frameless mode (40px in-page caption, Electron-drawn window buttons)

    Wayland users on KDE, Hyprland or niri who want a specific window treatment

  • See the host version in the plugin market instead of "host version unknown"

    Patch 0017 passes the packaged resources root to the Linux host process, so compatibility filtering and "update to a compatible version" work

    Users installing plugins from the market on Linux

02How to install into DeepSeek Harness

Prerequisites

  • A prebuilt package from Releases, or a source build needing Node 24.9+ with TypeScript type stripping, pnpm 11 installed via npm or corepack, git and rpmbuild for rpm
  • AppImage needs FUSE 2 (libfuse.so.2), which most current distributions no longer install by default
  • GNOME needs the AppIndicator extension for the tray; newly installed extensions only load after a re-login

Installation steps

  1. 01

    Install a prebuilt package: chmod +x the AppImage, `sudo apt install ./deepseek-harness-*.deb`, `sudo dnf install ./deepseek-harness-*.rpm`, or `sudo pacman -U ./dsh-desktop-linux-*.pkg.tar.zst`

  2. 02

    To build from source: `./scripts/fetch-upstream.sh`, `./scripts/apply-patches.sh`, then `./scripts/build.sh --all` (or --dir / --appimage / --deb / --rpm)

  3. 03

    For the Arch package, run `./scripts/pkgbuild-dir.sh` to flatten the tree and then `makepkg -si` inside ./pkgbuild

  4. 04

    Run `./scripts/verify.sh --runtime` to check the built runtime matrix

Verify the integration

  • Artifacts land in `upstream/apps/desktop/.desktop-build/targets/linux-x64/unsigned-artifacts/` (linux-arm64 on arm64 machines)
  • `./scripts/verify.sh --runtime` runs the live matrix against linux-unpacked

Rollback

  • Uninstall with the package manager you installed with (apt / dnf / pacman -R); the Arch package only places the unpacked tree in /opt/deepseek-harness-desktop with a /usr/bin symlink

03DSH integration and capability boundaries

DSH integrationNative runtime

Not a plugin: it ports the official desktop packaging pipeline to Linux, building the official Electron app itself from upstream sources with a patch series and emitting AppImage, deb, rpm and Arch packages.

  • Linux packaging pipeline

    the upstream monorepo at the tag pinned in the PKGBUILD, plus the patch series→AppImage, deb, rpm and Arch packages, with build.sh picking linux-x64 or linux-arm64 from uname -m

    cross-compilation is not supported; the build pulls the upstream monorepo and runs a full pnpm workspace build, so it is much heavier than a plugin install
  • Real-Node host process

    the packaged primary-runtime Node→a host process that avoids Electron's node mode, where sharp decoding segfaults, at the cost of keeping the dsh tree outside the asar archive

    the dsh directory tree is not packed into asar, which is why linux-unpacked is around 1.1 GB
  • Sandbox selection

    kernel support for unprivileged user namespaces→a namespace sandbox with seccomp when supported, otherwise the setuid chrome-sandbox; AppImage probes at runtime via AppRun, deb / rpm / Arch decide in postinst

    the choice is made at install or launch time rather than by a setting
  • Glass and frameless window modes

    DSH_DESKTOP_GLASS=1 and/or DSH_DESKTOP_FRAMELESS=1 at launch, with DSH_DESKTOP_GLASS_TINT=0..100 for the sidebar tint→an approximate macOS layout with a hidden menu bar and translucent sidebar, or a caption-based window with Electron-drawn buttons

    the two modes are mutually exclusive — frameless wins and glass is disabled with a warning on stderr; blurring depends on the compositor

04Who is it for? When not to use it?

Good for

  • Linux users who want the desktop client instead of the CLI or a browser tab
  • Users who close the window and think the app exited
  • Wayland users on KDE, Hyprland or niri who want a specific window treatment
  • Users installing plugins from the market on Linux

Not for

  • Source builds need Node 24 with TypeScript type stripping (distribution-packaged Node may lack it and fail at build:official) and pnpm 11 installed through npm or corepack — the standalone installer and Homebrew binaries break the upstream scripts with a SyntaxError.
  • The AppImage needs FUSE 2 (libfuse.so.2), which Debian 13, Ubuntu 26.04 and Fedora 44 no longer ship by default; install the matching package or use APPIMAGE_EXTRACT_AND_RUN=1, which unpacks to /tmp and needs about 1.2 GB more.
  • There is no auto-update: the upstream forced-update channel only recognises desktop-win and desktop-mac client identities, and the Linux build has no update channel, so it never polls or updates itself.
  • There is no "install command line tool" menu entry on Linux; using dsh in a terminal means installing it yourself or invoking the bundled lib/bin.js with the packaged primary-runtime node.
  • The upstream client identity mapping sends Linux to desktop-mac, so Platform treats a Linux client as macOS while device_model stays linux-x64 or linux-arm64; this comes from upstream, not this project.
  • The artifacts are unsigned builds.

05Compatibility, maintenance and safety notes

  • Source builds need Node 24 with TypeScript type stripping (distribution-packaged Node may lack it and fail at build:official) and pnpm 11 installed through npm or corepack — the standalone installer and Homebrew binaries break the upstream scripts with a SyntaxError.
  • The AppImage needs FUSE 2 (libfuse.so.2), which Debian 13, Ubuntu 26.04 and Fedora 44 no longer ship by default; install the matching package or use APPIMAGE_EXTRACT_AND_RUN=1, which unpacks to /tmp and needs about 1.2 GB more.
  • There is no auto-update: the upstream forced-update channel only recognises desktop-win and desktop-mac client identities, and the Linux build has no update channel, so it never polls or updates itself.
  • There is no "install command line tool" menu entry on Linux; using dsh in a terminal means installing it yourself or invoking the bundled lib/bin.js with the packaged primary-runtime node.
  • The upstream client identity mapping sends Linux to desktop-mac, so Platform treats a Linux client as macOS while device_model stays linux-x64 or linux-arm64; this comes from upstream, not this project.
  • The artifacts are unsigned builds.
  • Testing covers Arch with KDE Plasma 6, Hyprland and niri, plus Ubuntu 26.04, Debian 13 and Fedora 44 on Wayland x86_64; aarch64 only passed a CI build and startup smoke test, and other distributions, desktops and X11 are unverified.
2026-09-262026-11-06v0.2.2rc1

MIT per the README (GitHub reports the licence as NOASSERTION) · latest release v0.2.2rc1 (2026-11-04); an independent community port built from upstream sources with a documented patch series, not an official DeepSeek product

06Frequently asked questions

How do I install it?

Download from Releases and use the package for your distribution: chmod +x the AppImage, `sudo apt install ./deepseek-harness-*.deb`, `sudo dnf install ./deepseek-harness-*.rpm`, or `sudo pacman -U ./dsh-desktop-linux-*.pkg.tar.zst`. Building from source needs Node 24 with type stripping and pnpm 11.

Why doesn't the app quit when I close the window?

That is upstream behaviour: main.ts intercepts the window close and hides it instead, keeping the host and running tasks alive. Patch 0013 adds a tray icon so you can reopen the window from the tray menu, or quit via the tray, Application → Quit or Ctrl+Q.

The AppImage won't start on Debian 13 or Fedora 44 — why?

Those distributions only ship FUSE 3, and the AppImage needs libfuse.so.2. Install fuse-libs on Fedora or libfuse2t64 on Debian 13 / Ubuntu 24.04+, or run with APPIMAGE_EXTRACT_AND_RUN=1, which unpacks to /tmp and needs about 1.2 GB more space.

Is there a tray icon on GNOME?

Only after installing the AppIndicator extension — GNOME has no StatusNotifierItem host by default. Newly installed extensions do not hot-load, so log out and back in; without a tray host the icon never appears and a second launch is the only way to get the window back.

Does it update itself?

No. The upstream forced-update channel only recognises desktop-win and desktop-mac client identities, and the Linux build has no update channel, so it does not embed a policy, poll or self-update.

08Data and sources

  • Author-claimedgithub.comaea410991251…

    把 [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) 官方桌面端 (`apps/desktop` 的 Electron 应用)的**打包流水线**移植到…

  • Author-claimedgithub.comaea410991251…

    上游目前明确不支持 Linux(`apps/desktop/packaging/README.md`:*"Linux is not a supported Desktop release target."*)。

This page is generated from the project’s public documentation, repository metadata and a structured parse of DSH Plugins; last verified on 2026-11-10. Found an error? Submit a correction.

🏆

Best DeepSeek Harness Plugins

Twelve plugins worth installing first — picked from the whole catalog, across every category.

DSH Plugins is an independent community directory of DeepSeek Harness plugins. Not affiliated with or endorsed by DeepSeek. Third-party plugins are not security-audited — review the source before installing.

New DeepSeek Harness plugins, weekly. No spam.