Summary: | Contrast for Breeze Dark's Places icons with light foreground clashes | ||
---|---|---|---|
Product: | [Plasma] Breeze | Reporter: | Luke Horwell <code> |
Component: | Icons | Assignee: | visual-design |
Status: | CONFIRMED --- | ||
Severity: | normal | CC: | david.cortes.rivera, kainz.a, nate |
Priority: | NOR | Keywords: | regression, usability |
Version: | 5.23.5 | ||
Target Milestone: | --- | ||
Platform: | Other | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: | |||
Bug Depends on: | |||
Bug Blocks: | 458885 | ||
Attachments: | Comparing 5.87 and 5.90 with Breeze themes |
Description
Luke Horwell
2022-01-09 17:00:36 UTC
I tried looking into this, but I'm stumped. A git bisect between v5.87.0 and v5.88.0 reveals that 1b92cfc450f6ab6b72ed9ef69c052e4624e5a040 ("Remove exact duplicate icons from dark theme") was the first commit to introduce the issue, but it seems like something else is involved. If the change was intended to deduplicate icons from the source and so dark coloured themes use lighter monochrome icon colours (like toolbars, menus), it kind of makes sense - this bug would be about the wrong monochrome colour being used/forced inside a folder icon when dark colour scheme like Breeze Dark is set. Some questions to help understand the situation: - Where's the code that changes the behaviour when a dark colour scheme is selected? - Why would icon previews in the icon picker (32px) show the original icons, but Dolphin renders modified icons? - Why would places icons (32, 48, 64, 96) in /usr/share/icons/{breeze,breeze-dark} be exactly the same? - Can this be disabled (at build, env variable, hidden config file)? Possible guesstimate solutions: - Skip processing places icons over 32px? - Add a checkbox in System Settings' Icons or Colours tab to set icon foreground to dark/light? There is a workaround, thanks to clues in BUG 353819. > Why would places icons (32, 48, 64, 96) in /usr/share/icons/{breeze,breeze-dark} be exactly the same? There's CSS in the icons that look for "current-color-scheme" and recolours them accordingly. Still not sure which component (KIO, KIconThemes?) actually does the processing. Removing this ID from the SVG prevents them from being recoloured. Potentially, further optimisation could deduplicate these further if they are byte-for-byte the same, so Breeze-Dark can fallback to Breeze. > Can this be disabled (at build, env variable, hidden config file)? Not that I could see with toggles, but this can be patched out when building the package: find . -name "*.svg" -exec sed -i 's/current\-color\-scheme//g' {} + Unrelated: I'm also patching out the 96 icons locally, as they've become a tad bit thinner since 5.87 that I'm struggling to see some of these icons (e.g. downloads, templates) at a distance. (4K display, X11 user here) find . -type d -name 96 -exec rm -vr {} + *** Bug 466912 has been marked as a duplicate of this bug. *** My latest crude workaround is throwing together a mix-and-match of 5.87 and 6.0.x icon theme. Taking the latest icon developments from 6.0.x but the static icons from 5.87 with some search & replace hacks. This works better for the Breeze Dark theme. https://github.com/lah7/breeze-dark-icons-static-mix It also "fixed" BUG 482648 too, where symbolic icons were not working below ~32 pixels, but it's not the solution of course. --- While investigating, some of the earlier comments are outdated. - The previously suggested CSS class removal no longer works after 6.3.0, for some reason. - KIconThemes is doing the recolouring [src/kiconcolors.cpp] - CSS "ColorScheme-Text" maps to "highlightedText" I guess, that's the problem - it currently assumes text colour is OK if the accent colour is used as a background. To reproduce, use "Breeze Dark" window theme with a white accent colour, you'd expect a darker inner icon for places folders. Likewise, try a black accent colour under "Breeze Light". In both cases, the places icons are indistinguishable. In terms of fixing this, I'd suggest: - A new CSS variable applies a colour tint based on the accent colour. This can be used for the 'inner icon' inside places icons. The hex code can be checked to determine this. E.g. For a bright accent colour, go darker. If it's a dark accent colour, go lighter. For Breeze' default blue, it would go darker (#366681). |