Today I want to discuss in detail our plans for icon theming in Plasma 6. It will be rather technical, but may be of interest if you’re a user, developer, or theme author who wants to know what (if anything) you’ll have to do differently for Plasma 6.
Let’s start by briefly reviewing the way FreeDesktop-compatible icon themes work. Icons in icon themes are named with standardized names, like edit-copy. A list of standard names can be found here. When an app wants the icon for a “Copy” action, it uses the API of its toolkit to ask for a themed icon named edit-copy. In Qt, you use QIcon::fromTheme(). If an icon isn’t found by its name, the implementation is required to chop off the last word and try again. So if an app asks for edit-copy-path and an icon with that name isn’t found in the icon theme, it will look for edit-copy and return that instead. Icons can also come in multiple sizes, so that each icon can be optimized for being displayed at different sizes. There’s more to it than that, but it’s enough for now.
Over time, icon themes started doing something interesting: they changed the visual styling between sizes! For example in many icon themes, the symbolic monochrome style is used for icons’ 16px and 22/24px versions, and a full-color style is used for the 32px and larger versions. Breeze is one such icon theme. For example:

Now we have a problem. What if an app developer wants to display an icon at 32px size, and they want it to be symbolic even if if the theme has both symbolic and full-color versions of the same icon? There is actually no way of expressing this preference.
This was a common issue with icons in a Plasma Panel, which has a variable thickness. So when you were using the Breeze icon theme, any Panel widgets that asked for an icon present in the icon theme might become colorful if the panel was thicker than 32px (excluding padding). Some icons also only had full-color versions, and others only had symbolic versions, so the result was a jumble of visual styles on your Plasma Panel.
The old solution
Because this was primarily a problem in Plasma, in the past we solved it by shipping icons inside the Plasma style that overrode the icons in the system-wide icon theme. The Plasma-specific icons could be always symbolic at all sizes. Unfortunately there were many drawbacks:
- The style of icons in the Plasma style might be different from the style of icons you chose for your System-wide icon theme, making unified theming impossible unless you also applied a matching icon theme made by the author of the Plasma theme.
- Plasma themes often had only a few icons in them, meaning that most icons in Plasma respected your system icon theme, but some didn’t, and which ones didn’t was dependent on what Plasma theme you were using and how many icons it included. In practice it felt totally random.
- Even when developers offered matching icon and Plasma themes, it was an easily-forgotten chore to remember to update the same icons in both places, causing them to get out of sync.
- This solution required the use of different icon loading code between apps and Plasma, with subtly different behaviors, features, bugs, and performance characteristics–not to mention twice the maintenance.
- Apps encounter the same issue, and this Plasma-specific solution doesn’t work for them.
For these reasons, we wanted to move away from this system in Plasma 6.
The new solution
For Plasma 6, icons in the Plasma theme will no longer be used even if they’re present. All icons in Plasma now come from the system-wide icon theme.
So how do we solve the above issue? Well, remember how the system falls back to an icon with a simpler name when it’s asked for an icon with a more complex name that isn’t found? The GNOME folks have used this feature to do something clever: they appended the -symbolic suffix to the end of their symbolic icons. Then when an app asks for, say, media-optical-audio-symbolic, it gets the symbolic version of the icon even if it’s being displayed at a large size such that otherwise it would get the full-color one.
For Plasma 6 we have adopted this convention as well for our Breeze icon theme. This isn’t an official part of the icon theme spec, but now that both GNOME and KDE do it, hopefully it shouldn’t be that hard to amend the spec to include it.
What it means for users
In Plasma 6, all icons in both your apps and Plasma will come from your icon theme. If you want your icons to look different, use a different icon theme.
What it means for app and Plasma developers
Anywhere in your app where you want the user to see a symbolic icon if the icon theme has one, append -symbolic to the end of the name of the icon that your app asks for. So yes, you’ll end up with a lot of git diffs like this:

Due to the name fallback behavior, this is a fully backwards-compatible and harmless change. So it’s not urgent to do this. But if you don’t, sometimes your users will see a full-color icon even though a symbolic one that you might prefer they see is available. So I encourage it!
What it means for icon theme authors
If your icon theme only has symbolic icons, or only has full-color icons, you don’t need to do anything.
If your theme has both symbolic icons and full-color icons, but there aren’t any icons that use different styles at different sizes, you don’t need to do anything. However do consider adding symbolic versions of your full-color icons that might get used on buttons, menu items, system tray items, and other places where people commonly expect to see symbolic icons. The filenames of the symbolic versions should end with the -symbolic suffix.
If your icon theme has any icons with symbolic versions at some sizes, and full-color versions at other sizes, you should create symlinks that end with the -symbolic suffix and point to the symbolic versions. Here’s an example of what we do in Breeze icons:

What it means for Plasma style authors
Don’t include icons in your Plasma 6 styles; they won’t be used. If you want your Plasma style to be accompanied by a distinctive matching icon style, bundle it in a Global Theme that also specifies the icon theme matching its style.
In conclusion
Nah, no conclusion needed. That’s all for today, folks!










