Bug 504741 - Certain symbolic icons show up as white rectangles in GTK3
Summary: Certain symbolic icons show up as white rectangles in GTK3
Status: RESOLVED FIXED
Alias: None
Product: Breeze
Classification: Plasma
Component: Icons (other bugs)
Version First Reported In: 6.3.5
Platform: Arch Linux Linux
: NOR normal
Target Milestone: ---
Assignee: visual-design
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2025-05-24 19:02 UTC by Mors Mortium
Modified: 2025-05-29 14:10 UTC (History)
3 users (show)

See Also:
Latest Commit:
Version Fixed In: 6.15
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Mors Mortium 2025-05-24 19:02:47 UTC
SUMMARY

I have a GTK3 program, where I wanted to set a symbolic weather icon somewhere. What happened is instead I got a white square in its place. I have made a small program to test every single icon, and I got a full list of which does show up that way. I also tested papirus icons, to see if it is some common feature that is missing from GTK3, but there was no icons there to show up this way. The icons work in GTK4, however.

STEPS TO REPRODUCE
1. Open an app designer app, like Glade
2. Make a design
3. Add a GTKWindow
4. Add a GTKImage to it
5. Set the icon name property to weather-clear-night-symbolic

OBSERVED RESULT

The icon shows up as a white rectangle

EXPECTED RESULT

That the icon displays correctly, as many others

SOFTWARE/OS VERSIONS
Operating System: Artix Linux 
KDE Plasma Version: 6.3.5
KDE Frameworks Version: 6.14.0
Qt Version: 6.9.0
Kernel Version: 6.14.6-artix1-1 (64-bit)
Graphics Platform: Wayland
Processors: 12 × 11th Gen Intel® Core™ i5-11400F @ 2.60GHz
Memory: 15.5 GiB of RAM
Graphics Processor: AMD Radeon RX 6600 XT
Manufacturer: ASUS

ADDITIONAL INFORMATION

One more thing to mention is some show up as 16x16, some as 22x22. some as 32x32.

