[BUG] [Claude Desktop Linux] Tray icon broken — minifier produces undefined variable 'oe' instead of 'Ae' (Electron module) + menuBarEnabled reset on update

Resolved 💬 2 comments Opened Feb 7, 2026 by Voork1144 Closed Mar 8, 2026

Bug Description

Two issues prevent system tray icons from appearing on Claude Desktop for Linux.

Bug 1: Minifier variable reference error in tray icon theme detection

In the minified app.asar (.vite/build/index.js), the XH() function that creates the system tray icon has a broken variable reference on the Linux code path:

sa ? e = Ae.nativeTheme.shouldUseDarkColors ? "Tray-Win32-Dark.ico" : "Tray-Win32.ico"
   : e = oe.nativeTheme.shouldUseDarkColors ? "TrayIconTemplate-Dark.png" : "TrayIconTemplate.png"
  • sa = process.platform === "win32" (Windows check)
  • Ae = require("electron") (Electron module — correct)
  • oe = undefined (should be Ae)

On Windows (sa is true): uses Ae.nativeTheme — works fine.
On Linux (sa is false): uses oe.nativeTheme — crashes with:

ReferenceError: oe is not defined
    at XH (/tmp/.mount_claudei0eKwh/.../app.asar/.vite/build/index.js:665:63804)

This is a Vite minifier/tree-shaking/scope-hoisting bug in the build pipeline that incorrectly renames the Electron module variable on the Linux code path.

Note: The AUR package (claude-desktop-bin) has a fix_tray_icon_theme.py that patches this same area of the code, which independently confirms the build output is broken for Linux.

Bug 2: menuBarEnabled config reset on update

The tray icon creation in XH() is gated behind a config setting:

const t = Vn("menuBarEnabled");
// ...
if(!!t) {
  Ds = new Ae.Tray(...)
}

When Claude Desktop updates, the menuBarEnabled setting is removed from ~/.config/Claude/config.json, causing the tray icon to silently not be created even when the code would otherwise work.

Combined Effect

Users hit Bug 2 (config reset removes the setting) AND Bug 1 (code crashes on Linux path even if setting were present). Both must be fixed for tray icons to work on Linux.

Steps to Reproduce

  1. Install Claude Desktop on Linux via AppImage
  2. Update to version 1.1.2321
  3. Launch Claude Desktop
  4. Observe: no system tray icon appears
  5. Check ~/.config/Claude/logs/main.log for ReferenceError: oe is not defined
  6. Check ~/.config/Claude/config.jsonmenuBarEnabled is missing

Workaround

  1. Add "menuBarEnabled": true to ~/.config/Claude/config.json (top level)
  2. Extract the AppImage squashfs-root and run from there instead of the FUSE mount — the extracted app.asar has the correct Ae.nativeTheme reference (reason for discrepancy unclear)

Environment

  • OS: Bazzite Linux (Fedora-based, rpm-ostree), KDE Plasma 6 on Wayland
  • Claude Desktop version: 1.1.2321
  • Electron: 40.2.1
  • Node: 24.11.1
  • AppImage source: aaddrick/claude-desktop-debian
  • Tray protocol: StatusNotifierItem (SNI) — required by KDE Plasma 6

Expected Behavior

System tray icon should appear on Linux, matching Windows behavior.

View original on GitHub ↗

This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