Hi David,
thanks for the insight!
The program would be ideal. However, it depends on KDE libraries. If an 
application links to KDE anyway, it can simply use the KDE platform theme.
Users of QKdeTheme are e.g. applications that don't link to KDE, because they 
need to run on Gnome environments as well.
If we wanted to propagate palettes to QKdeTheme, we would have to read them 
directly from settings without having to link to KDE.
Cheers
Axel
________________________________
From: David Redondo <da...@david-redondo.de>
Sent: Tuesday, 11 March 2025 09:39
To: kde-devel@kde.org <kde-devel@kde.org>
Cc: Axel Spoerl <axel.spo...@qt.io>
Subject: Re: Re: Programmatic color scheme change in QKdeTheme

[You don't often get email from da...@david-redondo.de. Learn why this is 
important at https://aka.ms/LearnAboutSenderIdentification ]

Am Montag, 10. März 2025, 19:24 schrieb Axel Spoerl:
> Hi David,
>
> I just did some debugging to find out, how KDE Palettes are promoted to the 
> QKdeTheme.
> The blunt answer is: They don't, and they have never been.
>
> They were probably meant to be promoted at some point, because QKdeTheme 
> implements an array of QPalette pointers (size == NPalettes == 17).
> So for each palette type, a new QPalette could be constructed from a KDE 
> Palette. But that's not happening. The first record of the array is populated 
> with default constructed QPalette, which is a fusion palette.
> All other records are initialized with nullptr and they remain like that 
> throughout the life time of the QGuiApplication.
>
> QKdeTheme just implements font handling. Color wise, QGuiApplications won't 
> blend in with KDE palettes. They just stick with a default fusion palette.
>
> That said: I think there's nothing needed right now. But we may want to pimp 
> up QKdeTheme.
> The patch I mentioned factors it out from qgenericunixthemes.cpp. So 
> enhancing the class will become a little easier.
>

Maybe a reason that it doesn't do that much was that Plasma has its own QPT,
so there was never enough pressure to make it better since in the most cases an
application would not use QKDETheme except if it shipped its own Qt or
something similar.

I've written  very small program that prints the resulting QPalette from color
schemes. The output for BreezeLight and BreezeDark is as follows:

/usr/share/color-schemes/BreezeLight.colors
QPalette(resolve=0x7ffdffffefffff7f,"WindowText:[Active:#ff232629,Disabled:#ffa0a1a3,Inactive:#ff232629],Button:[Active:#fffcfcfc,Disabled:#fff0f0f0,Inactive:#fffcfcfc],Light:[Active:#ffffffff,Disabled:#ffffffff,Inactive:#ffffffff],Midlight:[Active:#fff6f7f7,Disabled:#ffebedee,Inactive:#fff6f7f7],Dark:[Active:#ff888e93,Disabled:#ff82878c,Inactive:#ff888e93],Mid:[Active:#ffc4c8cc,Disabled:#ffbbc0c5,Inactive:#ffc4c8cc],Text:[Active:#ff232629,Disabled:#ffaaabac,Inactive:#ff232629],ButtonText:[Active:#ff232629,Disabled:#ffa8a9aa,Inactive:#ff232629],Base:[Active:#ffffffff,Disabled:#fff3f3f3,Inactive:#ffffffff],Window:[Active:#ffeff0f1,Disabled:#ffe3e5e7,Inactive:#ffeff0f1],Shadow:[Active:#ff474a4c,Disabled:#ff474a4c,Inactive:#ff474a4c],Highlight:[Active:#ff3daee9,Disabled:#ffe3e5e7,Inactive:#ffc2e0f5],HighlightedText:[Active:#ffffffff,Disabled:#ffa0a1a3,Inactive:#ff232629],Link:[Active:#ff2980b9,Disabled:#ffa3cae2,Inactive:#ff2980b9],LinkVisited:[Active:#ff9b59b6,Disabled:#ffd6bae1,Inactive:#ff9b59b6],AlternateBase:[Active:#fff7f7f7,Disabled:#ffebebeb,Inactive:#fff7f7f7],ToolTipBase:[Active:#fff7f7f7,Disabled:#fff7f7f7,Inactive:#fff7f7f7],ToolTipText:[Active:#ff232629,Disabled:#ff232629,Inactive:#ff232629],PlaceholderText:[Active:#ff707d8a,Disabled:#ffc2c8ce,Inactive:#ff707d8a],Accent:[Active:#ff3daee9,Disabled:#ffe3e5e7,Inactive:#ffc2e0f5]")

/usr/share/color-schemes/BreezeDark.colors
QPalette(resolve=0x7ffdffffefffff7f,"WindowText:[Active:#fffcfcfc,Disabled:#ff686a6c,Inactive:#fffcfcfc],Button:[Active:#ff292c30,Disabled:#ff272a2e,Inactive:#ff292c30],Light:[Active:#ff393e43,Disabled:#ff383d42,Inactive:#ff393e43],Midlight:[Active:#ff2e3337,Disabled:#ff2d3136,Inactive:#ff2e3337],Dark:[Active:#ff131516,Disabled:#ff121415,Inactive:#ff131516],Mid:[Active:#ff1c1f21,Disabled:#ff1b1d20,Inactive:#ff1c1f21],Text:[Active:#fffcfcfc,Disabled:#ff606263,Inactive:#fffcfcfc],ButtonText:[Active:#fffcfcfc,Disabled:#ff6d6f72,Inactive:#fffcfcfc],Base:[Active:#ff141618,Disabled:#ff131517,Inactive:#ff141618],Window:[Active:#ff202326,Disabled:#ff1f2124,Inactive:#ff202326],Shadow:[Active:#ff0e0f10,Disabled:#ff0d0e0f,Inactive:#ff0e0f10],Highlight:[Active:#ff3daee9,Disabled:#ff1f2124,Inactive:#ff1b4155],HighlightedText:[Active:#fffcfcfc,Disabled:#ff686a6c,Inactive:#fffcfcfc],Link:[Active:#ff1d99f3,Disabled:#ff164160,Inactive:#ff1d99f3],LinkVisited:[Active:#ff9b59b6,Disabled:#ff402b4c,Inactive:#ff9b59b6],AlternateBase:[Active:#ff1d1f22,Disabled:#ff1c1e20,Inactive:#ff1d1f22],ToolTipBase:[Active:#ff292c30,Disabled:#ff292c30,Inactive:#ff292c30],ToolTipText:[Active:#fffcfcfc,Disabled:#fffcfcfc,Inactive:#fffcfcfc],PlaceholderText:[Active:#ffa1a9b1,Disabled:#ff42464a,Inactive:#ffa1a9b1],Accent:[Active:#ff3daee9,Disabled:#ff1f2124,Inactive:#ff1b4155]")

The code that turns those color schemes into QPalettes is here: 
https://eur01.safelinks.protection.outlook.com/?url=https%3A%2F%2Finvent.kde.org%2Fframeworks%2Fkcolorscheme%2F-%2Fblob%2Fmaster%2Fsrc%2Fkcolorscheme.cpp%23L580&data=05%7C02%7Caxel.spoerl%40qt.io%7C1fde212a5ffc42b896ec08dd607830bf%7C20d0b167794d448a9d01aaeccc1124ac%7C0%7C0%7C638772791535030807%7CUnknown%7CTWFpbGZsb3d8eyJFbXB0eU1hcGkiOnRydWUsIlYiOiIwLjAuMDAwMCIsIlAiOiJXaW4zMiIsIkFOIjoiTWFpbCIsIldUIjoyfQ%3D%3D%7C0%7C%7C%7C&sdata=7QRCRNTOir7zNA0SxXNOx937hndZeT0dC8Dhu3AMS%2B4%3D&reserved=0<https://invent.kde.org/frameworks/kcolorscheme/-/blob/master/src/kcolorscheme.cpp#L580>

David

Reply via email to