From 852eb47e3f27f464f79e60c9bbd76cf7cb35cd73 Mon Sep 17 00:00:00 2001 From: wheaney <42350981+wheaney@users.noreply.github.com> Date: Tue, 24 Jun 2025 10:36:39 -0700 Subject: [PATCH] WIP --- kwin/src/cubeeffect.cpp | 3 --- kwin/src/qml/Cube.qml | 11 ++++++----- kwin/src/qml/CubeFace.qml | 4 ++-- kwin/src/qml/DesktopView.qml | 9 ++++----- 4 files changed, 12 insertions(+), 15 deletions(-) diff --git a/kwin/src/cubeeffect.cpp b/kwin/src/cubeeffect.cpp index e7a94e1..e16d8c4 100644 --- a/kwin/src/cubeeffect.cpp +++ b/kwin/src/cubeeffect.cpp @@ -153,9 +153,6 @@ void CubeEffect::activate() if (effects->isScreenLocked()) { return; } - if (effects->desktops().size() < 3) { - return; - } setRunning(true); } diff --git a/kwin/src/qml/Cube.qml b/kwin/src/qml/Cube.qml index 9583e40..51348cc 100644 --- a/kwin/src/qml/Cube.qml +++ b/kwin/src/qml/Cube.qml @@ -16,22 +16,23 @@ Node { readonly property real faceDistance: 0.5 * faceSize.width / Math.tan(angleTick * Math.PI / 360) + faceDisplacement; readonly property real angleTick: 360 / faceRepeater.count - function desktopAt(azimuth) { + function screenAt(azimuth) { let index = Math.round(azimuth / angleTick) % faceRepeater.count; if (index < 0) { index += faceRepeater.count; } - return faceRepeater.objectAt(index).desktop; + return faceRepeater.objectAt(index).screen; } - function desktopAzimuth(desktop) { - return cube.angleTick * (desktop.x11DesktopNumber - 1); + function screenAzimuth(screen) { + return cube.angleTick * screen.index; } Repeater3D { id: faceRepeater - model: KWinComponents.VirtualDesktopModel {} + model: KWinComponents.Workspace.screens.length delegate: CubeFace { + property var screen: KWinComponents.Workspace.screens[index] faceSize: cube.faceSize scale: Qt.vector3d(faceSize.width / 100, faceSize.height / 100, 1) eulerRotation.y: cube.angleTick * index diff --git a/kwin/src/qml/CubeFace.qml b/kwin/src/qml/CubeFace.qml index e53f08c..70d8fc9 100644 --- a/kwin/src/qml/CubeFace.qml +++ b/kwin/src/qml/CubeFace.qml @@ -10,7 +10,7 @@ import QtQuick3D Model { id: face - required property QtObject desktop + required property QtObject screen required property int index required property size faceSize @@ -21,7 +21,7 @@ Model { lighting: DefaultMaterial.NoLighting diffuseMap: Texture { sourceItem: DesktopView { - desktop: face.desktop + screen: face.screen width: faceSize.width height: faceSize.height } diff --git a/kwin/src/qml/DesktopView.qml b/kwin/src/qml/DesktopView.qml index 4f4946b..4b05db9 100644 --- a/kwin/src/qml/DesktopView.qml +++ b/kwin/src/qml/DesktopView.qml @@ -10,20 +10,19 @@ import org.kde.kwin as KWinComponents Item { id: desktopView - required property QtObject desktop + required property QtObject screen Repeater { model: KWinComponents.WindowFilterModel { activity: KWinComponents.Workspace.currentActivity - desktop: desktopView.desktop - screenName: targetScreen.name + screenName: desktopView.screen.name windowModel: KWinComponents.WindowModel {} } KWinComponents.WindowThumbnail { wId: model.window.internalId - x: model.window.x - targetScreen.geometry.x - y: model.window.y - targetScreen.geometry.y + x: model.window.x - desktopView.screen.geometry.x + y: model.window.y - desktopView.screen.geometry.y z: model.window.stackingOrder visible: !model.window.minimized }