Overall the user experience has been streamlined and simplified a lot:
- The "Default" theme option has been dropped in favor of having the "Defaults" button revert the selected theme to Breeze. While technically the old code made it read the hardcoded default colors in KColorScheme (which cause the window decoration to turn blue as it cannot write into KWin config like the theme files can), this change makes most sense from a UX POV.
- The "Current" theme option has also been removed. Technically, when applying a theme the colors are copied into kdeglobals, so you could have a custom theme that is not an actual .colors file on disk. However, this is imho quite a niche usecase. Ideally, we showed a "Custom" theme as soon as the actual theme diverges from any theme file installed but that would require tediously comparing dozens of settings values which I don't think is feasible. At least when the color scheme name set in kdeglobals does not exist, a warning is now displayed.
- The "Apply to non-Qt applications checkbox" which isn't something one would want to uncheck has been removed. It is still read from kcmdisplayrc for those who really want to disable it but there is no user-visible checkbox anymore.
KColorSchemeEditor is now completely disentangled from the KCM and is merely launched as separate process:
- When editing a system scheme, upon clicking "Save" the user is prompted to type a new scheme name. This ensures that any custom scheme is always present on disk reducing the need for a "Current" entry. When the dialog is then closed, the newly saved theme is selected.
- When editing a user scheme, the "Save" button turns into "Apply", which when clicked updates the scheme with any changes made in the dialog (different behavior from when kcolorschemeeditor is launched standalone, where "Save" is always essentially "Save As")
The rewrite also comes with all the goodies we got in the other new KCMs, such as the ability to drop a .colors file into the view to install it or undo deletion until you apply your changes.