[plasma/union] /: input/css/breeze: Convert breeze to a proper style package

Arjen Hiemstra <[email protected]> Wed, 5 Aug 2026 10:33:24 +0000 (UTC)
Newsgroups gmane.comp.kde.cvs
Message-ID <[email protected]>
Git commit e353d2dad3702672e5f16615695d5423235d83ed by Arjen Hiemstra.
Committed on 05/08/2026 at 10:24.
Pushed by ahiemstra into branch 'master'.

input/css/breeze: Convert breeze to a proper style package

We now require styles to be proper packages so let's make sure our
provided styles are.

M  +1    -1    autotests/input/TestCss.cpp
M  +3    -3    src/input/css/CMakeLists.txt
R  +0    -0    src/input/css/styles/breeze/contents/css/application.css [from: src/input/css/styles/breeze/application.css - 100% similarity]
R  +1    -1    src/input/css/styles/breeze/contents/css/bars.css [from: src/input/css/styles/breeze/bars.css - 099% similarity]
R  +0    -0    src/input/css/styles/breeze/contents/css/button.css [from: src/input/css/styles/breeze/button.css - 100% similarity]
R  +0    -0    src/input/css/styles/breeze/contents/css/calendar.css [from: src/input/css/styles/breeze/calendar.css - 100% similarity]
R  +2    -2    src/input/css/styles/breeze/contents/css/check.css [from: src/input/css/styles/breeze/check.css - 096% similarity]
R  +0    -0    src/input/css/styles/breeze/contents/css/defaults.css [from: src/input/css/styles/breeze/defaults.css - 100% similarity]
R  +0    -0    src/input/css/styles/breeze/contents/css/delegate.css [from: src/input/css/styles/breeze/delegate.css - 100% similarity]
A  +51   -0    src/input/css/styles/breeze/contents/css/global.css
R  +0    -0    src/input/css/styles/breeze/contents/css/kirigami.css [from: src/input/css/styles/breeze/kirigami.css - 100% similarity]
R  +4    -0    src/input/css/styles/breeze/contents/css/popup.css [from: src/input/css/styles/breeze/popup.css - 098% similarity]
R  +0    -0    src/input/css/styles/breeze/contents/css/style.css [from: src/input/css/styles/breeze/style.css - 100% similarity]
R  +0    -0    src/input/css/styles/breeze/contents/css/tables.css [from: src/input/css/styles/breeze/tables.css - 100% similarity]
R  +0    -0    src/input/css/styles/breeze/contents/css/text.css [from: src/input/css/styles/breeze/text.css - 100% similarity]
R  +0    -0    src/input/css/styles/breeze/contents/css/variables.css [from: src/input/css/styles/breeze/variables.css - 100% similarity]
R  +0    -0    src/input/css/styles/breeze/contents/images/checkmark.svg [from: src/input/css/styles/breeze/images/checkmark.svg - 100% similarity]
R  +0    -0    src/input/css/styles/breeze/contents/images/radio.svg [from: src/input/css/styles/breeze/images/radio.svg - 100% similarity]
A  +13   -0    src/input/css/styles/breeze/metadata.json

https://invent.kde.org/plasma/union/-/commit/e353d2dad3702672e5f16615695d5423235d83ed

diff --git a/autotests/input/TestCss.cpp b/autotests/input/TestCss.cpp
index d9e36355..141d14a6 100644
--- a/autotests/input/TestCss.cpp
+++ b/autotests/input/TestCss.cpp
@@ -34,7 +34,7 @@ private Q_SLOTS:
 
         auto cssInputPath = fs::path(QFINDTESTDATA("../../src/input/css/").toStdString());
 
-        cssparser::StyleSheet styleSheet(cssInputPath / "styles"s / styleName / "style.css"s);
+        cssparser::StyleSheet styleSheet(cssInputPath / "styles"s / styleName / "contents" / "css" / "style.css"s);
         styleSheet.import(cssInputPath / "defaults"s / "default.css"s);
         styleSheet.parse();
 
