Anthropic shipped an official Claude Desktop for Linux (beta) yesterday, and it tracks the same upstream version this repo already repackages (1.17377.1). I pulled the official .deb apart. Full teardown here: claude-desktop-linux-teardown.pdf (report CDL-ANT-0008, 11 pp).
The official build targets Ubuntu 22.04+ / Debian 12+, x86_64 and arm64, from an official APT repo at downloads.claude.ai/claude-desktop/apt/stable. It ships the full Chat / Cowork / Code tabs. It's a genuine first-party native build on Electron 42.5.1. This repo repackages the Windows app; the official one doesn't. Docs: https://code.claude.com/docs/en/desktop-linux
Not in the Linux beta yet: Computer Use (app/screen control), dictation, and the Quick Entry global hotkey on native Wayland without the GlobalShortcuts portal. Debian-based only for now, so no Fedora/RHEL.
What converged
The official build independently reaches several fixes this project was forced to inject:
- In-place tray
setImage that avoids the KDE duplicate-icon race.
- SUID 4755 chrome-sandbox plus an AppArmor userns profile for Ubuntu 24.04+.
- Electron
globalShortcut merged with the GlobalShortcutsPortal feature flag.
- Self-update disabled at the source.
What's official-only
Things a repackage can't match:
- A real KVM/QEMU Cowork VM (a Go daemon booting QEMU with OVMF + virtiofsd + vsock).
- A Rust
@ant/claude-native binding doing genuine X11 input injection for computer use.
- A Rust Chrome native-messaging host (the browser bridge).
- A first-party signed APT channel.
Same unfixed upstream bugs
The official build still ships the stdio MCP double-spawn and the XWayland-by-default that defeats the GlobalShortcutsPortal flag. The upside: these are now filable upstream against a first-party Linux target instead of living as workarounds here.
What this means for the project
Naming and path collision to defuse before the official APT channel flips live. Both packages are named claude-desktop, install under /usr/lib/claude-desktop with /usr/bin/claude-desktop, and write the same /etc/apt/sources.list.d/claude-desktop.list, /usr/share/keyrings/claude-desktop-archive-keyring.asc, and /etc/apparmor.d/claude-desktop. Install one over the other and they conflict. Options: distinct paths plus Conflicts:/Provides: metadata, possibly a rename.
Some patches are now redundant against the official .deb. force frame:true, the tray mutex/delay patch, the autoUpdater no-op Proxy, and the Cowork JS scaffolding. They stay load-bearing only for the current Windows-repackage pipeline.
Still clearly valuable. Distro coverage the official build doesn't serve (Fedora/DNF, AppImage, NixOS, Arch); non-KVM hosts, where our default bwrap Cowork backend runs and the official VM can't; the CLAUDE_USE_WAYLAND opt-in; GPU-crash auto-recovery.
Open questions
The biggest option on the table is to re-base on the official native build. We'd repackage the official .deb into RPM/AppImage/Nix/Arch, retire most of the patch suite, and inherit computer use plus the browser bridge. The cost is inheriting the KVM requirement, so we'd keep a bwrap fallback either way.
I don't have a firm answer yet. Input welcome on:
- Do we re-base on the official .deb, keep repackaging the Windows app, or run both paths?
- How do we handle the package and path collision (rename,
Conflicts: metadata, or both)?
- Which redundant patches do we drop now, and which stay until the repackage pipeline is retired?
Anthropic shipped an official Claude Desktop for Linux (beta) yesterday, and it tracks the same upstream version this repo already repackages (1.17377.1). I pulled the official .deb apart. Full teardown here: claude-desktop-linux-teardown.pdf (report CDL-ANT-0008, 11 pp).
The official build targets Ubuntu 22.04+ / Debian 12+, x86_64 and arm64, from an official APT repo at
downloads.claude.ai/claude-desktop/apt/stable. It ships the full Chat / Cowork / Code tabs. It's a genuine first-party native build on Electron 42.5.1. This repo repackages the Windows app; the official one doesn't. Docs: https://code.claude.com/docs/en/desktop-linuxNot in the Linux beta yet: Computer Use (app/screen control), dictation, and the Quick Entry global hotkey on native Wayland without the GlobalShortcuts portal. Debian-based only for now, so no Fedora/RHEL.
What converged
The official build independently reaches several fixes this project was forced to inject:
setImagethat avoids the KDE duplicate-icon race.globalShortcutmerged with theGlobalShortcutsPortalfeature flag.What's official-only
Things a repackage can't match:
@ant/claude-nativebinding doing genuine X11 input injection for computer use.Same unfixed upstream bugs
The official build still ships the stdio MCP double-spawn and the XWayland-by-default that defeats the
GlobalShortcutsPortalflag. The upside: these are now filable upstream against a first-party Linux target instead of living as workarounds here.What this means for the project
Naming and path collision to defuse before the official APT channel flips live. Both packages are named
claude-desktop, install under/usr/lib/claude-desktopwith/usr/bin/claude-desktop, and write the same/etc/apt/sources.list.d/claude-desktop.list,/usr/share/keyrings/claude-desktop-archive-keyring.asc, and/etc/apparmor.d/claude-desktop. Install one over the other and they conflict. Options: distinct paths plusConflicts:/Provides:metadata, possibly a rename.Some patches are now redundant against the official .deb. force
frame:true, the tray mutex/delay patch, theautoUpdaterno-op Proxy, and the Cowork JS scaffolding. They stay load-bearing only for the current Windows-repackage pipeline.Still clearly valuable. Distro coverage the official build doesn't serve (Fedora/DNF, AppImage, NixOS, Arch); non-KVM hosts, where our default bwrap Cowork backend runs and the official VM can't; the
CLAUDE_USE_WAYLANDopt-in; GPU-crash auto-recovery.Open questions
The biggest option on the table is to re-base on the official native build. We'd repackage the official .deb into RPM/AppImage/Nix/Arch, retire most of the patch suite, and inherit computer use plus the browser bridge. The cost is inheriting the KVM requirement, so we'd keep a bwrap fallback either way.
I don't have a firm answer yet. Input welcome on:
Conflicts:metadata, or both)?