diff --git a/kwin/src/breezydesktopconfig.kcfg b/kwin/src/breezydesktopconfig.kcfg
index 8d0824d..3e47677 100644
--- a/kwin/src/breezydesktopconfig.kcfg
+++ b/kwin/src/breezydesktopconfig.kcfg
@@ -29,5 +29,26 @@
How far apart the displays are visually (not logically)
+
+ 0
+ -250
+ 250
+
+ Horizontal offset as a percent of the viewport width (-2.50 to 2.50)
+
+
+ 0
+ -250
+ 250
+
+ Vertical offset as a percent of the viewport height (-2.50 to 2.50)
+
+
+ 0
+ 0
+ 3
+
+ How to arrange monitors: 0=Auto, 1=Horizontal, 2=Vertical, 3=Flat
+
diff --git a/kwin/src/breezydesktopeffect.cpp b/kwin/src/breezydesktopeffect.cpp
index 0ae5596..330ece4 100644
--- a/kwin/src/breezydesktopeffect.cpp
+++ b/kwin/src/breezydesktopeffect.cpp
@@ -153,6 +153,14 @@ void BreezyDesktopEffect::reconfigure(ReconfigureFlags)
setAllDisplaysDistance(BreezyDesktopConfig::allDisplaysDistance() / 100.0f);
setDisplaySpacing(BreezyDesktopConfig::displaySpacing() / 1000.0f);
setZoomOnFocusEnabled(BreezyDesktopConfig::zoomOnFocusEnabled());
+ qreal horiz = BreezyDesktopConfig::displayHorizontalOffset() / 100.0f;
+ qreal vert = BreezyDesktopConfig::displayVerticalOffset() / 100.0f;
+ int wrap = BreezyDesktopConfig::displayWrappingScheme();
+ bool changed = false;
+ if (!qFuzzyCompare(m_displayHorizontalOffset, horiz)) { m_displayHorizontalOffset = horiz; changed = true; }
+ if (!qFuzzyCompare(m_displayVerticalOffset, vert)) { m_displayVerticalOffset = vert; changed = true; }
+ if (m_displayWrappingScheme != wrap) { m_displayWrappingScheme = wrap; Q_EMIT displayWrappingSchemeChanged(); }
+ if (changed) Q_EMIT displayOffsetChanged();
}
QVariantMap BreezyDesktopEffect::initialProperties(Output *screen)
@@ -327,6 +335,18 @@ void BreezyDesktopEffect::setDisplaySpacing(qreal spacing) {
}
}
+qreal BreezyDesktopEffect::displayHorizontalOffset() const {
+ return m_displayHorizontalOffset;
+}
+
+qreal BreezyDesktopEffect::displayVerticalOffset() const {
+ return m_displayVerticalOffset;
+}
+
+int BreezyDesktopEffect::displayWrappingScheme() const {
+ return m_displayWrappingScheme;
+}
+
qreal BreezyDesktopEffect::diagonalFOV() const {
return m_diagonalFOV;
}
diff --git a/kwin/src/breezydesktopeffect.h b/kwin/src/breezydesktopeffect.h
index 4f232b5..6011c42 100644
--- a/kwin/src/breezydesktopeffect.h
+++ b/kwin/src/breezydesktopeffect.h
@@ -27,6 +27,9 @@ namespace KWin
Q_PROPERTY(qreal focusedDisplayDistance READ focusedDisplayDistance NOTIFY focusedDisplayDistanceChanged)
Q_PROPERTY(qreal allDisplaysDistance READ allDisplaysDistance NOTIFY allDisplaysDistanceChanged)
Q_PROPERTY(qreal displaySpacing READ displaySpacing NOTIFY displaySpacingChanged)
+ Q_PROPERTY(qreal displayHorizontalOffset READ displayHorizontalOffset NOTIFY displayOffsetChanged)
+ Q_PROPERTY(qreal displayVerticalOffset READ displayVerticalOffset NOTIFY displayOffsetChanged)
+ Q_PROPERTY(int displayWrappingScheme READ displayWrappingScheme NOTIFY displayWrappingSchemeChanged)
Q_PROPERTY(qreal diagonalFOV READ diagonalFOV NOTIFY devicePropertiesChanged)
Q_PROPERTY(qreal lensDistanceRatio READ lensDistanceRatio NOTIFY devicePropertiesChanged)
Q_PROPERTY(bool sbsEnabled READ sbsEnabled NOTIFY devicePropertiesChanged)
@@ -58,6 +61,9 @@ namespace KWin
void setAllDisplaysDistance(qreal distance);
qreal displaySpacing() const;
void setDisplaySpacing(qreal spacing);
+ qreal displayHorizontalOffset() const;
+ qreal displayVerticalOffset() const;
+ int displayWrappingScheme() const;
qreal diagonalFOV() const;
qreal lensDistanceRatio() const;
bool sbsEnabled() const;
@@ -80,6 +86,8 @@ namespace KWin
void focusedDisplayDistanceChanged();
void allDisplaysDistanceChanged();
void displaySpacingChanged();
+ void displayOffsetChanged();
+ void displayWrappingSchemeChanged();
void enabledStateChanged();
void zoomOnFocusChanged();
void imuRotationsChanged();
@@ -119,6 +127,9 @@ namespace KWin
qreal m_focusedDisplayDistance = 0.85;
qreal m_allDisplaysDistance = 1.05;
qreal m_displaySpacing = 0.0;
+ qreal m_displayHorizontalOffset = 0.0;
+ qreal m_displayVerticalOffset = 0.0;
+ int m_displayWrappingScheme = 0; // 0=auto,1=horizontal,2=vertical,3=flat
QList