diff --git a/src/input/css/CMakeLists.txt b/src/input/css/CMakeLists.txt
index 38157ac8..140f8a7c 100644
--- a/src/input/css/CMakeLists.txt
+++ b/src/input/css/CMakeLists.txt
@@ -32,6 +32,6 @@ set_target_properties(union-input-css PROPERTIES
 
 install(TARGETS union-input-css DESTINATION ${KDE_INSTALL_PLUGINDIR}/union)
 
-set(_css_install_dir "${KDE_INSTALL_DATADIR}/union/css")
-install(DIRECTORY defaults DESTINATION ${_css_install_dir})
-install(DIRECTORY styles DESTINATION ${_css_install_dir})
+set(_union_data_dir "${KDE_INSTALL_DATADIR}/union")
+install(DIRECTORY defaults DESTINATION ${_union_data_dir}/css)
+install(DIRECTORY styles DESTINATION ${_union_data_dir})
diff --git a/src/input/css/styles/breeze/application.css b/src/input/css/styles/breeze/contents/css/application.css
similarity index 100%
rename from src/input/css/styles/breeze/application.css
rename to src/input/css/styles/breeze/contents/css/application.css
diff --git a/src/input/css/styles/breeze/bars.css b/src/input/css/styles/breeze/contents/css/bars.css
similarity index 99%
rename from src/input/css/styles/breeze/bars.css
rename to src/input/css/styles/breeze/contents/css/bars.css
index ad74ebdf..6d6536b8 100644
--- a/src/input/css/styles/breeze/bars.css
+++ b/src/input/css/styles/breeze/contents/css/bars.css
@@ -279,4 +279,4 @@ slider.changed {
     & > tickmark.active {
         background-color: var(--changed-foreground);
     }
-}
\ No newline at end of file
+}
diff --git a/src/input/css/styles/breeze/button.css b/src/input/css/styles/breeze/contents/css/button.css
similarity index 100%
rename from src/input/css/styles/breeze/button.css
rename to src/input/css/styles/breeze/contents/css/button.css
diff --git a/src/input/css/styles/breeze/calendar.css b/src/input/css/styles/breeze/contents/css/calendar.css
similarity index 100%
rename from src/input/css/styles/breeze/calendar.css
rename to src/input/css/styles/breeze/contents/css/calendar.css
diff --git a/src/input/css/styles/breeze/check.css b/src/input/css/styles/breeze/contents/css/check.css
similarity index 96%
rename from src/input/css/styles/breeze/check.css
rename to src/input/css/styles/breeze/contents/css/check.css
index 663666e4..657451f3 100644
--- a/src/input/css/styles/breeze/check.css
+++ b/src/input/css/styles/breeze/contents/css/check.css
@@ -116,7 +116,7 @@ menuitem
 {
     &:checked indicator
     {
-        background-image: url("images/checkmark.svg") mask var(--checkable-indicator-active-text-color);
+        background-image: url("../images/checkmark.svg") mask var(--checkable-indicator-active-text-color);
     }
 }
 
@@ -131,7 +131,7 @@ menuitem.exclusive
 
     &:checked > indicator
     {
-        background-image: url("images/radio.svg") mask var(--checkable-indicator-active-text-color);
+        background-image: url("../images/radio.svg") mask var(--checkable-indicator-active-text-color);
     }
 }
 
