Created attachment 184658 [details] ghidra.desktop SUMMARY https://github.com/NationalSecurityAgency/ghidra/ STEPS TO REPRODUCE 1. Download latest ghidra from https://github.com/NationalSecurityAgency/ghidra/ 2. Unpack into /opt/ghidra/ 3. Copy .desktop file from attachment to ~/.local/share/applications/ 4. Run update-desktop-database ~/.local/share/applications/ 5. Search "ghidra" in kicker (or krunner) 6. Pin to task switcher OBSERVED RESULT Icon in kicker is pixelated, icon in task switcher looks good. EXPECTED RESULT Both icons should look crisp. SOFTWARE/OS VERSIONS Operating System: Arch Linux KDE Plasma Version: 6.4.4 KDE Frameworks Version: 6.17.0 Qt Version: 6.9.2 Kernel Version: 6.16.4-arch1-1 (64-bit) Graphics Platform: Wayland Graphics Processor 1: AMD Radeon RX Vega M GL Graphics Graphics Processor 2: Mesa Intel® HD Graphics 630 ADDITIONAL INFORMATION
If you open /opt/ghidra/support/ghidra.ico in GIMP, do you see that it has multiple layers, and the top one is a small one rather than a big one?
I gon't have GIMP but icotool shows this: ghidra.ico: x_pels_per_meter field in bitmap should be zero ghidra.ico: y_pels_per_meter field in bitmap should be zero --icon --index=1 --width=16 --height=16 --bit-depth=32 --palette-size=0 ghidra.ico: x_pels_per_meter field in bitmap should be zero ghidra.ico: y_pels_per_meter field in bitmap should be zero --icon --index=2 --width=24 --height=24 --bit-depth=32 --palette-size=0 ghidra.ico: x_pels_per_meter field in bitmap should be zero ghidra.ico: y_pels_per_meter field in bitmap should be zero --icon --index=3 --width=32 --height=32 --bit-depth=32 --palette-size=0 ghidra.ico: x_pels_per_meter field in bitmap should be zero ghidra.ico: y_pels_per_meter field in bitmap should be zero --icon --index=4 --width=40 --height=40 --bit-depth=32 --palette-size=0 ghidra.ico: x_pels_per_meter field in bitmap should be zero ghidra.ico: y_pels_per_meter field in bitmap should be zero --icon --index=5 --width=48 --height=48 --bit-depth=32 --palette-size=0 ghidra.ico: x_pels_per_meter field in bitmap should be zero ghidra.ico: y_pels_per_meter field in bitmap should be zero --icon --index=6 --width=64 --height=64 --bit-depth=32 --palette-size=0 ghidra.ico: x_pels_per_meter field in bitmap should be zero ghidra.ico: y_pels_per_meter field in bitmap should be zero --icon --index=7 --width=128 --height=128 --bit-depth=32 --palette-size=0 --icon --index=8 --width=256 --height=256 --bit-depth=32 --palette-size=0
Yep, the smallest one is in the top layer, as I expected to see I guess this is a bug in the .ico file extractor *somewhere*; it should choose the largest size, or at least the one most appropriate for the requested size, rather than the top layer. Can you attach a screenshot showing how it looks in both places on your system?
Created attachment 185103 [details] task manager
Created attachment 185104 [details] kicker
Very interesting; that's not what I would have expected. Both use Kirigami.Icon under the hood, so it's possible what's going on here is that one UI happens to have the icon at an exact size that the .ico file has a version for, whereas the other one does not, so it falls back to the top layer, which is small. That's speculation on my side though.
Why did you assign this to kimageformats?
Speculation that the .ico file format handler returns a non-ideal layer. But it's kind of a guess as I'm not super familiar with this stack. If this is the wrong place for the bug report, feel free to move it to the right place.
There is no ico handler in kimageformats, it's part of qtbase.
This is probably me editorializing a bit too much, but I think it would be great if the robot could look slightly derpy or silly. That way you'd get a subconscious visual cue not to take its output as gospel truth.
Ok, if my speculation is correct, then I guess it's a Qt bug. Do you think my speculation is indeed correct?
With the information of this bug and having done no debugging at all, i don't think this is a Qt bug. It works in one place and does not work in another. It seems that if it was a bug in Qt it would not work anywhere. For me it seems a bug in kickoff (or it's dependency chain) that should be doing the same that the task switcher is doing to get the proper rendering/contents.
Both are using Kirigami.Icon to display the icons. Here are the the only differences in the implementation: - Kickoff sets `animated: false` and `selected: [some condition]` - Task Manager sets `active: [some condition]` I wonder if it's `animated: false`. I'll look into this further.
Created attachment 185461 [details] ghidra icon If I make the Kickoff implementation and size identical to those of Task Manager, I can still reproduce the icon being blurry in Kickoff but crisp in Task Manager. I'm at a loss to explain why at this point. I'm attaching the icon that exhibits the problem so someone smarter can figure it out.
>Both are using Kirigami.Icon to display the icons. I doubt it. The task manager would prefer the X provided window icon direct from the application if available
They both are on the QML side. It's possible the task manager has a more complicated C++ underbelly to get the icon.