Why do Kirigami (?) apps not have the Oxygen gradient old KDE apps have?

I am a user of the Oxygen theme from KDE 4 and really enjoy the beauty of the gradient the window decoration has, shown below


Why do newer apps that use design systems like Kirigami not have this same gradient?

Is it possible for these newer apps to pick up this design?

2 Likes

We used to have gradients. We used to have 3D. Then it all went flat because that was the new style. I hate it.

1 Like

Someone who gets it. I love all the 3d textures and beauty. It adds life to computing. I also miss the 3d-looking events that were in KOrganizer in KDE4

1 Like

To make this happen, the qqc2-desktop-style repo–which exists to apply the application style to QML-based apps–would need to be beefed up in a variety of ways. It’s technically possible, but hasn’t been a priority thus far.

2 Likes

Fair enough! I definitely would not say it is a critical issue, considering a small amount of people even use Oxygen, it would just make the experience more cohesive. Thanks for the response!

Nate, would it be easier to begin adding gradients and such to Breeze?

So to be clear about what’s going on here:

QStyles such as Breeze and Oxygen control all styling for QtWidgets-based apps.

QML apps do not automatically inherit this styling. Instead, they get styled via a separate theming system built into Qt: QtQuickControls styles.

KDE does something clever: we developed a QtQuickControls style (creatively named qqc2-desktop-style) that uses the QStyle to render the controls for QML apps! This way, we can make styling changes in one place (a QStyle) and at least in theory, the only time we’ll ever need to touch qqc2-desktop-style is when we find bugs in how it renders the QStyle-provides graphics, or to add styling for new controls that don’t exist in the QStyle, such as switches.

In practice, it’s not that simple. Some things in qqc2-desktop-style are still hardcoded rather than pulling from the QStyle, and the background is one of them. It’s for this reason that QML apps styled in this way won’t get the gradient background from the Oxygen QStyle or the blurry transparent background when using some KVantum themes (KVantum is also a QStyle–albeit one that itself internally implements its own theming engine).

I’m a bit fuzzy on why it’s done this way, but I have a vague recollection that there are performance considerations. You see, there are some downsides to our approach: by using the QStyle as the rendering backend, our style is heavier than a more “native” QtQuickControls style that simply draws controls using primitives like rectangles, text objects, and shadow effects. These primitives are heavily optimized in QtQuick and make good use of GPU rendering to be pretty as well as light. So as long as your GPU isn’t a potato, a more native style is likely to be more performant. And as I understand it, there’s something about getting the whole window background from the QStyle that significantly impacts performance.

But this is the point where I admit my understanding may not be totally accurate, so someone else like @ahiemstra, @mart, or @nicolasfella may be able to tell you more or correct any mistakes in my explanation.

2 Likes