luisbocanegra / kde-material-you-colors

Automatic color scheme generator from your wallpaper for KDE Plasma powered by Material You
https://store.kde.org/p/2136963
GNU General Public License v3.0
393 stars 6 forks source link

Titlebars and other elements are barely tinted in v1.9.1 #208

Open Loklann opened 4 months ago

Loklann commented 4 months ago

Describe the bug Just updated from 1.8.0 to 1.9.1 through pip, and noticed a very big difference in the colour amount on some UI elements, most noticeably the titlebars. They are much less tinted than before, resulting in a less colourful style. No settings seem to affect this (not even the different palette combinations), only bumping up the Colourfulness can make a difference, but they still remain heavily under-tinted compared to some other elements. In most cases, it also seems like the window's colours is barely tinted (see screenshots for comparison).

To Reproduce Steps to reproduce the behaviour: Install and use v1.9.1 , use with Klassy or Breeze (Window Decorations + Application Style in both cases).

Expected behavior Windows should be properly tinted with the colour palette extracted from wallpaper, as per the Material-You Design Guidelines (like what v1.8.0 achieved perfectly) .

Screenshots

  1. Dolphin on Klassy (Application Style + Window Decorations) and kde-material-you-colors v1.8.0 Screenshot_20240522_182159
  2. Dolphin on Klassy (Application Style + Window Decorations) and kde-material-you-colors v1.9.1 Screenshot_20240522_182349

Desktop (please complete the following information):

Additional context Same problem on my Arch Linux VM (installed throught the AUR via yay). Here's some logs from running kde-material-you-colors (v1.9.1 ; Fedora 40) in Konsole (probably not relevant, but hey), this doesn't show up in my Arch VM :

[E] konsole_utils: reload_profile: [Errno 2] No such file or directory: 'qdbus6'
Traceback (most recent call last):
  File "/home/lachlancraig/.local/share/pipx/venvs/kde-material-you-colors/lib64/python3.12/site-packages/kde_material_you_colors/utils/konsole_utils.py", line 184, in reload_profile
    result = subprocess.run(
             ^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/subprocess.py", line 548, in run
    with Popen(*popenargs, **kwargs) as process:
         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib64/python3.12/subprocess.py", line 1026, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "/usr/lib64/python3.12/subprocess.py", line 1955, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'qdbus6'
luisbocanegra commented 4 months ago

In 1.8.0 I was using a version of material you library that didn't have surface color variants, which are used to define the level of emphasis of the UI. So what I ended doing was to blend the background against the accent color based purely in my own criteria.

On 1.9.0 I removed most of these colors (pywal/konsole text which is still modified to have good contrast) and replaced the elements that used them with the surface variants I felt matched the better.

The downside is that yes they are a lot less colorful, but can definitely be improved, after all we aren't forced to stick exactly to Material You guidelines, specially because it's not possible to make a 1:1 copy due to the Plasma colorscheme limitations and the fact that desktop applications have a lot more things on screen than the average Android/Web app.

image

Screenshot_20240522_130024

Screenshot_20240522_130132

Loklann commented 4 months ago

I see, this decision 100% makes sense and I can definitely see the colours are more coherent / cohesive overall. Perhaps yet another setting could be added, this time controlling the overall level of tint in the whole colour scheme. ex: if some element is 15% tinted and another 25% tinted, you could add a slider and bump the tint level of the entire colour scheme by 15%, bringing those two elements to (respectively, 30% and 40%). You could also explicit ratios of tint for each element in the colour scheme, which would remain identical even if the overall tint level was changed (if you don't push it to extremes). Or even, since I see you can control the Klassy titlebar opacity, control its tint level ? And last suggestion, maybe just provide the older (and less accurate) backend in newer packages as a toggle ? For me, the most striking example is the almost complete lack of color in the Dolphin sidebar in the 2nd screenshot I posted, it looks closer to the original Breeze colour scheme since it's really under-tinted. Anyway, your work is very impressive, and I'll try to see what things I can bring to it once I've got more time to get through your code.

luisbocanegra commented 4 months ago

Changed the header surface variant and with colorfulness all the way up this is the result.

header_surfaceContainer Screenshot_20240620_194929

Loklann commented 3 months ago

Looks great! It seems to also remove incoherences like this, where there is no transition/ no link between colors with certain window border styles/thicknesses : Screenshot_20240622_201529

Although, I also notice you've removed the tint for text and icons ?

1.9.1 : Screenshot_20240622_202053

1.9.3 : Screenshot_20240622_202139

I thought tinting those was a good idea and made everything come together, although it's not accurate to MD3.

luisbocanegra commented 3 months ago

Although, I also notice you've removed the tint for text and icons ?

1.9.1 : Screenshot_20240622_202053

1.9.3 : Screenshot_20240622_202139

I thought tinting those was a good idea and made everything come together, although it's not accurate to MD3.

I also like it, will bring it back as an extra checkbox under colorfulness

Loklann commented 3 months ago

I also like it, will bring it back as an extra checkbox under colorfulness

Great! Also, I wonder, do you have alpha-transparency control over the colors generatd ?

luisbocanegra commented 3 months ago

Currently the generated colors are converted from RGBA to hexadecimal format (RGB). On the places where transparency is applied I either make use of alpha property or add alpha channel to these colors. It's a mess because it's been like this basically since I started it and didn't bother me enough to change it. I have thought of switching all my color logic to RGBA, make use of it to generate schemes with alpha (where possible) and probably keep storing the output json in hex RGB. But haven't had the time/motivation to do that as I am pretty sure will require a substantial cleanup/rewrite.

Loklann commented 3 months ago

Currently the generated colors are converted from RGBA to hexadecimal format (RGB). On the places where transparency is applied I either make use of alpha property or add alpha channel to these colors. It's a mess because it's been like this basically since I started it and didn't bother me enough to change it. I have thought of switching all my color logic to RGBA, make use of it to generate schemes with alpha (where possible) and probably keep storing the output json in hex RGB. But haven't had the time/motivation to do that as I am pretty sure will require a substantial cleanup/rewrite.

I see, I just thought about transparency because it could do for a cool effect along with the Force Blur kwin effect. Imagine Qt Apps following the MY Breeze colour scheme (like Dolphin), with the same transparency as the panel : it would create some good looking coherency I think. Of course, the amount of work you say this would require is absolutely not justifiable just for this.