diff --git a/src/input/css/styles/breeze/defaults.css b/src/input/css/styles/breeze/contents/css/defaults.css
similarity index 100%
rename from src/input/css/styles/breeze/defaults.css
rename to src/input/css/styles/breeze/contents/css/defaults.css
diff --git a/src/input/css/styles/breeze/delegate.css b/src/input/css/styles/breeze/contents/css/delegate.css
similarity index 100%
rename from src/input/css/styles/breeze/delegate.css
rename to src/input/css/styles/breeze/contents/css/delegate.css
diff --git a/src/input/css/styles/breeze/contents/css/global.css b/src/input/css/styles/breeze/contents/css/global.css
new file mode 100644
index 00000000..6c8c0aa9
--- /dev/null
+++ b/src/input/css/styles/breeze/contents/css/global.css
@@ -0,0 +1,51 @@
+/*
+ * SPDX-License-Identifier: BSD-2-Clause
+ * SPDX-FileCopyrightText: 2026 Arjen Hiemstra <[email protected]>
+ */
+
+@property --color-group {
+    syntax: "<string>";
+    inherits: true;
+    initial-value: "active";
+}
+
+@property --color-set {
+    syntax: "<string>";
+    inherits: true;
+}
+
+.inactive {
+    --color-group: "inactive";
+}
+
+:disabled {
+    --color-group: "disabled";
+}
+
+[color-set="window"] {
+    --color-set: "window";
+}
+
+[color-set="button"] {
+    --color-set: "button";
+}
+
+[color-set="view"] {
+    --color-set: "view";
+}
+
+[color-set="selection"] {
+    --color-set: "selection";
+}
+
+[color-set="tooltip"] {
+    --color-set: "tooltip";
+}
+
+[color-set="complementary"] {
+    --color-set: "complementary";
+}
+
+[color-set="header"] {
+    --color-set: "header";
+}
diff --git a/src/input/css/styles/breeze/kirigami.css b/src/input/css/styles/breeze/contents/css/kirigami.css
similarity index 100%
rename from src/input/css/styles/breeze/kirigami.css
rename to src/input/css/styles/breeze/contents/css/kirigami.css
diff --git a/src/input/css/styles/breeze/popup.css b/src/input/css/styles/breeze/contents/css/popup.css
similarity index 98%
rename from src/input/css/styles/breeze/popup.css
rename to src/input/css/styles/breeze/contents/css/popup.css
index 434987c6..7c7c8771 100644
--- a/src/input/css/styles/breeze/popup.css
+++ b/src/input/css/styles/breeze/contents/css/popup.css
@@ -109,6 +109,10 @@ menuitem
     }
 }
 
+overlay {
+    background-color: rgba(0.0, 0.0, 0.0, 0.2);
+}
+
 /* Menuitems are sometimes used in comboboxes instead of itemdelegates, adjust their padding to
  * same as itemdelegate in those cases */
 popup.combobox menuitem {
diff --git a/src/input/css/styles/breeze/style.css b/src/input/css/styles/breeze/contents/css/style.css
similarity index 100%
rename from src/input/css/styles/breeze/style.css
rename to src/input/css/styles/breeze/contents/css/style.css
diff --git a/src/input/css/styles/breeze/tables.css b/src/input/css/styles/breeze/contents/css/tables.css
similarity index 100%
rename from src/input/css/styles/breeze/tables.css
rename to src/input/css/styles/breeze/contents/css/tables.css
diff --git a/src/input/css/styles/breeze/text.css b/src/input/css/styles/breeze/contents/css/text.css
similarity index 100%
rename from src/input/css/styles/breeze/text.css
rename to src/input/css/styles/breeze/contents/css/text.css
diff --git a/src/input/css/styles/breeze/variables.css b/src/input/css/styles/breeze/contents/css/variables.css
similarity index 100%
rename from src/input/css/styles/breeze/variables.css
rename to src/input/css/styles/breeze/contents/css/variables.css
diff --git a/src/input/css/styles/breeze/images/checkmark.svg b/src/input/css/styles/breeze/contents/images/checkmark.svg
similarity index 100%
rename from src/input/css/styles/breeze/images/checkmark.svg
rename to src/input/css/styles/breeze/contents/images/checkmark.svg
diff --git a/src/input/css/styles/breeze/images/radio.svg b/src/input/css/styles/breeze/contents/images/radio.svg
similarity index 100%
rename from src/input/css/styles/breeze/images/radio.svg
rename to src/input/css/styles/breeze/contents/images/radio.svg
diff --git a/src/input/css/styles/breeze/metadata.json b/src/input/css/styles/breeze/metadata.json
new file mode 100644
index 00000000..a89417c2
--- /dev/null
+++ b/src/input/css/styles/breeze/metadata.json
@@ -0,0 +1,13 @@
+{
+    "input-type": "css",
+    "input-version": 1,
+    "name": "Breeze",
+    "description": "The Breeze style for KDE Plasma.",
+    "version": "6.8",
+    "license": "BSD-2-Clause",
+    "url": "https://invent.kde.org/plasa/union",
+    "authors": [
+        "Arjen Hiemstra",
+        "Akseli Lahtinen"
+    ]
+}