Skip to content

Official Claude Desktop for Linux shipped: what does this project do now? #762

Description

@aaddrick

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:

  1. Do we re-base on the official .deb, keep repackaging the Windows app, or run both paths?
  2. How do we handle the package and path collision (rename, Conflicts: metadata, or both)?
  3. Which redundant patches do we drop now, and which stay until the repackage pipeline is retired?

Metadata

Metadata

Assignees

No one assigned

    Labels

    priority: highImportant, should be addressed soonquestionFurther information is requestedtriage: needs-infoMore information needed from reporter

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions