Bug 484639

Summary: Fallback to Breeze ignored by KIconLoader because of wrong global initialization order
Product: [Frameworks and Libraries] frameworks-kiconthemes Reporter: Grósz Dániel <groszdanielpub>
Component: generalAssignee: Christoph Feck <cfeck>
Status: RESOLVED FIXED    
Severity: wishlist CC: ad.liu.jin, akontsevich, brunopitrus, bugseforuns, cdennett, christoph, danielbermond, david.cortes.rivera, david.decos, firew4lker, Fritz.Martin99, greg, jan.pavlicek, KDE, kde, kdelibs-bugs, kdudka, lee295012, loic.yhuel, nate, nuno, piotrekd, thesourcehim
Priority: NOR    
Version: 6.2.0   
Target Milestone: ---   
Platform: openSUSE   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:

Description Grósz Dániel 2024-03-28 01:31:28 UTC
There have been bug reports of missing icons in Plasma 6 with the Oxygen theme: Bug 481402, Bug 483496. (IIRC there were a few missing icons in Plasma 5 as well, but less prominent ones.) Besides, of course, providing those icons in Oxygen style, a (partial) solution would be to fall back to a style that provides them, such as Breeze.

On Bug 451463, Nate commented:
"Ultimately it's up to icon themes to set a sane fallback.
However I do see something we could do to improve the situation, given the world we live in where there are 527603 crappy incomplete icon themes that don't set their fallback to something sane (typically Breeze or Adwaita, which can both be considered to be more or less complete)."

Oxygen is a nice but incomplete icon theme, and it currently only has hicolor as its fallback theme. Please set its fallback to something sane, such as Breeze (perhaps hicolor first, then breeze).

