From 00f16c79009fe1d39b6a8d812181e5ed8abd9f7d Mon Sep 17 00:00:00 2001 From: wheaney <42350981+wheaney@users.noreply.github.com> Date: Thu, 12 Feb 2026 08:52:30 -0800 Subject: [PATCH] Update all Breezy setup scripts and apps to request the necessary license features, v2.8.0 --- VERSION | 2 +- gnome/bin/setup | 5 ++++- gnome/src/extension.js | 3 +++ kwin/bin/setup | 3 +++ kwin/src/breezydesktopeffect.cpp | 10 ++++++++++ kwin/src/kcm/breezydesktopeffectkcm.cpp | 10 ++++++++++ ui/src/main.py | 2 +- vulkan/bin/setup | 5 ++++- 8 files changed, 36 insertions(+), 4 deletions(-) diff --git a/VERSION b/VERSION index 37c2961..834f262 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.7.2 +2.8.0 diff --git a/gnome/bin/setup b/gnome/bin/setup index e61c132..8761085 100755 --- a/gnome/bin/setup +++ b/gnome/bin/setup @@ -168,4 +168,7 @@ else sudo bin/xr_driver_setup -v $1 $(pwd)/xrDriver.tar.gz fi -echo "END - xr_driver_setup" \ No newline at end of file +echo "END - xr_driver_setup" + +echo "Setting up productivity features" +printf "request_features=productivity_basic\n" >> /dev/shm/xr_driver_control 2>/dev/null || true \ No newline at end of file diff --git a/gnome/src/extension.js b/gnome/src/extension.js index cb2c827..cb22608 100644 --- a/gnome/src/extension.js +++ b/gnome/src/extension.js @@ -67,6 +67,9 @@ export default class BreezyDesktopExtension extends Extension { try { Globals.extension_dir = this.path; + // safe to request on each load, acts as a no-op if already present + this._write_control('request_features', 'productivity_basic'); + Globals.data_stream.start(); this._monitor_manager = new MonitorManager({ diff --git a/kwin/bin/setup b/kwin/bin/setup index ba30508..e39de05 100755 --- a/kwin/bin/setup +++ b/kwin/bin/setup @@ -199,4 +199,7 @@ fi echo "END - xr_driver_setup" +echo "Setting up productivity features" +printf "request_features=productivity_basic\n" >> /dev/shm/xr_driver_control 2>/dev/null || true + printf "\n\033[1;33m!!! IMPORTANT !!!\033[0m You must log out and back in, then enable Breezy Desktop from the Desktop Effects in System Settings\n\n" \ No newline at end of file diff --git a/kwin/src/breezydesktopeffect.cpp b/kwin/src/breezydesktopeffect.cpp index c1256e8..9916980 100644 --- a/kwin/src/breezydesktopeffect.cpp +++ b/kwin/src/breezydesktopeffect.cpp @@ -112,6 +112,16 @@ namespace KWin BreezyDesktopEffect::BreezyDesktopEffect() { qCCritical(KWIN_XR) << "\t\t\tBreezy - constructor"; + + // safe to request on each load, acts as a no-op if already present + { + QJsonObject flags; + QJsonArray requested; + requested.append(QStringLiteral("productivity_basic")); + flags.insert(QStringLiteral("request_features"), requested); + XRDriverIPC::instance().writeControlFlags(flags); + } + qmlRegisterUncreatableType("org.kde.kwin.effect.breezy_desktop", 1, 0, "BreezyDesktopEffect", QStringLiteral("BreezyDesktop cannot be created in QML")); setupGlobalShortcut( diff --git a/kwin/src/kcm/breezydesktopeffectkcm.cpp b/kwin/src/kcm/breezydesktopeffectkcm.cpp index 223c43e..4124664 100644 --- a/kwin/src/kcm/breezydesktopeffectkcm.cpp +++ b/kwin/src/kcm/breezydesktopeffectkcm.cpp @@ -204,6 +204,15 @@ BreezyDesktopEffectConfig::BreezyDesktopEffectConfig(QObject *parent, const KPlu ui.setupUi(widget()); addConfig(BreezyDesktopConfig::self(), widget()); + // safe to request on each load, acts as a no-op if already present + { + QJsonObject flags; + QJsonArray requested; + requested.append(QStringLiteral("productivity_basic")); + flags.insert(QStringLiteral("request_features"), requested); + XRDriverIPC::instance().writeControlFlags(flags); + } + // Advanced tab: measurement units selector (stored as "cm" or "in") if (ui.comboMeasurementUnits) { ui.comboMeasurementUnits->clear(); @@ -725,6 +734,7 @@ void BreezyDesktopEffectConfig::pollDriverState() auto configJsonOpt = XRDriverIPC::instance().retrieveConfig(); if (!stateJsonOpt || !configJsonOpt) return; auto stateJson = stateJsonOpt.value(); + m_connectedDeviceBrand = stateJson.value(QStringLiteral("connected_device_brand")).toString(); m_connectedDeviceModel = stateJson.value(QStringLiteral("connected_device_model")).toString(); m_connectedDeviceFullDistanceCm = stateJson.value(QStringLiteral("connected_device_full_distance_cm")).toDouble(0.0); diff --git a/ui/src/main.py b/ui/src/main.py index 61f3cc2..720abe6 100644 --- a/ui/src/main.py +++ b/ui/src/main.py @@ -80,7 +80,7 @@ class BreezydesktopApplication(Adw.Application): # always do this on start-up since the driver sometimes fails to update the license on boot, # prevent showing a license warning unnecessarily - XRDriverIPC.get_instance().write_control_flags({'refresh_device_license': True}) + XRDriverIPC.get_instance().write_control_flags({'request_features': ['productivity_basic']}) def do_activate(self): """Called when the application is activated. diff --git a/vulkan/bin/setup b/vulkan/bin/setup index 87170fc..e3a3bd4 100755 --- a/vulkan/bin/setup +++ b/vulkan/bin/setup @@ -166,4 +166,7 @@ else bin/xr_driver_setup -v $1 $(pwd)/xrDriver.tar.gz fi -echo "END - xr_driver_setup" \ No newline at end of file +echo "END - xr_driver_setup" + +echo "Setting up gaming features" +printf "request_features=sbs,smooth_follow\n" >> /dev/shm/xr_driver_control 2>/dev/null || true \ No newline at end of file