From 714264a08be6257551c61807c2e73fef014a7339 Mon Sep 17 00:00:00 2001
From: wheaney <42350981+wheaney@users.noreply.github.com>
Date: Fri, 18 Jul 2025 11:30:57 -0700
Subject: [PATCH] Revert "Remove kconfig stuff"
This reverts commit faf35e0cd4a5306fb66a270d4630f62339706319.
---
kwin/CMakeLists.txt | 2 +
kwin/src/CMakeLists.txt | 5 +++
kwin/src/breezydesktopeffect.cpp | 7 +++
kwin/src/breezydesktopeffect.h | 2 +
kwin/src/cubeconfig.kcfg | 9 ++++
kwin/src/cubeconfig.kcfgc | 4 ++
kwin/src/kcm/CMakeLists.txt | 20 +++++++++
kwin/src/kcm/cubeeffectkcm.cpp | 74 ++++++++++++++++++++++++++++++++
kwin/src/kcm/cubeeffectkcm.h | 33 ++++++++++++++
kwin/src/kcm/cubeeffectkcm.ui | 39 +++++++++++++++++
kwin/src/metadata.json | 5 ++-
kwin/src/qml/main.qml | 29 +++++++++++++
12 files changed, 227 insertions(+), 2 deletions(-)
create mode 100644 kwin/src/cubeconfig.kcfg
create mode 100644 kwin/src/cubeconfig.kcfgc
create mode 100644 kwin/src/kcm/CMakeLists.txt
create mode 100644 kwin/src/kcm/cubeeffectkcm.cpp
create mode 100644 kwin/src/kcm/cubeeffectkcm.h
create mode 100644 kwin/src/kcm/cubeeffectkcm.ui
diff --git a/kwin/CMakeLists.txt b/kwin/CMakeLists.txt
index 4f5969d..c3df9a4 100644
--- a/kwin/CMakeLists.txt
+++ b/kwin/CMakeLists.txt
@@ -26,6 +26,8 @@ include(cmake/qtversion.cmake)
# required frameworks by Core
find_package(KF${QT_MAJOR_VERSION} ${KF_MIN_VERSION} REQUIRED COMPONENTS
+ Config
+ ConfigWidgets
CoreAddons
GlobalAccel
I18n
diff --git a/kwin/src/CMakeLists.txt b/kwin/src/CMakeLists.txt
index ae9930f..e645c19 100644
--- a/kwin/src/CMakeLists.txt
+++ b/kwin/src/CMakeLists.txt
@@ -1,8 +1,11 @@
+add_subdirectory(kcm)
+
kcoreaddons_add_plugin(breezy_desktop_effect INSTALL_NAMESPACE "kwin/effects/plugins/")
target_sources(breezy_desktop_effect PRIVATE
breezydesktopeffect.cpp
main.cpp
)
+kconfig_add_kcfg_files(breezy_desktop_effect cubeconfig.kcfgc)
target_include_directories(breezy_desktop_effect PRIVATE /usr/include/kwin)
target_link_libraries(breezy_desktop_effect
@@ -10,6 +13,8 @@ target_link_libraries(breezy_desktop_effect
Qt6::Gui
Qt6::Quick
+ KF6::ConfigCore
+ KF6::ConfigGui
KF6::CoreAddons
KF6::GlobalAccel
KF6::I18n
diff --git a/kwin/src/breezydesktopeffect.cpp b/kwin/src/breezydesktopeffect.cpp
index f56afa1..adc5e90 100644
--- a/kwin/src/breezydesktopeffect.cpp
+++ b/kwin/src/breezydesktopeffect.cpp
@@ -1,4 +1,5 @@
#include "breezydesktopeffect.h"
+#include "cubeconfig.h"
#include "effect/effect.h"
#include "effect/effecthandler.h"
#include "opengl/glutils.h"
@@ -51,6 +52,7 @@ BreezyDesktopEffect::BreezyDesktopEffect()
connect(effects, &EffectsHandler::cursorShapeChanged, this, &BreezyDesktopEffect::updateCursorImage);
updateCursorImage();
+ reconfigure(ReconfigureAll);
setSource(QUrl::fromLocalFile(QStandardPaths::locate(QStandardPaths::GenericDataLocation, QStringLiteral("kwin/effects/breezy_desktop/qml/main.qml"))));
@@ -66,6 +68,11 @@ BreezyDesktopEffect::BreezyDesktopEffect()
m_cursorUpdateTimer->start();
}
+void BreezyDesktopEffect::reconfigure(ReconfigureFlags)
+{
+ CubeConfig::self()->read();
+}
+
QVariantMap BreezyDesktopEffect::initialProperties(Output *screen)
{
return QVariantMap{
diff --git a/kwin/src/breezydesktopeffect.h b/kwin/src/breezydesktopeffect.h
index e357876..e2a34b6 100644
--- a/kwin/src/breezydesktopeffect.h
+++ b/kwin/src/breezydesktopeffect.h
@@ -34,6 +34,8 @@ namespace KWin
BreezyDesktopEffect();
+ void reconfigure(ReconfigureFlags) override;
+
int requestedEffectChainPosition() const override;
int animationDuration() const;
diff --git a/kwin/src/cubeconfig.kcfg b/kwin/src/cubeconfig.kcfg
new file mode 100644
index 0000000..57e83db
--- /dev/null
+++ b/kwin/src/cubeconfig.kcfg
@@ -0,0 +1,9 @@
+
+
+
+
+
+
diff --git a/kwin/src/cubeconfig.kcfgc b/kwin/src/cubeconfig.kcfgc
new file mode 100644
index 0000000..4c28cf9
--- /dev/null
+++ b/kwin/src/cubeconfig.kcfgc
@@ -0,0 +1,4 @@
+File=cubeconfig.kcfg
+ClassName=CubeConfig
+Singleton=true
+Mutators=true
diff --git a/kwin/src/kcm/CMakeLists.txt b/kwin/src/kcm/CMakeLists.txt
new file mode 100644
index 0000000..9a6df2a
--- /dev/null
+++ b/kwin/src/kcm/CMakeLists.txt
@@ -0,0 +1,20 @@
+# SPDX-FileCopyrightText: 2022 Vlad Zahorodnii
+#
+# SPDX-License-Identifier: BSD-3-Clause
+
+set(breezy_desktop_config_SOURCES cubeeffectkcm.cpp)
+ki18n_wrap_ui(breezy_desktop_config_SOURCES cubeeffectkcm.ui)
+qt_add_dbus_interface(breezy_desktop_config_SOURCES ${KWIN_EFFECTS_INTERFACE} kwineffects_interface)
+
+kcoreaddons_add_plugin(breezy_desktop_config INSTALL_NAMESPACE "kwin/effects/configs" SOURCES ${breezy_desktop_config_SOURCES})
+kconfig_add_kcfg_files(breezy_desktop_config ../cubeconfig.kcfgc)
+target_link_libraries(breezy_desktop_config
+ KF6::ConfigCore
+ KF6::ConfigGui
+ KF6::ConfigWidgets
+ KF6::CoreAddons
+ KF6::GlobalAccel
+ KF6::I18n
+ KF6::KCMUtils
+ KF6::XmlGui
+)
diff --git a/kwin/src/kcm/cubeeffectkcm.cpp b/kwin/src/kcm/cubeeffectkcm.cpp
new file mode 100644
index 0000000..c61dfa1
--- /dev/null
+++ b/kwin/src/kcm/cubeeffectkcm.cpp
@@ -0,0 +1,74 @@
+/*
+ SPDX-FileCopyrightText: 2022 Vlad Zahorodnii
+
+ SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
+*/
+
+#include "cubeeffectkcm.h"
+#include "cubeconfig.h"
+
+#include
+
+#include
+#include
+#include
+#include
+
+#include
+#include
+
+K_PLUGIN_CLASS(CubeEffectConfig)
+
+CubeEffectConfig::CubeEffectConfig(QObject *parent, const KPluginMetaData &data, const QVariantList &args)
+ : KCModule(parent, data)
+{
+ ui.setupUi(widget());
+ addConfig(CubeConfig::self(), widget());
+}
+
+CubeEffectConfig::~CubeEffectConfig()
+{
+}
+
+void CubeEffectConfig::load()
+{
+ KCModule::load();
+ updateUiFromConfig();
+ updateUnmanagedState();
+}
+
+void CubeEffectConfig::save()
+{
+ updateConfigFromUi();
+ CubeConfig::self()->save();
+ KCModule::save();
+ updateUnmanagedState();
+
+ OrgKdeKwinEffectsInterface interface(QStringLiteral("org.kde.KWin"), QStringLiteral("/Effects"), QDBusConnection::sessionBus());
+ interface.reconfigureEffect(QStringLiteral("cube"));
+}
+
+void CubeEffectConfig::defaults()
+{
+ KCModule::defaults();
+ updateUiFromDefaultConfig();
+ updateUnmanagedState();
+}
+
+void CubeEffectConfig::updateConfigFromUi()
+{
+}
+
+void CubeEffectConfig::updateUiFromConfig()
+{
+}
+
+void CubeEffectConfig::updateUiFromDefaultConfig()
+{
+}
+
+void CubeEffectConfig::updateUnmanagedState()
+{
+}
+
+#include "cubeeffectkcm.moc"
diff --git a/kwin/src/kcm/cubeeffectkcm.h b/kwin/src/kcm/cubeeffectkcm.h
new file mode 100644
index 0000000..efe0521
--- /dev/null
+++ b/kwin/src/kcm/cubeeffectkcm.h
@@ -0,0 +1,33 @@
+/*
+ SPDX-FileCopyrightText: 2022 Vlad Zahorodnii
+
+ SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
+*/
+
+#pragma once
+
+#include
+
+#include "ui_cubeeffectkcm.h"
+
+class CubeEffectConfig : public KCModule
+{
+ Q_OBJECT
+
+public:
+ CubeEffectConfig(QObject *parent, const KPluginMetaData &data, const QVariantList &args);
+ ~CubeEffectConfig() override;
+
+public Q_SLOTS:
+ void load() override;
+ void save() override;
+ void defaults() override;
+
+private:
+ void updateUiFromConfig();
+ void updateUiFromDefaultConfig();
+ void updateConfigFromUi();
+ void updateUnmanagedState();
+
+ ::Ui::CubeEffectConfig ui;
+};
diff --git a/kwin/src/kcm/cubeeffectkcm.ui b/kwin/src/kcm/cubeeffectkcm.ui
new file mode 100644
index 0000000..cb2d34f
--- /dev/null
+++ b/kwin/src/kcm/cubeeffectkcm.ui
@@ -0,0 +1,39 @@
+
+
+
+ CubeEffectConfig
+
+
+
+ 0
+ 0
+ 455
+ 361
+
+
+
+
+ 400
+ 250
+
+
+
+ -
+
+
+ Cube face displacement:
+
+
+
+
+
+
+
+
+
+
+
diff --git a/kwin/src/metadata.json b/kwin/src/metadata.json
index 1d9d482..3eb43da 100644
--- a/kwin/src/metadata.json
+++ b/kwin/src/metadata.json
@@ -8,7 +8,7 @@
}
],
"Category": "Tools",
- "Description": "Breezy Desktop XR Effect",
+ "Description": "Breezy Desktop XR Effect 2",
"EnabledByDefault": true,
"License": "GPL",
"Name": "Breezy Desktop XR",
@@ -16,5 +16,6 @@
"KWin/Effect"
]
},
- "X-Plasma-API-Minimum-Version": "6.0"
+ "X-Plasma-API-Minimum-Version": "6.0",
+ "X-KDE-ConfigModule": "breezy_desktop_config"
}
diff --git a/kwin/src/qml/main.qml b/kwin/src/qml/main.qml
index a48a8ee..a763e5a 100644
--- a/kwin/src/qml/main.qml
+++ b/kwin/src/qml/main.qml
@@ -24,6 +24,35 @@ Item {
id: view
anchors.fill: parent
+ Loader {
+ id: colorSceneEnvironment
+ active: effect.backgroundMode == CubeEffect.BackgroundMode.Color
+ sourceComponent: SceneEnvironment {
+ clearColor: effect.backgroundColor
+ backgroundMode: SceneEnvironment.Color
+ }
+ }
+
+ Loader {
+ id: skyboxSceneEnvironment
+ active: effect.backgroundMode == CubeEffect.BackgroundMode.Skybox
+ sourceComponent: SceneEnvironment {
+ backgroundMode: SceneEnvironment.SkyBox
+ lightProbe: Texture {
+ source: effect.skybox
+ }
+ }
+ }
+
+ environment: {
+ switch (effect.backgroundMode) {
+ case CubeEffect.BackgroundMode.Skybox:
+ return skyboxSceneEnvironment.item;
+ case CubeEffect.BackgroundMode.Color:
+ return colorSceneEnvironment.item;
+ }
+ }
+
PerspectiveCamera {
id: camera
fieldOfView: 22.55