diff --git a/kwin/src/breezydesktopconfig.kcfg b/kwin/src/breezydesktopconfig.kcfg
index 2a8ec8b..17d6b9a 100644
--- a/kwin/src/breezydesktopconfig.kcfg
+++ b/kwin/src/breezydesktopconfig.kcfg
@@ -57,6 +57,13 @@
0=None, 1=Medium, 2=High, 3=Very High
+
+ 1
+ 0
+ 2
+
+ How to handle the physical (built-in) monitors: 0=Off, 1=On - not mirrored in XR, 2=On - mirrored in XR (may impact performance)
+
true
diff --git a/kwin/src/breezydesktopeffect.cpp b/kwin/src/breezydesktopeffect.cpp
index e27830d..145b067 100644
--- a/kwin/src/breezydesktopeffect.cpp
+++ b/kwin/src/breezydesktopeffect.cpp
@@ -203,12 +203,14 @@ void BreezyDesktopEffect::reconfigure(ReconfigureFlags)
int wrap = BreezyDesktopConfig::displayWrappingScheme();
int aaQuality = BreezyDesktopConfig::antialiasingQuality();
bool removeVD = BreezyDesktopConfig::removeVirtualDisplaysOnDisable();
+ int physDisplaysMode = BreezyDesktopConfig::physicalDisplaysMode();
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 (m_antialiasingQuality != aaQuality) { m_antialiasingQuality = aaQuality; Q_EMIT antialiasingQualityChanged(); }
if (m_removeVirtualDisplaysOnDisable != removeVD) { m_removeVirtualDisplaysOnDisable = removeVD; Q_EMIT removeVirtualDisplaysOnDisableChanged(); }
+ if (m_physicalDisplaysMode != physDisplaysMode) { m_physicalDisplaysMode = physDisplaysMode; Q_EMIT physicalDisplaysModeChanged(); }
if (changed) Q_EMIT displayOffsetChanged();
}
@@ -427,6 +429,10 @@ bool BreezyDesktopEffect::removeVirtualDisplaysOnDisable() const {
return m_removeVirtualDisplaysOnDisable;
}
+int BreezyDesktopEffect::physicalDisplaysMode() const {
+ return m_physicalDisplaysMode;
+}
+
bool BreezyDesktopEffect::checkParityByte(const char* data) {
const uint8_t parityByte = static_cast(data[DataView::IMU_PARITY_BYTE[DataView::OFFSET_INDEX]]);
uint8_t parity = 0;
diff --git a/kwin/src/breezydesktopeffect.h b/kwin/src/breezydesktopeffect.h
index f49dba8..3ac3fbf 100644
--- a/kwin/src/breezydesktopeffect.h
+++ b/kwin/src/breezydesktopeffect.h
@@ -37,6 +37,7 @@ namespace KWin
Q_PROPERTY(bool customBannerEnabled READ customBannerEnabled NOTIFY devicePropertiesChanged)
Q_PROPERTY(int antialiasingQuality READ antialiasingQuality NOTIFY antialiasingQualityChanged)
Q_PROPERTY(bool removeVirtualDisplaysOnDisable READ removeVirtualDisplaysOnDisable NOTIFY removeVirtualDisplaysOnDisableChanged)
+ Q_PROPERTY(int physicalDisplaysMode READ physicalDisplaysMode NOTIFY physicalDisplaysModeChanged)
public:
@@ -75,6 +76,7 @@ namespace KWin
bool customBannerEnabled() const;
int antialiasingQuality() const;
bool removeVirtualDisplaysOnDisable() const;
+ int physicalDisplaysMode() const;
void showCursor();
void hideCursor();
@@ -104,6 +106,7 @@ namespace KWin
void devicePropertiesChanged();
void antialiasingQualityChanged();
void removeVirtualDisplaysOnDisableChanged();
+ void physicalDisplaysModeChanged();
protected:
QVariantMap initialProperties(Output *screen) override;
@@ -142,6 +145,7 @@ namespace KWin
int m_displayWrappingScheme = 0; // 0=auto,1=horizontal,2=vertical,3=flat
int m_antialiasingQuality = 3; // 0=None, 1=Medium, 2=High, 3=VeryHigh
bool m_removeVirtualDisplaysOnDisable = true;
+ int m_physicalDisplaysMode = 1; // 0=Off,1=On no mirror,2=On mirrored
QList