(Bug 451463 asked to use Breeze as a fallback even when it's not set by the icon theme. That would let people use old icon themes that may have become unmaintained before Breeze or Adwaita even existed, and still not have missing icons. However, since Oxygen is still provided by KDE, its fallback should be changed.)

SOFTWARE/OS VERSIONS
Operating System: openSUSE Tumbleweed 20240321
KDE Plasma Version: 6.0.2
KDE Frameworks Version: 6.0.0
Qt Version: 6.6.2
Kernel Version: 6.8.1-1-default (64-bit)
Graphics Platform: X11
Comment 1 Jin Liu 2024-03-28 04:38:22 UTC
I think, as Nate said, Plasma should implicitly fallbacks to Breeze when the icon theme "inherits=" setting doesn't find an icon.
Comment 2 Jin Liu 2024-03-28 09:00:15 UTC
This is caused by
https://invent.kde.org/frameworks/kiconthemes/-/blob/master/src/kicontheme.cpp?ref_type=heads#L96
initialized after:
https://invent.kde.org/frameworks/kiconthemes/-/blob/master/src/kiconloader.cpp?ref_type=heads#L1471
So the icon loader doesn't use Breeze as the ultimate fallback.

Oxygen (and other themes) doesn't need to explicitly fallback to Breeze, if the above bug is fixed.
Comment 3 Jin Liu 2024-03-28 09:01:47 UTC
*** Bug 481402 has been marked as a duplicate of this bug. ***
Comment 4 Jin Liu 2024-03-28 09:02:43 UTC
*** Bug 483496 has been marked as a duplicate of this bug. ***
Comment 5 Jin Liu 2024-03-28 09:03:14 UTC
*** Bug 451463 has been marked as a duplicate of this bug. ***
Comment 6 Jin Liu 2024-03-28 09:04:57 UTC
Also note that `setBreezeFallback` doesn't handle Breeze-twilight correctly.
Comment 7 Grósz Dániel 2024-03-28 15:14:32 UTC
Well, I interpreted Nate as saying that, while it might make sense to use Breeze a fallback even if it's not explicitly specified as an inherited theme, it's also desirable for every theme to explicitly specify a presumably complete theme (Breeze, Adwaita) as an inherited theme. Perhaps that would also help ensure that every icon works when using Oxygen icons in non-KDE applications running under KDE, or even in other DEs? So I thought it would make sense to have a separate report for the request to add a fallback (besides hicolor) to Oxygen from the other request to use Breeze as a fallback even if it isn't specified. But perhaps I'm not familiar with the details, so perhaps I'm wrong about this and I leave it to you to decide.
Comment 8 Piotr Doroszewski 2024-04-26 16:04:27 UTC
Still exists in  6.0.3.
Comment 9 Loïc Yhuel 2024-05-07 18:24:54 UTC
(In reply to Jin Liu from comment #1)
> I think, as Nate said, Plasma should implicitly fallbacks to Breeze when the
> icon theme "inherits=" setting doesn't find an icon.
Ideally, it should depend on whether the plasma style is dark or not, since the breeze icons are almost invisible on black backgrounds.
So with Oxygen and Breeze Dark, it should fallback to breeze-dark.
Comment 10 Jin Liu 2024-05-29 04:08:41 UTC
(In reply to Grósz Dániel from comment #7)
> Well, I interpreted Nate as saying that, while it might make sense to use
> Breeze a fallback even if it's not explicitly specified as an inherited
> theme, it's also desirable for every theme to explicitly specify a
> presumably complete theme (Breeze, Adwaita) as an inherited theme.

It might not be desirable, as you probably want a 3rd-party icon theme
to fallback to Breeze in KDE, and Adwaita in GNOME. I don't see how that
would work with "inherits=".
Comment 11 Aleksey Kontsevich 2024-07-03 16:09:34 UTC
Have same bug in Plasma 6.1.2 openSUSE Tumbleweed. Please fix!
Comment 12 Aleksey Kontsevich 2024-07-03 16:18:16 UTC
I think it should not replace the Oxygen theme icons with the Breeze ones. For example, the Oxygen theme has icons for Bluetooth, alerts, and the media player. Therefore, it's important to keep these icons. However, in Plasma 6, instead of these icons, there are just blank pages icons or Breeze icon variant in System tray settings dialog.
Comment 13 Piotr Doroszewski 2024-07-03 16:31:44 UTC
(In reply to Aleksey Kontsevich from comment #12)
> I think it should not replace the Oxygen theme icons with the Breeze ones.
> For example, the Oxygen theme has icons for Bluetooth, alerts, and the media
> player. Therefore, it's important to keep these icons. However, in Plasma 6,
> instead of these icons, there are just blank pages icons or Breeze icon
> variant in System tray settings dialog.

Some icons are named differently in Oxygen than in Breeze, though. On my machine:

> $ fd bluetooth oxygen
> oxygen/base/128x128/apps/preferences-system-bluetooth-inactive.png
> oxygen/base/128x128/apps/preferences-system-bluetooth.png
> oxygen/base/16x16/apps/preferences-system-bluetooth-inactive.png
> oxygen/base/16x16/apps/preferences-system-bluetooth.png
> oxygen/base/22x22/apps/preferences-system-bluetooth-inactive.png
> oxygen/base/22x22/apps/preferences-system-bluetooth.png
> oxygen/base/256x256/apps/preferences-system-bluetooth-inactive.png
> oxygen/base/256x256/apps/preferences-system-bluetooth.png
> oxygen/base/32x32/apps/preferences-system-bluetooth-inactive.png
> oxygen/base/32x32/apps/preferences-system-bluetooth.png
> oxygen/base/48x48/apps/preferences-system-bluetooth-inactive.png
> oxygen/base/48x48/apps/preferences-system-bluetooth.png
> oxygen/base/64x64/apps/preferences-system-bluetooth-inactive.png
> oxygen/base/64x64/apps/preferences-system-bluetooth.png
> oxygen/base/scalable/apps/hidef/preferences-system-bluetooth.svgz
> oxygen/base/scalable/apps/preferences-system-bluetooth-inactive.svgz
> oxygen/base/scalable/apps/preferences-system-bluetooth.svgz
> $ fd bluetooth breeze
> breeze/apps/16/preferences-system-bluetooth-symbolic.svg
> breeze/devices/16/network-bluetooth-symbolic.svg
> breeze/devices/16/network-bluetooth.svg
> breeze/devices/16/network-wireless-bluetooth-symbolic.svg
> breeze/devices/22/network-bluetooth-symbolic.svg
> breeze/devices/22/network-bluetooth.svg
> breeze/devices/22/network-wireless-bluetooth-symbolic.svg
> breeze/preferences/22/preferences-system-bluetooth-activated-symbolic.svg
> breeze/preferences/22/preferences-system-bluetooth-inactive-symbolic.svg
> breeze/preferences/22/preferences-system-bluetooth-symbolic.svg
> breeze/preferences/22/preferences-system-bluetooth.svg
> breeze/preferences/32/preferences-system-bluetooth-activated-symbolic.svg
> breeze/preferences/32/preferences-system-bluetooth-battery-symbolic.svg
> breeze/preferences/32/preferences-system-bluetooth-inactive-symbolic.svg
> breeze/preferences/32/preferences-system-bluetooth-symbolic.svg
> breeze/preferences/32/preferences-system-bluetooth.svg
> breeze/status/22/network-bluetooth-activated-locked-symbolic.svg
> breeze/status/22/network-bluetooth-activated-locked.svg
> breeze/status/22/network-bluetooth-activated-symbolic.svg
> breeze/status/22/network-bluetooth-activated.svg
> breeze/status/22/network-bluetooth-inactive-symbolic.svg
> breeze/status/22/network-bluetooth-symbolic.svg
> breeze/status/22/network-bluetooth.svg
> breeze/status/22/network-wireless-bluetooth-symbolic.svg

I filed a separate bug 486752 about the missing textures in the Oxygen category of Bugzilla, but it's seen no response.
Comment 14 Piotr Doroszewski 2024-07-03 16:33:11 UTC
s/textures/icons/, I spent too much time with game modding recently.
Comment 15 Aleksey Kontsevich 2024-07-03 18:15:41 UTC
(In reply to Piotr Doroszewski from comment #13)
> (In reply to Aleksey Kontsevich from comment #12)
> > I think it should not replace the Oxygen theme icons with the Breeze ones.
> > For example, the Oxygen theme has icons for Bluetooth, alerts, and the media
> > player. Therefore, it's important to keep these icons. However, in Plasma 6,
> > instead of these icons, there are just blank pages icons or Breeze icon
> > variant in System tray settings dialog.
> 
> Some icons are named differently in Oxygen than in Breeze, though. On my
> machine:

This is the problem!!! Is it possible rename and justify them?
Comment 16 firewalker 2024-08-10 08:22:38 UTC
Is this bug so difficult to fix? How can I help?

oxygen 6.1.4-1 (plasma)
oxygen-icons 1:6.0.0-2
oxygen-icons-svg 1:6.0.0-2
Comment 17 Aleksey Kontsevich 2024-10-08 19:56:15 UTC
Still the problem in 6.2
Comment 18 pinheiro 2024-10-12 10:40:10 UTC
(In reply to Aleksey Kontsevich from comment #17)
> Still the problem in 6.2

I have made most of these icons, the ones missing are the preferences ones thst should not be visible AFIK on the tray
Comment 19 pinheiro 2024-10-12 10:47:47 UTC
(In reply to pinheiro from comment #18)
> (In reply to Aleksey Kontsevich from comment #17)
> > Still the problem in 6.2
> 
> I have made most of these icons, the ones missing are the preferences ones
> thst should not be visible AFIK on the tray

eg..I have
....../Oxygen6/oxygen-icons/applets/22x22/network-bluetooth-symbolic.svg
      /Oxygen6/oxygen-icons/applets/22x22/network-bluetooth-inactive-symbolic.svg
      /Oxygen6/oxygen-icons/applets/22x22/network-bluetooth-activated-symbolic.svg
      /Oxygen6/oxygen-icons/applets/22x22/network-bluetooth-activated-locked-symbolic.svg
Comment 20 David de Cos 2024-10-25 19:23:40 UTC
I've just installed oxygen-icons-6.1.0 and it fixed this problem for me. No more missing icons, and my panel looks as I like it.
Nevertheless, I'm not sure if the fallback issue was properly solved or Oxygen simply got some new icons that were missing, so I'm not daring to say the bug itself is fixed.
Comment 21 pinheiro 2024-10-25 20:03:15 UTC
No, it was fixed, on top of missing icons being included it now flashback into breeze if missing...
Comment 22 pinheiro 2024-10-25 20:05:30 UTC
Fallback not flashback;)
Comment 23 Aleksey Kontsevich 2024-10-25 20:06:35 UTC
(In reply to pinheiro from comment #21)
> No, it was fixed, on top of missing icons being included it now flashback
> into breeze if missing...

When it was fixed? Until Oxygen 6.1 there were blank pages icons - no breeze substitution.
Comment 24 pinheiro 2024-10-25 20:09:58 UTC
Recently I made the change to the index.theme file as a reply to a different bug...
Then I realized that we KDE did not made a  new tar for distros to ship... And I had done some improvements in the previous months since 6.0
Comment 25 Grósz Dániel 2024-10-25 20:57:48 UTC
(In reply to pinheiro from comment #24)
> Recently I made the change to the index.theme file as a reply to a different
> bug...
> Then I realized that we KDE did not made a  new tar for distros to ship...
> And I had done some improvements in the previous months since 6.0

This bug as I originally reported it is fixed if you added a fallback to Breeze to Oxygen.

But after I reported it, Jin Liu wrote in Comment 2 that the proper solution would be for KDE's icon loader to fall back to Breeze even if it's not specified as a fallback theme if neither the original theme nor any specified fallback theme has an icon, and it's a bug that this currently isn't the case (this was reported earlier as Bug 451463); he also changed the report's title accordingly. In Comment 9 and Comment 10 it has even been argued that naming Breeze as a fallback theme to Oxygen may be undesirable, the automatic fallback loading would be the preferable solution if that bug was fixed. Should we reopen either this bug or Bug 451463 (which was the original report for the fallback bug, but was closed as a duplicate of this one after this one was turned into tracking that one)?
Comment 26 pinheiro 2024-10-25 21:10:33 UTC
No idea feal free to change back the index.theme
Comment 27 Grósz Dániel 2024-10-25 21:21:54 UTC
(In reply to pinheiro from comment #26)
> No idea feal free to change back the index.theme

I'm not involved in the development so I don't know what's the right way to proceed, but Oxygen's fallback shouldn't be changed back at least until the automatic fallback bug is fixed. I'll reopen Bug 451463.
Comment 28 pinheiro 2024-10-25 21:58:05 UTC
At that time the person that fixes it please notify or fix oxygen please ;)