Making FDO icon theming useful for app developers again
In KDE, we try our best to faithfully implement the FreeDesktop.org (FDO) icon theme specs via our FDO-compatible Breeze icon theme, and our apps which almost exclusively ask for icons from the system's active FDO icon theme.
However it seems we are a dying breed. GNOME has dropped support for icon theming for its apps as well as non-GNOME apps run with their icon theme; Electron apps never supported icon theming in the first place; and all the popular 3rd-party desktop apps I tested recently (GIMP, LibreOffice, Inkscape, Telegram, Blender, Xournal++, TeXStudio, LyX, Geany, Strawberry, qBitrottent, Transmission, QGIS, OpenSCAD) don't support icon theming by default either. Either they have no support for this, or it's disabled by default and opt-in.
Clearly FDO icon theming as currently implemented is not meeting the needs of app developers.
I think a major part of the problem is the lack of assurance that any icon your app may need will actually be present in the icon theme. This is because of several factors:
- The icon naming spec's list of mandatory icons is woefully small, nowhere near what's needed today.
- The process of proposing and adding new mandatory icons to the spec so that you can count on them is too heavyweight and bureaucratic to be attractive to app developers.
- Even if that challenge were overcome, as new mandatory icons are added to the spec, there's no guarantee that arbitrary 3rd-party icon themes will fully comply with it by implementing those new icons.
In practice the only way KDE is able to make icon theming work for our own apps is by adding new icons to our Breeze theme the moment an app needs them, and then hoping that any 3rd-party icon themes the user may be using will either notice this and implement the icons themselves, or else mark Breeze as a fallback theme. I believe other communities like Cinnamon, Budgie, and XFCE do something similar with their own icon themes and FDO-icon-themable apps.
It feels like the only way FDO icon theming can work is if one of the following were true:
- Carrot approach: There's a super duper comprehensive reference theme that has every icon under the sun that 3rd-party icon themes missing some icons can fall back to.
- Stick approach: The spec becomes very strict such that non-compliant themes can't be used, and you're not considered compliant unless you implement 100% of the mandatory icons, such that when new icons are added, you're out of compliance until you add the new icons.
But maybe there are other options too. Let's brainstorm.