[BUG] Claude Desktop (Windows): system-tray icon invisible when app theme differs from the Windows taskbar mode — wrong-contrast glyph selected (mirror of #65343)
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
On Windows, the Claude Desktop system-tray icon renders as a blank/white square (invisible) whenever the app's appearance (userThemeMode) differs from the Windows taskbar color ("Windows mode"). The app is fully functional — only the tray glyph is invisible.
What Should Happen?
The tray glyph should contrast with the Windows taskbar and stay visible regardless of the app's own theme. Fix: select the tray icon from the taskbar / Windows-mode color (registry SystemUsesLightTheme) instead of nativeTheme.shouldUseDarkColors — light taskbar → Tray-Win32.ico (black glyph), dark taskbar → Tray-Win32-Dark.ico (white glyph). Alternatively ship a monochrome template tray image and let Windows handle contrast automatically.
Error Messages/Logs
None — no error is logged. The app runs normally; this is a silent icon-selection defect (the wrong-contrast glyph is drawn). The only evidence is visual: an empty/white tray cell on a light taskbar.
Steps to Reproduce
Windows → Settings → Personalization → Colors → set "Choose your default Windows mode" = Light (taskbar/tray is light).
Open Claude Desktop → Settings → set Appearance = Dark (config: userThemeMode: "dark").
Minimize Claude to the system tray.
Look at the Claude icon in the tray (taskbar or the ^ overflow flyout).
Result: a blank/white square — the app draws the white glyph (Tray-Win32-Dark.ico) on the light taskbar. Expected: the black glyph (Tray-Win32.ico) for contrast. Deterministic every launch with this theme combo, and on a separate freshly-installed Windows 11 machine.
Claude Model
None
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
Claude Desktop 1.15962.1.0 (MSIX/Store) — Desktop app, not the CLI
Platform
Anthropic API
Operating System
Windows
Terminal/Shell
Other
Additional Information
This is the Claude Desktop GUI app (MSIX/Store), so the CLI-oriented fields above (Model, Platform, Terminal/Shell) aren't really applicable. Mirror issue #65343 ("tray icon black on Windows when Windows mode is Dark") is the same root cause with themes reversed; it was closed as invalid on a misdiagnosis — the .ico is not empty, it's a valid white glyph (pixel-verified). Please consider reopening/linking. Workaround: match the app theme to the taskbar (app→Light or Windows mode→Dark).
3 Comments
Found 2 possible duplicate issues:
This issue will be automatically closed as a duplicate in 3 days.
🤖 Generated with Claude Code
Would be happy to upvote any of those tickets, but they are closed
Vladimir
On Tue, Jun 30, 2026 at 3:59 PM github-actions[bot] <
@.***> wrote:
Confirming this on the current build, in the opposite theme direction from the repro in the original post, and with measurements that I think correct the root-cause analysis in #65343 (which was closed as not planned).
Environment
| | |
|---|---|
| Claude Desktop | 1.30096.5.0 (MSIX,
Claude_1.30096.5.0_x64__pzs8sxrjxfjjc) || Windows | 11 Pro, build 10.0.26200 |
|
SystemUsesLightTheme|0— taskbar/tray is dark ||
AppsUseLightTheme|1— app windows are light |Result: the tray glyph is black on a dark taskbar — effectively invisible.
Isolating the defect to the "System" appearance setting. Toggling Claude Desktop's own Settings → Appearance, with no Windows settings changed:
| Claude Desktop appearance | Electron
themeSource|shouldUseDarkColors| Glyph | Against my dark taskbar ||---|---|---|---|---|
| Dark |
dark(forced) | true | white | correct || Light |
light(forced) | false | black | invisible || System (default) |
system| false — resolvesAppsUseLightTheme= 1 | black | invisible |This narrows it usefully:
tray.setImage()works — the Dark row proves both. Nothing is corrupt or broken in the tray plumbing.themeSource: 'system',shouldUseDarkColorsreturns the app color mode, which is correct and documented behavior for window chrome — Electron is not misbehaving here. The defect is Claude Desktop reusing a window-theme signal to pick a shell-surface asset. The tray lives on the taskbar, so it must follow the taskbar's mode.The assets are not corrupt. #65343 attributed this to
Tray-Win32-Dark.icobeing "corrupt/transparent." That is not the case. I decoded both icons from the shipped package at 32x32 and measured the mean luminance of their opaque pixels:| File | Opaque pixels | Mean luminance |
|---|---|---|
|
resources\Tray-Win32.ico| 322 | 0 / 255 (pure black glyph) ||
resources\Tray-Win32-Dark.ico| 322 | 255 / 255 (pure white glyph) |Identical coverage (322 px each), inverted color. Both files are valid and correctly drawn. This is a selection bug, not an asset bug — worth correcting since the asset theory appears to be why the earlier report was dismissed.
The selection logic. From
resources\app.asarin 1.30096.5.0:The glyph is chosen from
nativeTheme.shouldUseDarkColors. On Windows that reflectsAppsUseLightTheme(the app color mode), but the surface the icon is drawn on — the taskbar — followsSystemUsesLightTheme(the Windows color mode). Those are two independent settings in Personalization → Colors, so whenever they differ the glyph is drawn at minimum contrast:| Windows mode (taskbar) | App mode | Glyph chosen | Result |
|---|---|---|---|
| Light | Light | black | OK |
| Dark | Dark | white | OK |
| Light | Dark | white | invisible (the OP's case) |
| Dark | Light | black | invisible (my case) |
Both failing rows are the same defect. Note that the two working rows are the common configurations, which is likely why this survives internal use — a developer running matched modes never sees it.
Also worth noting: the
switchscrutinee is the literal `ico, so thetemplate-imageandpngbranches are unreachable in the shipped Windows bundle even thoughTrayIconTemplate*.png` assets ship alongside.Suggested fix. Keep
shouldUseDarkColorsfor window chrome, but for the tray specifically — and only when appearance isSystem— select on the shell theme:Read it at tray creation and re-read on
WM_SETTINGCHANGE, callingtray.setImage()when it flips. Electron does not expose the shell theme separately today — that gap is electron/electron#46429 — so this needs a direct registry read on Windows.An explicit Light or Dark appearance choice can keep overriding the tray as it does now, since that is a deliberate user instruction. Only the
Systempath needs to change, which should make this a contained fix.Accessibility framing: in both failing configurations the contrast ratio between glyph and taskbar is approximately 1:1, which is a complete loss of a persistent UI affordance rather than a cosmetic issue.
Workaround for anyone landing here: make the two settings match — Personalization → Colors, set app mode and Windows mode to the same value.