Bug 502599

Summary: Outline intensity levels have inverse effect when using Breeze Classic color scheme
Product: [Plasma] Breeze Reporter: Jan Rathmann <jan.rathmann>
Component: window decorationAssignee: Plasma Bugs List <plasma-bugs-null>
Status: CONFIRMED ---    
Severity: minor CC: akselmo, kwin-bugs-null, nate, uhhadd
Priority: NOR    
Version First Reported In: master   
Target Milestone: ---   
Platform: Neon   
OS: Linux   
Latest Commit: Version Fixed/Implemented In:
Sentry Crash Report:
Attachments: Screenshots of outline intensity for Breeze Classic

Description Jan Rathmann 2025-04-09 09:41:45 UTC
SUMMARY
If using the Breeze Classic color scheme, setting outline intensity levels has an inverse effect to the actual outline intensity.

STEPS TO REPRODUCE
1. Go to Systemsettings -> Colors & Designs -> Colors, choose Breeze Classic as color scheme.
2. Go to Systemsettings -> Colors & Designs -> Window Decoration, click on Edit-button of the breeze decoration
3. On the "Shadows and outline" tab, select "low" as outline intensity level, apply it.

OBSERVED RESULT
The outline becomes stronger compared to default level "medium".
(With the other levels exept of "off", the effect is analog, effectively the order of the intensity levels is inverted.)

EXPECTED RESULT
The outline should become weaker when selecting "low" instead of "medium".

SOFTWARE/OS VERSIONS
Reproduced with:
* current Neon Unstable live session
* Kubuntu 25.04 with Plasma 6.3.4, Frameworks 6.12.0, Qt 6.8.3

ADDITIONAL INFORMATION
Seems to be specific to  Breeze Classic, the outline intensity levels work as expected with Breeze Light and Breeze Dark.
Comment 1 Nate Graham 2025-04-09 18:48:17 UTC
Can reproduce.
Comment 2 Akseli Lahtinen 2025-04-10 13:19:42 UTC
I don't think anything is really broken here, it's just how the colors work. It's just way more visible with the colorschemes that have different color titlebar.

When debugging the outline color, this is how it works:

We take window frame color, then the text color. Then we mix those two together with the bias value, which is the "Low, medium, high, maximum" setting.

Low bias is 0.10.
Medium bias is 0.20.

With Breeze Classic, the calculation happens with these colors, when using Low bias:
windowColor "#eff0f1", textColor "#232627", bias "0.10" -> outlineColor "#dbdcdd"

With Breeze Light, this happens:
windowColor "#eff0f1", textColor "#232629", bias "0.10" -> outlineColor "#dbdcdd"

They end up having exact same values. Only difference is the text color (which is barely anything)

Same with Medium bias:

Breeze classic:
windowColor "#eff0f1", textColor "#232627", bias "0.20" -> outlineColor "#c6c8c9"

Breeze light: 
windowColor "#eff0f1", textColor "#232629", bias "0.20" -> outlineColor "#c6c8c9"

Again same end result.

The bias indicates how much of the colors we mix. 0.2 means we use more of the windowColor than the textColor for the outline. So on 0.1, its mostly white color.

What is the color you expect to see? Calling it "intensity" might have been wrong here, and maybe we should rework this to use different kind of blending technique, which is more about contrast and less about blending window and text color together.
Comment 3 Jan Rathmann 2025-04-11 11:31:20 UTC
Created attachment 180170 [details]
Screenshots of outline intensity for Breeze Classic

Akseli, thanks for the detailed explanation of the algorithm behind the outline color; it is more complex than I had realized before.

I have compiled a series of screenshots to illustrate the effect that the different outline intensity levels have for:
* bright window content on bright background (Kate on Kate)
* bright window content on dark background (Kate on Konsole)
* dark window content on bright background (Konsole on Kate)
* dark window content on dark background (Konsole on Konsole)

What I noticed:
1. The actual outline color is indeed independent from window content or background: For Breeze Classic, the outline intensity levels have the follow effect: lower means brighter, higher means darker.
2. The visual effect of a perceived(!) bright outline, especially on dark background or window decoration is visually domimant for me compared to a perceived(!) dark outline on dark on bright background. And on Breeze Classic, there is always an element with dark background on any window: the window decoration.

I think the second point is what makes me perceive the outline on Breeze Classic on low intensity settings feel stronger than on higher intensity settings.

Not sure what would help here – use the color of the window decoration instead of the window/ text color to calculate if the outline should go from dark to bright or from bright to dark? Or some heuristic to detect a dark window decoration color on a light color scheme?
Comment 4 Akseli Lahtinen 2025-04-11 13:58:59 UTC
Thanks for the screenshots. It does indeed seem that the perceived value is not matching the technically correct value, so I get your point and I do agree that this is a bug.

In ideal world we would have separator color that users can set per colorscheme, so we wouldn't need this intensity setting in the first place.
Comment 5 Akseli Lahtinen 2025-11-17 13:40:43 UTC
Just as an update, this will likely have to be resolved in Union theming engine. I will set this as "minor" for now.