The troubles of running Claude Desktop on Linux to get MCP support

Running Claude (Windows app) smoothly on Linux with Proton-GE

1. Installing Proton-GE

  • Installed proton-ge-custom-bin from the AUR.

  • Confirmed it landed at:

    /usr/share/steam/compatibilitytools.d/proton-ge-custom/proton
    

2. Creating a wrapper script

~/.local/bin/claude-proton:

#!/usr/bin/env bash
set -euo pipefail

PROTON_BIN="/usr/share/steam/compatibilitytools.d/proton-ge-custom/proton"

detect_steam_root() {
  local cands=(
    "$HOME/.local/share/Steam"
    "$HOME/.steam/steam"
    "$HOME/.var/app/com.valvesoftware.Steam/data/Steam"
  )
  for d in "${cands[@]}"; do
    if [ -d "$d/steamapps" ]; then
      echo "$d"; return 0
    fi
  done
  return 1
}

STEAM_ROOT="$(detect_steam_root || true)"
if [ -z "${STEAM_ROOT:-}" ]; then
  echo "Could not find your Steam client root (with steamapps/)." >&2
  exit 1
fi

mkdir -p "$HOME/.config/protonfixes" "$HOME/.proton/claude"

export STEAM_COMPAT_CLIENT_INSTALL_PATH="$STEAM_ROOT"
export STEAM_COMPAT_DATA_PATH="${STEAM_COMPAT_DATA_PATH:-$HOME/.proton/claude}"

export PROTON_LOG=0
export DXVK_LOG_LEVEL=none
export VKD3D_DEBUG=none
export ELECTRON_NO_ATTACH_CONSOLE=1
export PROTONFIXES_DISABLE=1
export PROTON_DISABLE_XALIA=1

[ -d "$STEAM_COMPAT_DATA_PATH/pfx" ] || "$PROTON_BIN" wineboot -u

CLAUDE_EXE="$STEAM_COMPAT_DATA_PATH/pfx/drive_c/users/steamuser/AppData/Local/AnthropicClaude/claude.exe"
exec "$PROTON_BIN" "$CLAUDE_EXE" "$@"

Make it executable:

chmod +x ~/.local/bin/claude-proton

3. Desktop entry

~/.local/share/applications/Claude (Proton-GE).desktop:

[Desktop Entry]
Name=Claude (Proton-GE)
Exec=sh -lc '/home/alice/.local/bin/claude-proton --disable-gpu-compositing'
Type=Application
StartupNotify=false
Comment=Claude via Proton-GE
Icon=CEDD_claude.0
Path=/home/alice/.proton/claude/pfx/drive_c/users/steamuser/AppData/Local/AnthropicClaude/app-0.13.37
StartupWMClass=claude.exe
X-KDE-RunOnDiscreteGpu=true

Refresh KDE menu:

kbuildsycoca6 --noincremental

4. Cleaning up old installs

  • Nuked the old Wine Claude install at ~/.wine/.../AnthropicClaude.

  • Deleted unused Steam compatdata prefixes:

    rm -rf ~/.local/share/Steam/steamapps/compatdata/0
    rm -rf ~/.local/share/Steam/steamapps/compatdata/test_prefix
    
  • Removed unused packages:

    sudo pacman -Rns electron34 electron35 electron36
    
  • Kept wine, winetricks, cabextract for other apps.


5. Keyboard shortcuts

  • Electron inside Proton mapped zoom differently.
  • Zoom works with Ctrl + ? and Ctrl + \`` (instead of Ctrl + + / -`).
  • Accepted as “good enough.”

6. Window management

  • Tried multiple configs for KDE + Proton window frames.

  • Single-titlebar setup tricky due to Electron embedding.

  • Settled on using two titlebars (inner Claude bar + outer KDE bar).

    • Functional (maximized dragging works).
    • Slightly jank visually, but acceptable.

7. Misc

  • Suppressed Proton spam logs with:

    export PROTON_DISABLE_XALIA=1
    
  • Disk usage: Proton prefix for Claude ~744 MB.

  • Cache cleaned:

    sudo paccache -ruk0
    yay -Scc
    

✅ Final result: Claude launches from the KDE menu via Proton-GE, with no input delay, usable zoom shortcuts, and draggable maximized windows (at the cost of a second titlebar).