Run Claude Desktop on Linux by extracting the official Windows app and running it under a native Linux Electron runtime. No Wine, no VM — just the real Claude Desktop.
git clone https://github.com/alejandrok5/claude-desktop-linux.git
cd claude-desktop-linux
./setup.shThat's it. The script downloads the latest Claude Desktop directly from Anthropic's servers, installs Electron, extracts the app, and creates a .desktop entry so Claude appears in your application launcher.
No Windows installer needed. No Wine. No manual downloads.
To launch:
npm start
# or click "Claude" in your app launcher- Node.js >= 22
- curl and unzip (standard on most distros)
Install on Ubuntu/Debian
sudo apt install nodejs npm curl unzipInstall on Fedora
sudo dnf install nodejs npm curl unzipInstall on Arch
sudo pacman -S nodejs npm curl unzipWhen a new version of Claude Desktop is released, just re-run the setup:
./setup.shThe script downloads the latest MSIX package from Anthropic's servers, re-extracts resources, and verifies the Electron version still matches. If the upstream app requires a new Electron version, it installs it automatically.
Downloads the latest MSIX package directly from Anthropic's API (https://claude.ai/api/desktop/win32/x64/msix/latest/redirect), which is a ZIP containing the Electron app. Extracts app.asar and supporting files (locales, fonts, icons, migrations, Linux SSH binaries) into resources/.
Also supports the legacy Squirrel.Windows installer format if you place a Claude Setup.exe in the project root.
A thin Electron entry point that patches the runtime before loading the real app:
process.resourcesPath→resources/so locale files, fonts, and migrations resolveapp.getAppPath()→resources/app.asarso preload scripts and HTML load from the asarapp.isPackaged→trueso the app uses production resource pathsapp.name→Claudeso user data goes to~/.config/Claude/
On Linux, it also applies runtime patches to the bundled code:
- Platform support — Adds
linux-x64/linux-arm64togetHostPlatform()so the Claude Code integration doesn't crash - Claude Code CLI — Auto-detects a locally installed
claudebinary and setsCLAUDE_CODE_LOCAL_BINARY - Shell PATH — Adds standard Linux paths (
~/.nvm/versions/node/*/bin,/usr/local/bin, etc.) to the app's PATH builder - Titlebar — Hides the outer-frame drag overlay that blocks tab clicks on Linux, and attempts to enable native window controls
- Full Claude chat UI (loads claude.ai in a BrowserView)
- Claude Code integration (Chat/Directs/Code tabs — requires
claudeCLI installed) - Authentication (OAuth flow)
- System tray icon
- MCP (Model Context Protocol) server support
- Claude Code SSH integration (Linux binaries are bundled)
- All 56 locales
- SQLite storage (built into Electron 40.x via
node:sqlite) - Window management, keyboard shortcuts, find-in-page
These features depend on platform-specific native modules. The app handles their absence gracefully:
| Feature | Reason | Behavior |
|---|---|---|
| Computer Use | Requires @ant/claude-native (Windows .node binary) |
Shows "not available" |
| Quick Entry overlay | Requires @ant/claude-swift (macOS/Windows) |
Silently skipped |
| Office integration | Windows registry / COM automation | Silently skipped |
| Auto-updates | Uses MSIX/Squirrel updaters | Run ./setup.sh to update |
| Cowork VM | Requires Windows Hyper-V | Silently skipped |
.
├── setup.sh # One-shot setup and update script
├── package.json # Pins Electron version
├── main.js # Electron launcher with Linux patches
├── scripts/
│ └── extract.mjs # Resource extraction (Squirrel + MSIX)
├── resources/ # Generated (not committed)
│ ├── app.asar # Core Electron app (~18 MB)
│ ├── *.json # Locale files
│ ├── icon.png # App icon
│ ├── fonts/ # Anthropic fonts
│ ├── drizzle/ # SQLite migrations
│ ├── seed/ # Seed data
│ └── claude-ssh/ # Linux SSH binaries
└── .gitignore
Claude Desktop stores its configuration at ~/.config/Claude/claude_desktop_config.json. This is where MCP servers and other settings are configured.
App crashes on startup: Ensure you're running Electron 40.4.1 (or whatever version the extracted app.asar requires). Run ./setup.sh to auto-detect and install the correct version.
"Unsupported platform: linux-x64": The patches in main.js should handle this. If you see this error, the patched strings may have changed in a new version. Please open an issue.
Claude Code tab not working: Install the Claude Code CLI (npm install -g @anthropic-ai/claude-code) and ensure claude is in your PATH.
Can't click Chat/Code tabs: The outer-frame drag overlay fix should handle this. If tabs are unclickable, the CSS class name may have changed. Please open an issue.
This project is a wrapper/launcher only. Claude Desktop and all extracted assets are property of Anthropic PBC. This project does not redistribute any Anthropic code or assets.