From 0af1b89a4f6514a5b11e239ca1c1767c26f7ff57 Mon Sep 17 00:00:00 2001
From: wheaney <42350981+wheaney@users.noreply.github.com>
Date: Fri, 29 Aug 2025 16:18:47 -0700
Subject: [PATCH] Add display spacing control
---
kwin/src/breezydesktopconfig.kcfg | 7 +++++++
kwin/src/breezydesktopeffect.cpp | 12 ++++++++++++
kwin/src/breezydesktopeffect.h | 5 +++++
kwin/src/kcm/breezydesktopeffectkcm.cpp | 2 ++
kwin/src/kcm/breezydesktopeffectkcm.ui | 19 ++++++++++++++++++-
kwin/src/qml/main.qml | 3 +--
6 files changed, 45 insertions(+), 3 deletions(-)
diff --git a/kwin/src/breezydesktopconfig.kcfg b/kwin/src/breezydesktopconfig.kcfg
index 86e805a..8d0824d 100644
--- a/kwin/src/breezydesktopconfig.kcfg
+++ b/kwin/src/breezydesktopconfig.kcfg
@@ -22,5 +22,12 @@
Enable zooming in on the focused display.
+
+ 0
+ 0
+ 100
+
+ How far apart the displays are visually (not logically)
+
diff --git a/kwin/src/breezydesktopeffect.cpp b/kwin/src/breezydesktopeffect.cpp
index 8f50393..2b30abd 100644
--- a/kwin/src/breezydesktopeffect.cpp
+++ b/kwin/src/breezydesktopeffect.cpp
@@ -149,6 +149,7 @@ void BreezyDesktopEffect::reconfigure(ReconfigureFlags)
BreezyDesktopConfig::self()->read();
setFocusedDisplayDistance(BreezyDesktopConfig::focusedDisplayDistance() / 100.0f);
setAllDisplaysDistance(BreezyDesktopConfig::allDisplaysDistance() / 100.0f);
+ setDisplaySpacing(BreezyDesktopConfig::displaySpacing() / 1000.0f);
setZoomOnFocusEnabled(BreezyDesktopConfig::zoomOnFocusEnabled());
}
@@ -312,6 +313,17 @@ void BreezyDesktopEffect::setAllDisplaysDistance(qreal distance) {
}
}
+qreal BreezyDesktopEffect::displaySpacing() const {
+ return m_displaySpacing;
+}
+
+void BreezyDesktopEffect::setDisplaySpacing(qreal spacing) {
+ if (spacing != m_displaySpacing) {
+ m_displaySpacing = spacing;
+ Q_EMIT displaySpacingChanged();
+ }
+}
+
qreal BreezyDesktopEffect::diagonalFOV() const {
return m_diagonalFOV;
}
diff --git a/kwin/src/breezydesktopeffect.h b/kwin/src/breezydesktopeffect.h
index 77db59a..eb6470a 100644
--- a/kwin/src/breezydesktopeffect.h
+++ b/kwin/src/breezydesktopeffect.h
@@ -26,6 +26,7 @@ namespace KWin
Q_PROPERTY(QList displayResolution READ displayResolution NOTIFY devicePropertiesChanged)
Q_PROPERTY(qreal focusedDisplayDistance READ focusedDisplayDistance NOTIFY displayDistanceChanged)
Q_PROPERTY(qreal allDisplaysDistance READ allDisplaysDistance NOTIFY displayDistanceChanged)
+ Q_PROPERTY(qreal displaySpacing READ displaySpacing NOTIFY displaySpacingChanged)
Q_PROPERTY(qreal diagonalFOV READ diagonalFOV NOTIFY devicePropertiesChanged)
Q_PROPERTY(qreal lensDistanceRatio READ lensDistanceRatio NOTIFY devicePropertiesChanged)
Q_PROPERTY(bool sbsEnabled READ sbsEnabled NOTIFY devicePropertiesChanged)
@@ -55,6 +56,8 @@ namespace KWin
void setFocusedDisplayDistance(qreal distance);
qreal allDisplaysDistance() const;
void setAllDisplaysDistance(qreal distance);
+ qreal displaySpacing() const;
+ void setDisplaySpacing(qreal spacing);
qreal diagonalFOV() const;
qreal lensDistanceRatio() const;
bool sbsEnabled() const;
@@ -75,6 +78,7 @@ namespace KWin
Q_SIGNALS:
void displayDistanceChanged();
+ void displaySpacingChanged();
void enabledStateChanged();
void zoomOnFocusChanged();
void imuRotationsChanged();
@@ -112,6 +116,7 @@ namespace KWin
QTimer *m_cursorUpdateTimer = nullptr;
qreal m_focusedDisplayDistance = 0.85;
qreal m_allDisplaysDistance = 1.05;
+ qreal m_displaySpacing = 0.0;
QList