The whole list of icons, that show up this way (ignore the number on the end of them and .png, those are artifacts from the app rendering them):
```
akonadi-symbolic1006.png              kleopatra-symbolic785.png                               preferences-system-bluetooth-activated-symbolic659.png  weather-freezing-rain-night-symbolic1076.png                  weather-showers-scattered-symbolic851.png
akonadi-symbolic1029.png              kleopatra-symbolic987.png                               preferences-system-bluetooth-activated-symbolic894.png  weather-freezing-rain-night-symbolic829.png                   weather-showers-symbolic1079.png
akonadi-symbolic737.png               klipper-symbolic1004.png                                preferences-system-bluetooth-activated-symbolic899.png  weather-freezing-rain-symbolic1095.png                        weather-showers-symbolic472.png
akonadi-symbolic759.png               klipper-symbolic1060.png                                preferences-system-bluetooth-activated-symbolic906.png  weather-freezing-rain-symbolic848.png                         weather-showers-symbolic832.png
akonadi-symbolic782.png               klipper-symbolic1063.png                                preferences-system-bluetooth-battery-symbolic653.png    weather-freezing-scattered-rain-day-symbolic1117.png          weather-snow-day-symbolic1111.png
akonadi-symbolic984.png               klipper-symbolic757.png                                 preferences-system-bluetooth-battery-symbolic900.png    weather-freezing-scattered-rain-day-symbolic870.png           weather-snow-day-symbolic864.png
amarok-symbolic1008.png               klipper-symbolic813.png                                 preferences-system-bluetooth-inactive-symbolic650.png   weather-freezing-scattered-rain-night-symbolic1116.png        weather-snow-night-symbolic1088.png
amarok-symbolic1035.png               klipper-symbolic816.png                                 preferences-system-bluetooth-inactive-symbolic897.png   weather-freezing-scattered-rain-night-symbolic869.png         weather-snow-night-symbolic841.png
amarok-symbolic743.png                kmail-symbolic1024.png                                  vlc-symbolic1013.png                                    weather-freezing-scattered-rain-storm-day-symbolic1114.png    weather-snow-rain-symbolic1107.png
amarok-symbolic761.png                kmail-symbolic732.png                                   vlc-symbolic721.png                                     weather-freezing-scattered-rain-storm-day-symbolic867.png     weather-snow-rain-symbolic860.png
amarok-symbolic788.png                kmail-symbolic777.png                                   vlc-symbolic766.png                                     weather-freezing-scattered-rain-storm-night-symbolic1069.png  weather-snow-scattered-day-symbolic1073.png
amarok-symbolic990.png                kmail-symbolic979.png                                   vlc-symbolic968.png                                     weather-freezing-scattered-rain-storm-night-symbolic822.png   weather-snow-scattered-day-symbolic826.png
cantata-symbolic1011.png              konversation-symbolic1042.png                           weather-clear-night-symbolic1085.png                    weather-freezing-scattered-rain-storm-symbolic1080.png        weather-snow-scattered-night-symbolic1109.png
cantata-symbolic1039.png              konversation-symbolic749.png                            weather-clear-night-symbolic502.png                     weather-freezing-scattered-rain-storm-symbolic833.png         weather-snow-scattered-night-symbolic862.png
cantata-symbolic746.png               konversation-symbolic795.png                            weather-clear-night-symbolic838.png                     weather-freezing-scattered-rain-symbolic1092.png              weather-snow-scattered-storm-day-symbolic1118.png
cantata-symbolic764.png               konversation-symbolic996.png                            weather-clear-symbolic1071.png                          weather-freezing-scattered-rain-symbolic845.png               weather-snow-scattered-storm-day-symbolic871.png
cantata-symbolic792.png               kopete-symbolic1022.png                                 weather-clear-symbolic431.png                           weather-freezing-storm-day-symbolic1099.png                   weather-snow-scattered-storm-night-symbolic1100.png
cantata-symbolic993.png               kopete-symbolic730.png                                  weather-clear-symbolic824.png                           weather-freezing-storm-day-symbolic852.png                    weather-snow-scattered-storm-night-symbolic853.png
input-mouse-battery-symbolic1052.png  kopete-symbolic775.png                                  weather-clear-wind-night-symbolic1067.png               weather-freezing-storm-night-symbolic1087.png                 weather-snow-scattered-storm-symbolic1081.png
input-mouse-battery-symbolic805.png   kopete-symbolic977.png                                  weather-clear-wind-night-symbolic820.png                weather-freezing-storm-night-symbolic840.png                  weather-snow-scattered-storm-symbolic834.png
kalarm-symbolic1031.png               korgac-symbolic1017.png                                 weather-clear-wind-symbolic1075.png                     weather-freezing-storm-symbolic1086.png                       weather-snow-scattered-symbolic1113.png
kalarm-symbolic739.png                korgac-symbolic725.png                                  weather-clear-wind-symbolic828.png                      weather-freezing-storm-symbolic839.png                        weather-snow-scattered-symbolic866.png
kalarm-symbolic784.png                korgac-symbolic770.png                                  weather-clouds-night-symbolic1072.png                   weather-hail-symbolic1066.png                                 weather-snow-storm-day-symbolic1089.png
kalarm-symbolic986.png                korgac-symbolic972.png                                  weather-clouds-night-symbolic825.png                    weather-hail-symbolic819.png                                  weather-snow-storm-day-symbolic842.png
kdeconnect-symbolic1001.png           kruler-symbolic1019.png                                 weather-clouds-symbolic1105.png                         weather-many-clouds-wind-symbolic1101.png                     weather-snow-storm-night-symbolic1074.png
kdeconnect-symbolic1015.png           kruler-symbolic727.png                                  weather-clouds-symbolic858.png                          weather-many-clouds-wind-symbolic854.png                      weather-snow-storm-night-symbolic827.png
kdeconnect-symbolic714.png            kruler-symbolic772.png                                  weather-clouds-wind-night-symbolic1090.png              weather-showers-day-symbolic1078.png                          weather-snow-storm-symbolic1083.png
kdeconnect-symbolic723.png            kruler-symbolic974.png                                  weather-clouds-wind-night-symbolic843.png               weather-showers-day-symbolic831.png                           weather-snow-storm-symbolic836.png
kdeconnect-symbolic754.png            ktorrent-symbolic1033.png                               weather-clouds-wind-symbolic1093.png                    weather-showers-night-symbolic1112.png                        weather-snow-symbolic1119.png
kdeconnect-symbolic768.png            ktorrent-symbolic741.png                                weather-clouds-wind-symbolic846.png                     weather-showers-night-symbolic865.png                         weather-snow-symbolic625.png
kdeconnect-symbolic961.png            ktorrent-symbolic786.png                                weather-few-clouds-night-symbolic1102.png               weather-showers-scattered-day-symbolic1070.png                weather-snow-symbolic872.png
kdeconnect-symbolic970.png            ktorrent-symbolic988.png                                weather-few-clouds-night-symbolic542.png                weather-showers-scattered-day-symbolic823.png                 weather-storm-day-symbolic1068.png
kget-symbolic1021.png                 kup-symbolic1016.png                                    weather-few-clouds-night-symbolic855.png                weather-showers-scattered-night-symbolic1104.png              weather-storm-day-symbolic821.png
kget-symbolic729.png                  kup-symbolic724.png                                     weather-few-clouds-symbolic1108.png                     weather-showers-scattered-night-symbolic857.png               weather-storm-night-symbolic1097.png
kget-symbolic774.png                  kup-symbolic769.png                                     weather-few-clouds-symbolic573.png                      weather-showers-scattered-storm-day-symbolic1084.png          weather-storm-night-symbolic850.png
kget-symbolic976.png                  kup-symbolic971.png                                     weather-few-clouds-symbolic861.png                      weather-showers-scattered-storm-day-symbolic837.png           weather-storm-symbolic1077.png
kgpg-symbolic1040.png                 network-bluetooth-inactive-symbolic1062.png             weather-few-clouds-wind-night-symbolic1094.png          weather-showers-scattered-storm-night-symbolic1115.png        weather-storm-symbolic451.png
kgpg-symbolic747.png                  network-bluetooth-inactive-symbolic1065.png             weather-few-clouds-wind-night-symbolic847.png           weather-showers-scattered-storm-night-symbolic868.png         weather-storm-symbolic830.png
kgpg-symbolic793.png                  network-bluetooth-inactive-symbolic815.png              weather-few-clouds-wind-symbolic1096.png                weather-showers-scattered-storm-symbolic1082.png
kgpg-symbolic994.png                  network-bluetooth-inactive-symbolic818.png              weather-few-clouds-wind-symbolic849.png                 weather-showers-scattered-storm-symbolic835.png
kleopatra-symbolic1032.png            preferences-system-bluetooth-activated-symbolic647.png  weather-freezing-rain-day-symbolic1103.png              weather-showers-scattered-symbolic1098.png
kleopatra-symbolic740.png             preferences-system-bluetooth-activated-symbolic652.png  weather-freezing-rain-day-symbolic856.png               weather-showers-scattered-symbolic526.png
```
Comment 1 Nate Graham 2025-05-28 18:47:01 UTC
GTK apps still support XDG icon theming, so if you're not seeing the icons you expect appear in these apps, then the problem is that the environment where the app is running isn't using the Breeze icon theme, and the icon theme it is using doesn't fall back to Breeze, and because the GTK icon loader is being used, it will try to fall back to Adwaita (which doesn't have these icons) rather than Breeze as its final fallback before looking in hicolor (which also won't have these icons).
Comment 2 Mors Mortium 2025-05-28 18:52:16 UTC
I have rendered every single Breeze symbolic icon, all are used, and the environment is just KDE Plasma, with Breeze icons selected and KDE GTK configurator also set to Breeze. And no, GTK falls back to gtk-missing-image, not a white filled square
Comment 3 Nate Graham 2025-05-28 18:56:00 UTC
Then somehow the app is still failing to actually use Breeze as its icon theme.

I'm not familiar enough with GTK to tell you specifically where to look next, but this isn't a problem in the Breeze icon theme.
Comment 4 Mors Mortium 2025-05-28 19:10:28 UTC
The problem is GTK rendering this:
```
<rect y="0" x="0" height="22" width="22" id="rect4193" style="opacity:1;fill:none;fill-opacity:1;stroke:none;stroke-width:0.1;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"/>
```
Comment 5 Nate Graham 2025-05-29 14:08:28 UTC
Per https://invent.kde.org/frameworks/breeze-icons/-/merge_requests/473, it deems that this is indeed a GTK 3 bug that was fixed in GTK 4, but we're triggering it due to some unnecessary rectangles in these icons.
Comment 6 Nate Graham 2025-05-29 14:10:51 UTC
Git commit 5d0a6f1e0cbc8c378bd781326564ea2cfbfcea9f by Nate Graham, on behalf of Mors Mortium.
Committed on 29/05/2025 at 14:10.
Pushed by ngraham into branch 'master'.

Removeinvisible rectangles

These were invisible and so completely useless, but they triggered a
bug in GTK 3 that caused them to be rendered anyway and break the icons.
FIXED-IN: 6.15

M  +0    -1    icons/applets/48/weather-clear-night-symbolic.svg
M  +0    -1    icons/applets/48/weather-clear-symbolic.svg
M  +0    -1    icons/applets/48/weather-clear-wind-night-symbolic.svg
M  +0    -1    icons/applets/48/weather-clear-wind-symbolic.svg
M  +0    -1    icons/applets/48/weather-clouds-night-symbolic.svg
M  +0    -1    icons/applets/48/weather-clouds-symbolic.svg
M  +0    -1    icons/applets/48/weather-clouds-wind-night-symbolic.svg
M  +0    -1    icons/applets/48/weather-clouds-wind-symbolic.svg
M  +0    -1    icons/applets/48/weather-few-clouds-night-symbolic.svg
M  +0    -1    icons/applets/48/weather-few-clouds-symbolic.svg
M  +0    -1    icons/applets/48/weather-few-clouds-wind-night-symbolic.svg
M  +0    -1    icons/applets/48/weather-few-clouds-wind-symbolic.svg
M  +0    -1    icons/applets/48/weather-freezing-rain-day-symbolic.svg
M  +0    -1    icons/applets/48/weather-freezing-rain-night-symbolic.svg
M  +0    -1    icons/applets/48/weather-freezing-rain-symbolic.svg
M  +0    -1    icons/applets/48/weather-freezing-scattered-rain-day-symbolic.svg
M  +0    -1    icons/applets/48/weather-freezing-scattered-rain-night-symbolic.svg
M  +0    -1    icons/applets/48/weather-freezing-scattered-rain-storm-day-symbolic.svg
M  +0    -1    icons/applets/48/weather-freezing-scattered-rain-storm-night-symbolic.svg
M  +0    -1    icons/applets/48/weather-freezing-scattered-rain-storm-symbolic.svg
M  +0    -1    icons/applets/48/weather-freezing-scattered-rain-symbolic.svg
M  +0    -1    icons/applets/48/weather-freezing-storm-day-symbolic.svg
M  +0    -1    icons/applets/48/weather-freezing-storm-night-symbolic.svg
M  +0    -1    icons/applets/48/weather-freezing-storm-symbolic.svg
M  +0    -1    icons/applets/48/weather-hail-symbolic.svg
M  +0    -1    icons/applets/48/weather-many-clouds-wind-symbolic.svg
M  +0    -1    icons/applets/48/weather-showers-day-symbolic.svg
M  +0    -1    icons/applets/48/weather-showers-night-symbolic.svg
M  +0    -1    icons/applets/48/weather-showers-scattered-day-symbolic.svg
M  +0    -1    icons/applets/48/weather-showers-scattered-night-symbolic.svg
M  +0    -1    icons/applets/48/weather-showers-scattered-storm-day-symbolic.svg
M  +0    -1    icons/applets/48/weather-showers-scattered-storm-night-symbolic.svg
M  +0    -1    icons/applets/48/weather-showers-scattered-storm-symbolic.svg
M  +0    -1    icons/applets/48/weather-showers-scattered-symbolic.svg
M  +0    -1    icons/applets/48/weather-showers-symbolic.svg
M  +0    -1    icons/applets/48/weather-snow-day-symbolic.svg
M  +0    -1    icons/applets/48/weather-snow-night-symbolic.svg
M  +0    -2    icons/applets/48/weather-snow-rain-symbolic.svg
M  +0    -1    icons/applets/48/weather-snow-scattered-day-symbolic.svg
M  +0    -1    icons/applets/48/weather-snow-scattered-night-symbolic.svg
M  +0    -1    icons/applets/48/weather-snow-scattered-storm-day-symbolic.svg
M  +0    -1    icons/applets/48/weather-snow-scattered-storm-night-symbolic.svg
M  +0    -1    icons/applets/48/weather-snow-scattered-storm-symbolic.svg
M  +0    -1    icons/applets/48/weather-snow-scattered-symbolic.svg
M  +0    -1    icons/applets/48/weather-snow-storm-day-symbolic.svg
M  +0    -1    icons/applets/48/weather-snow-storm-night-symbolic.svg
M  +0    -1    icons/applets/48/weather-snow-storm-symbolic.svg
M  +0    -1    icons/applets/48/weather-snow-symbolic.svg
M  +0    -1    icons/applets/48/weather-storm-day-symbolic.svg
M  +0    -1    icons/applets/48/weather-storm-night-symbolic.svg
M  +0    -1    icons/applets/48/weather-storm-symbolic.svg
M  +0    -7    icons/apps/16/kdeconnect-symbolic.svg
M  +0    -1    icons/apps/22/akonadi-symbolic.svg
M  +0    -1    icons/apps/22/amarok-symbolic.svg
M  +0    -1    icons/apps/22/cantata-symbolic.svg
M  +0    -1    icons/apps/22/kalarm-symbolic.svg
M  +0    -7    icons/apps/22/kget-symbolic.svg
M  +0    -1    icons/apps/22/kgpg-symbolic.svg
M  +0    -7    icons/apps/22/kleopatra-symbolic.svg
M  +0    -1    icons/apps/22/kmail-symbolic.svg
M  +0    -7    icons/apps/22/konversation-symbolic.svg
M  +0    -1    icons/apps/22/kopete-symbolic.svg
M  +0    -1    icons/apps/22/korgac-symbolic.svg
M  +0    -1    icons/apps/22/kruler-symbolic.svg
M  +0    -1    icons/apps/22/ktorrent-symbolic.svg
M  +0    -3    icons/apps/22/kup-symbolic.svg
M  +0    -8    icons/apps/22/vlc-symbolic.svg
M  +0    -1    icons/apps/32/akonadi-symbolic.svg
M  +0    -1    icons/apps/32/amarok-symbolic.svg
M  +0    -1    icons/apps/32/cantata-symbolic.svg
M  +0    -1    icons/apps/32/klipper-symbolic.svg
M  +0    -1    icons/devices/32/input-mouse-battery-symbolic.svg
M  +0    -1    icons/preferences/22/preferences-system-bluetooth-activated-symbolic.svg
M  +0    -1    icons/preferences/32/preferences-system-bluetooth-activated-symbolic.svg
M  +0    -1    icons/preferences/32/preferences-system-bluetooth-battery-symbolic.svg
M  +0    -1    icons/preferences/32/preferences-system-bluetooth-inactive-symbolic.svg
M  +0    -1    icons/status/22/klipper-symbolic.svg
M  +0    -1    icons/status/22/network-bluetooth-inactive-symbolic.svg

https://invent.kde.org/frameworks/breeze-icons/-/commit/5d0a6f1e0cbc8c378bd781326564ea2cfbfcea9f