fix(launcher): resolve window provider icons via desktop entry - #4279
Open
TheSkyentist wants to merge 1 commit into
Open
fix(launcher): resolve window provider icons via desktop entry#4279TheSkyentist wants to merge 1 commit into
TheSkyentist wants to merge 1 commit into
Conversation
The window provider fed the raw Wayland app id straight into the icon theme lookup, so an app whose app id differs from its icon name (for example "dev.zed.Zed" against the "zed" icon) fell back to the generic window glyph in the launcher, even though its icon showed fine in the taskbar, dock and app launcher. The taskbar, dock, active window widget and window switcher all resolve the app id to a desktop entry through app_identity before the icon lookup. This routes the launcher's window provider through the same path, with internal apps and a raw app id fallback handled the same way. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
|
The description now contains the required template structure. |
TheSkyentist
marked this pull request as ready for review
September 4, 2026 17:35
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The launcher's window provider (
/win) passes the raw Wayland app id straight into the icon theme lookup. When an app's app id doesn't match its icon name, that lookup misses and the result falls back to the generic window glyph.makeResult()now resolves the app id to a desktop entry viaapp_identity::findDesktopEntry()and uses itsIcon=key, with an internal apps branch and a raw app id fallback so the rest of the provider is untouched.Motivation
I ran into this with Zed: its window shows the default icon in the launcher's window list, but the correct icon everywhere else (taskbar, dock, app launcher).
dev.zed.Zed.desktophasIcon=zed, the Wayland app id isdev.zed.Zed, and the icon on disk iszed.png, soresolve("dev.zed.Zed")finds nothing.Going through past issues and PRs, this is the same class of bug as #2337 (inconsistent missing icons in dock / active window vs app launcher), which was fixed by routing app id to desktop entry resolution through
app_identity. The taskbar, dock, active window widget and window switcher all go through that path already; the window provider was added later (#2884) and never got wired up to it. This applies the existing approach in the one place it was still missing.Type of Change
Related Issue
Related to #2337.
Testing
just format(clang-format v22) clean. Built withmeson setup --buildtype=debug+ninja: 0 warnings, all 796 targets link.meson test: 111/111 pass (no dedicated test exists for the window provider). Ran the built binary in place of my installed shell and confirmed Zed now shows its real icon in/winwhere it previously showed the generic glyph.Manual Coverage
Checklist
CONTRIBUTING.md.just formatwith clang-format v22+ installed, or this PR has no code changes.docs/user/when this PR changes documented behavior or configuration, or this PR does not require documentation changes.assets/translations/en.json, or this PR adds no new user-facing strings.🤖 Generated with Claude Code