Anthropic 社の AI デスクトップアプリ Claude Desktop(公式には Windows / macOS のみ提供)を、Linux でネイティブに動かすための非公式ビルドスクリプト集。
.exe)を取得 → 7z で展開 → 内部の app.asar(Electron アプリ本体)を抽出 → Linux 向けに sed/正規表現でパッチ(BrowserWindow の frame、ネイティブトレイ、テーマ周りなど)を当て直し、各種 Linux パッケージ形式に再構成する。.deb(Debian / Ubuntu / Mint).rpm(Fedora / RHEL / CentOS).AppImage(ディストロ非依存)claude-desktop-appimage(Arch)claude-desktop と FHS 版 claude-desktop-fhs)apt upgrade / dnf upgrade で自動更新可能。build.sh(bash、STYLEGUIDE 準拠・shellcheck/actionlint 対応)、参照用のビーティファイ済みソースを build-reference/ に置き、ミニファイ変数名の変化に耐える正規表現戦略を採る。~/.config/Claude/claude_desktop_config.json)、グローバルホットキー(Ctrl+Alt+Space、X11 / Wayland)、システムトレイ連携、--doctor 診断コマンドを内蔵。実験機能として Cowork モード(bubblewrap サンドボックス or ホスト直実行)も既定で有効。| 手段 | 代償 | 本リポジトリとの差 |
|---|---|---|
| Wine / Bottles で Windows 版を動かす | 起動遅い・IME 崩壊・トレイ/ホットキー/MCP 不安定 | 本物の Linux ネイティブ Electron として動くため IME・Wayland・トレイが素直に通る |
| ブラウザ版 claude.ai を PWA | デスクトップ機能(MCP、グローバルホットキー、トレイ常駐)が使えない | MCP とホットキー、トレイ常駐までそのまま使える |
先行の k3d3 製 claude-desktop-linux-flake |
NixOS 専用、メンテ停止気味 | deb/rpm/AppImage/AUR/Nix を一括カバー。APT/DNF リポジトリまで提供し、自動更新まで面倒を見る |
自前で .exe を展開してパッチ |
ミニファイ変数が毎リリース変わり壊れる | build.sh が正規表現+動的変数抽出で追従、CI が上流バージョンの自動検知と URL 更新(check-claude-version workflow)まで実施 |
| Electron アプリ一般を AppImage 化するだけ | Linux 固有のトレイアイコン / 枠なしウィンドウ / ネイティブテーマ問題が残る | frame-fix-wrapper.js によるラッパー注入、トレイアイコン差し替え、Wayland/XWayland 対応など Linux 固有バグのパッチが蓄積(docs/learnings/ に知見も集約) |
要するに「Claude Desktop を Linux でちゃんと普通に使う」ための、ディストロ網羅・自動更新・MCP 対応をワンストップで整えた実装。個別に Wine 起動やブラウザ PWA で済ませるよりも、ネイティブ機能(MCP、ホットキー、トレイ)が揃い、メンテナンス負荷も肩代わりされる。
/usr/share/keyrings/ に置き、deb https://aaddrick.github.io/claude-desktop-debian stable main を登録 → sudo apt install claude-desktop。claude-desktop.repo を /etc/yum.repos.d/ に置いて sudo dnf install claude-desktop。yay -S claude-desktop-appimage(または paru)。nix profile install github:aaddrick/claude-desktop-debian(MCP 付きなら #claude-desktop-fhs)。.deb / .rpm / .AppImage を直接ダウンロード。~/.config/Claude/claude_desktop_config.json に MCP サーバ設定を追加。claude-desktop --doctor を実行し、表示サーバ・サンドボックス・MCP 設定・トレイ backend の健全性を確認。git clone 後、./build.sh を実行(ディストロを自動判定してフォーマット選択)。./build.sh --build {deb|rpm|appimage|nix}、デバッグ時は --clean no、上流配布が古い時は --exe /path/to/Claude-Setup.exe でローカルのインストーラを流用。.exe 展開 → app.asar → asar extract → sed -E で正規表現パッチ → ラッパー JS (frame-fix-entry.js / frame-fix-wrapper.js) 注入 → 再梱包 → パッケージング」の順。build-reference/app-extracted/.vite/build/*.js(prettier 整形済み)を読み、本物の minified コードとは空白揺れが違う点に注意しながら正規表現を書く。/lint(shellcheck + actionlint)で静的解析。CI は GitHub Actions で走り、タグ v{REPO_VERSION}+claude{CLAUDE_DESKTOP_VERSION} を push するとリリース build がトリガされ、deb/rpm/AppImage 成果物と APT/DNF リポジトリ更新が同時に回る。check-claude-version workflow が CLAUDE_DESKTOP_VERSION 変数と build.sh の URL を自動更新 → 新タグ作成まで無人で進む。