15#include <KConfigGroup>
18#include <QStandardPaths>
26 : m_colorScheme(colorScheme != QStringLiteral(
"kdeglobals") ? colorScheme : QString())
28 if (m_colorScheme.isEmpty()) {
29 m_colorSchemeConfig = KSharedConfig::openConfig(m_colorScheme, KConfig::FullConfig);
31 m_colorSchemeConfig = KSharedConfig::openConfig(m_colorScheme, KConfig::SimpleConfig);
33 m_watcher = KConfigWatcher::create(m_colorSchemeConfig);
35 connect(m_watcher.data(), &KConfigWatcher::configChanged,
this, &DecorationPalette::update);
47 using KDecoration2::ColorGroup;
48 using KDecoration2::ColorRole;
50 if (m_legacyColors.has_value()) {
52 case ColorRole::Frame:
54 case ColorGroup::Active:
55 return m_legacyColors->activeFrameColor;
56 case ColorGroup::Inactive:
57 return m_legacyColors->inactiveFrameColor;
61 case ColorRole::TitleBar:
63 case ColorGroup::Active:
64 return m_legacyColors->activeTitleBarColor;
65 case ColorGroup::Inactive:
66 return m_legacyColors->inactiveTitleBarColor;
70 case ColorRole::Foreground:
72 case ColorGroup::Active:
73 return m_legacyColors->activeForegroundColor;
74 case ColorGroup::Inactive:
75 return m_legacyColors->inactiveForegroundColor;
76 case ColorGroup::Warning:
77 return m_legacyColors->warningForegroundColor;
87 case ColorRole::Frame:
89 case ColorGroup::Active:
90 return m_colors.active.background().color();
91 case ColorGroup::Inactive:
92 return m_colors.inactive.background().color();
96 case ColorRole::TitleBar:
98 case ColorGroup::Active:
99 return m_colors.active.background().color();
100 case ColorGroup::Inactive:
101 return m_colors.inactive.background().color();
105 case ColorRole::Foreground:
107 case ColorGroup::Active:
108 return m_colors.active.foreground().color();
109 case ColorGroup::Inactive:
110 return m_colors.inactive.foreground().color();
111 case ColorGroup::Warning:
112 return m_colors.inactive.foreground(KColorScheme::ForegroundRole::NegativeText).color();
126void DecorationPalette::update()
128 m_colorSchemeConfig->sync();
129 m_palette = KColorScheme::createApplicationPalette(m_colorSchemeConfig);
131 if (KColorScheme::isColorSetSupported(m_colorSchemeConfig, KColorScheme::Header)) {
132 m_colors.active = KColorScheme(QPalette::Normal, KColorScheme::Header, m_colorSchemeConfig);
133 m_colors.inactive = KColorScheme(QPalette::Inactive, KColorScheme::Header, m_colorSchemeConfig);
134 m_legacyColors.reset();
136 KConfigGroup wmConfig(m_colorSchemeConfig, QStringLiteral(
"WM"));
138 if (!wmConfig.exists()) {
139 m_colors.active = KColorScheme(QPalette::Normal, KColorScheme::Window, m_colorSchemeConfig);
140 m_colors.inactive = KColorScheme(QPalette::Inactive, KColorScheme::Window, m_colorSchemeConfig);
141 m_legacyColors.reset();
145 m_legacyColors = LegacyColors{};
146 m_legacyColors->activeFrameColor = wmConfig.readEntry(
"frame", m_palette.color(QPalette::Active, QPalette::Window));
147 m_legacyColors->inactiveFrameColor = wmConfig.readEntry(
"inactiveFrame", m_legacyColors->activeFrameColor);
148 m_legacyColors->activeTitleBarColor = wmConfig.readEntry(
"activeBackground", m_palette.color(QPalette::Active, QPalette::Highlight));
149 m_legacyColors->inactiveTitleBarColor = wmConfig.readEntry(
"inactiveBackground", m_legacyColors->inactiveTitleBarColor);
150 m_legacyColors->activeForegroundColor = wmConfig.readEntry(
"activeForeground", m_palette.color(QPalette::Active, QPalette::HighlightedText));
151 m_legacyColors->inactiveForegroundColor = wmConfig.readEntry(
"inactiveForeground", m_legacyColors->activeForegroundColor.darker());
153 KConfigGroup windowColorsConfig(m_colorSchemeConfig, QStringLiteral(
"Colors:Window"));
154 m_legacyColors->warningForegroundColor = windowColorsConfig.readEntry(
"ForegroundNegative", QColor(237, 21, 2));
163#include "moc_decorationpalette.cpp"
DecorationPalette(const QString &colorScheme)
QColor color(KDecoration2::ColorGroup group, KDecoration2::ColorRole role) const