How to change the color of active windows in Plasma

Updated: November 10, 2021

Alternatively, the title of this article is: how to change the color of active titlebars in Plasma. So what is this all about? In the Plasma desktop, the default theme is called Breeze. Until about Plasma 5.18, Breeze shipped with a light application theme, plus dark window borders. Excellent ergonomic choice, easy separation between foreground and background windows. None of the flat, modern nonsense.

Recently, Plasma offers distinct all-light or all-dark themes, plus a mixed theme called Twilight, which gives you the old light-dark combo. Except ... it no longer works correctly. The window borders for active windows are light-themed. This is an under-reported, not-well-understood issue. I even had people emailing me telling me how to change the colors. Which I did, and the change does nothing, as there seems to be an unresolved bug in Plasma. I've been talking about this for more than a year. It's time for a dedicated article.

Problem in more detail

Plasma refuses to change the active titlebar color for the Breeze theme. Very simple. Now, if you read my tutorial on Plasma customization, I showed you there how to change the font color, and used my own custom Brooze theme. Edit any color, apply it, and the changes are immediate. Only this does not work for titlebars. Try it for yourself. Settings > Appearance > Colors. Edit any scheme. Set your own colors. Nothing.

Titelbar color

I did this recently both in Fedora 34 KDE and KDE neon 5.22.5. I tried this on multiple systems, with multiple graphics cards. The problem is entirely Plasma, and unrelated to any other factors, and it seems to affect the latest version of the desktop environment, too. Hint: Might be fixed by the time you read this!

Solution 1

First, a workaround. If you apply a different color scheme, say Oxygen or Oxygen Cold, you can then make changes to the active titlebar colors. It would appear the issue is isolated to Breeze. Very annoying, as it has the best overall color ergonomics inside the application windows.

Breeze does not work

Oxygen works

Here's Oxygen with the old Breeze color scheme (like say Plasma 5.12):

Modified Oxygen

Solution 2

This is far more stringent. It involves changing the KDE configuration files. This is not pretty or elegant, and you may need to undo these changes at some point, once neon gets fixed. Namely, in your home directory, you want to edit the following two files:

/home/"username"/.config/kdeglobals
/home/"username"/.kde/share/config/kdeglobals

The first is based off of the second (which is the default for a newly created user), so if you've already made any modifications, you may need to sort out both of these files. You can start with the first file, make changes, and then see if you need to implement the same changes in the second file, too.

The two files will be almost (if not) identical. They will contain a long list of declarations and associated values, including colors:

...
[Colors:Window]
BackgroundAlternate=227,229,231
BackgroundNormal=239,240,241
DecorationFocus=61,174,233
DecorationHover=61,174,233
ForegroundActive=61,174,233
ForegroundInactive=112,125,138
ForegroundLink=41,128,185
...

What you need to do is edit and change the lines that declare the default Breeze titlebar color code with the "classic" one. The file lists colors in the RGB format. You can use a program like GIMP to figure out the colors, and make the necessary translations.

Specifically, the Breeze light gray hex value #e3e5e7 maps to 227,229,231. The (old) Breeze dark gray color code #405057 maps to 64,80,87. You can now simply invert or replace the relevant instances that map lines in the Window Manager (WM) sections inside the file. Once you make these changes, restart your Plasma shell, or reboot. The changes should be active.

Now, what is relevant, you ask? The easiest way to figure it out is as follows. Save the original file in a backup location. Create your own custom color scheme - edit the titlebar color, then Save as, give it a name, something like Test. Now, open the two files in a text editor and compare the differences, or use diff on the command line. For instance, with a modified Oxygen Cold theme:

--- -    2021-09-24 14:28:52.894025651 +0200
+++ /home/roger/.config/kdeglobals    2021-09-24 14:28:48.298722471 +0200

 [General]
-ColorScheme=OxygenCold
+ColorScheme=Test
 Name=Breeze Light

 [WM]
-activeBackground=96,148,207
+activeBackground=0,0,0
 activeBlend=224,223,222
 activeForeground=255,255,255
 inactiveBackground=224,223,222
-inactiveBlend=224,223,222
+inactiveBlend=221,220,219
 inactiveForeground=20,19,18

As you can see, the most importance difference is in the activeBackground entry under [WM]. This is where you can replace the color codes listed above. You can do some additional tweaking, of course, but the most essential part is the big chunk of color that differentiates the foreground and background windows.

Conclusion

I must say I'm not happy to have written this article. This is annoying. But also necessary, because we want good aesthetics and awesome ergonomics in our day-to-day workflow, and if you can't easily separate foreground and background windows on a desktop, then there's something wrong in your neighborhood.

Well, hopefully, your OCD demons can rest now. You have two workarounds for the titlebar problem in Plasma until the issue gets officially resolved. And I do hope it gets resolved, and that this isn't the start of some nonsense one-color-for-the-win trend where everything is flat, looks the same, and is hard to navigate. Enjoy your colors. And see you around.

Cheers.