From e2537a153dbbd7669a61838afb46da77a77e2889 Mon Sep 17 00:00:00 2001 From: wheaney <42350981+wheaney@users.noreply.github.com> Date: Sat, 15 Mar 2025 22:57:13 -0700 Subject: [PATCH] Add a backports submodule directory and backport build process --- .gitignore | 1 - .gitmodules | 8 + bin/breezy_gnome_setup | 9 +- bin/package_gnome | 19 +- gnome-44-max.patch | 477 ----------------------------------- gnome/backports/gnome-44-max | 1 + gnome/backports/gnome-45 | 1 + 7 files changed, 24 insertions(+), 492 deletions(-) delete mode 100644 gnome-44-max.patch create mode 160000 gnome/backports/gnome-44-max create mode 160000 gnome/backports/gnome-45 diff --git a/.gitignore b/.gitignore index d50ac39..51c61dc 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,3 @@ __pycache__ gschemas.compiled out/ *.po~ -gnome-44-max/ diff --git a/.gitmodules b/.gitmodules index e7a2906..4c613c2 100644 --- a/.gitmodules +++ b/.gitmodules @@ -11,3 +11,11 @@ [submodule "ui/modules/PyXRLinuxDriverIPC"] path = ui/modules/PyXRLinuxDriverIPC url = https://github.com/wheaney/PyXRLinuxDriverIPC.git +[submodule "gnome/backports/gnome-44-max"] + path = gnome/backports/gnome-44-max + url = https://github.com/wheaney/breezy-desktop + branch = gnome-44-max +[submodule "gnome/backports/gnome-45"] + path = gnome/backports/gnome-45 + url = https://github.com/wheaney/breezy-desktop + branch = gnome-45 diff --git a/bin/breezy_gnome_setup b/bin/breezy_gnome_setup index fc0c3a0..f93c496 100755 --- a/bin/breezy_gnome_setup +++ b/bin/breezy_gnome_setup @@ -23,7 +23,13 @@ check_command "gnome-shell" ARCH=$(uname -m) FILE_NAME="breezyGNOME-$ARCH.tar.gz" -if [ "$(gnome-shell --version | cut -d' ' -f3 | cut -d'.' -f1)" -lt 45 ]; then +GNOME_VERSION=$(gnome-shell --version | cut -d' ' -f3 | cut -d'.' -f1) +VERSION_SPECIFIC_FILENAME="breezyGNOME-$GNOME_VERSION-$ARCH.tar.gz" +LATEST_RELEASE=$(curl -s "https://api.github.com/repos/wheaney/breezy-desktop/releases/latest") +if echo "$LATEST_RELEASE" | jq -e --arg filename "$VERSION_SPECIFIC_FILENAME" '.assets[] | select(.name == $filename)' > /dev/null; then + echo "Performing setup for GNOME $GNOME_VERSION ($ARCH)" + FILE_NAME=$VERSION_SPECIFIC_FILENAME +elif [ "$GNOME_VERSION" -lt 45 ]; then echo "Performing setup for GNOME 44 and below ($ARCH)" FILE_NAME="breezyGNOME-44-max-$ARCH.tar.gz" else @@ -32,7 +38,6 @@ fi start_dir=$(pwd) - # create temp directory tmp_dir=$(mktemp -d -t breezy-gnome-XXXXXXXXXX) pushd $tmp_dir > /dev/null diff --git a/bin/package_gnome b/bin/package_gnome index ce388c3..b79b467 100755 --- a/bin/package_gnome +++ b/bin/package_gnome @@ -10,26 +10,21 @@ SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd) ROOT_DIR=$(realpath $SCRIPT_DIR/..) VULKAN_DIR=$ROOT_DIR/vulkan -if [ -z "$GNOME_44_MAX" ]; then +if [ -z "$GNOME_BACKPORT" ]; then # standard build for GNOME 45 and up echo "Building Breezy GNOME for $ARCH, GNOME versions 45 and up" GNOME_DIR=$ROOT_DIR/gnome BUILD_FILE_NAME=breezyGNOME-$ARCH.tar.gz else - # special patched build for GNOME 44 and below - echo "Building Breezy GNOME for $ARCH, GNOME versions 44 and below" + # special build process for backports + echo "Building Breezy GNOME backport \"$GNOME_BACKPORT\" for $ARCH, GNOME versions 44 and below" - # use a special directory for the GNOME 44 max build, ignored by git - GNOME_DIR=$ROOT_DIR/gnome-44-max - rm -rf $GNOME_DIR - mkdir $GNOME_DIR - BUILD_FILE_NAME=breezyGNOME-44-max-$ARCH.tar.gz + # strip the prefix "gnome-" from the backport name, if it's there + GNOME_BACKPORT_NAME=${GNOME_BACKPORT#gnome-} - # copy the GNOME extension source code to the new directory and apply - # a patch that makes it compatible with GNOME 44 and below - cp -ra $ROOT_DIR/gnome/* $GNOME_DIR + GNOME_DIR=$ROOT_DIR/gnome/backports/$GNOME_BACKPORT/gnome/ + BUILD_FILE_NAME=breezyGNOME-$GNOME_BACKPORT_NAME-$ARCH.tar.gz rm -rf $GNOME_DIR/build - git apply gnome-44-max.patch fi GNOME_BUILD_DIR=$GNOME_DIR/build diff --git a/gnome-44-max.patch b/gnome-44-max.patch deleted file mode 100644 index 2b12d3c..0000000 --- a/gnome-44-max.patch +++ /dev/null @@ -1,477 +0,0 @@ -diff --git a/gnome-44-max/bin/setup b/gnome-44-max/bin/setup -index bd4c8b5..2cf0a03 100755 ---- a/gnome-44-max/bin/setup -+++ b/gnome-44-max/bin/setup -@@ -84,8 +84,10 @@ echo "Copying the manifest file to ${BREEZY_GNOME_DATA_DIR}" - mkdir -p $BREEZY_GNOME_DATA_DIR - cp manifest $BREEZY_GNOME_DATA_DIR - --echo "Installing the breezydesktop@xronlinux.com GNOME extension" --gnome-extensions install --force breezydesktop@xronlinux.com.shell-extension.zip -+EXTENSION_UUID="breezydesktop@xronlinux.com" -+echo "Installing the $EXTENSION_UUID GNOME extension" -+gnome-extensions install --force "$EXTENSION_UUID.shell-extension.zip" -+glib-compile-schemas "$GNOME_SHELL_DATA_DIR/extensions/$EXTENSION_UUID/schemas" - - echo "Installing the Breezy Desktop UI application" - cp -r breezy_ui/data/* $XDG_DATA_HOME -diff --git a/gnome-44-max/src/cursor.js b/gnome-44-max/src/cursor.js -index 36ad7ee..41102a0 100644 ---- a/gnome-44-max/src/cursor.js -+++ b/gnome-44-max/src/cursor.js -@@ -15,11 +15,11 @@ - // You should have received a copy of the GNU General Public License - // along with this program. If not, see . - --import Clutter from 'gi://Clutter'; --import GObject from 'gi://GObject'; -+const Clutter = imports.gi.Clutter; -+const GObject = imports.gi.GObject; - - // Copied almost verbatim from ui/magnifier.js. --export const MouseSpriteContent = GObject.registerClass({ -+var MouseSpriteContent = GObject.registerClass({ - Implements: [Clutter.Content], - }, class MouseSpriteContent extends GObject.Object { - _init() { -diff --git a/gnome-44-max/src/cursormanager.js b/gnome-44-max/src/cursormanager.js -index dd4a77d..bbb8872 100644 ---- a/gnome-44-max/src/cursormanager.js -+++ b/gnome-44-max/src/cursormanager.js -@@ -1,11 +1,15 @@ --import Clutter from 'gi://Clutter'; --import Meta from 'gi://Meta'; --import * as PointerWatcher from 'resource:///org/gnome/shell/ui/pointerWatcher.js'; --import { MouseSpriteContent } from './cursor.js'; --import Globals from './globals.js'; -+const Clutter = imports.gi.Clutter; -+const Meta = imports.gi.Meta; -+const PointerWatcher = imports.ui.pointerWatcher; -+ -+const ExtensionUtils = imports.misc.extensionUtils; -+const Me = ExtensionUtils.getCurrentExtension(); -+ -+const Globals = Me.imports.globals; -+const { MouseSpriteContent } = Me.imports.cursor; - - // Taken from https://github.com/jkitching/soft-brightness-plus --export class CursorManager { -+var CursorManager = class CursorManager { - constructor(targetMonitors, refreshRate) { - this._targetMonitors = targetMonitors; - this._refreshRate = refreshRate; -diff --git a/gnome-44-max/src/devicedatastream.js b/gnome-44-max/src/devicedatastream.js -index e396403..f047067 100644 ---- a/gnome-44-max/src/devicedatastream.js -+++ b/gnome-44-max/src/devicedatastream.js -@@ -1,8 +1,12 @@ --import Gio from 'gi://Gio'; --import GObject from 'gi://GObject'; -+const Gio = imports.gi.Gio; -+const GObject = imports.gi.GObject; - --import Globals from './globals.js'; --import { -+const ExtensionUtils = imports.misc.extensionUtils; -+const Me = ExtensionUtils.getCurrentExtension(); -+ -+const Globals = Me.imports.globals; -+const { isValidKeepAlive, getEpochSec, toSec } = Me.imports.time; -+const { - dataViewEnd, - dataViewUint8, - dataViewBigUint, -@@ -14,8 +18,7 @@ import { - FLOAT_SIZE, - UINT_SIZE, - UINT8_SIZE --} from "./ipc.js"; --import { isValidKeepAlive, getEpochSec, toSec } from "./time.js"; -+} = Me.imports.ipc; - - const IPC_FILE_PATH = "/dev/shm/breezy_desktop_imu"; - const KEEPALIVE_REFRESH_INTERVAL_SEC = 1; -@@ -75,7 +78,7 @@ function nextDebugIMUQuaternion(counter) { - return [x, y, z, w]; - } - --export const DeviceDataStream = GObject.registerClass({ -+var DeviceDataStream = GObject.registerClass({ - Properties: { - 'breezy-desktop-running': GObject.ParamSpec.boolean( - 'breezy-desktop-running', -diff --git a/gnome-44-max/src/extension.js b/gnome-44-max/src/extension.js -index b3363d5..d5be026 100644 ---- a/gnome-44-max/src/extension.js -+++ b/gnome-44-max/src/extension.js -@@ -1,28 +1,32 @@ --import Gio from 'gi://Gio'; --import GLib from 'gi://GLib'; --import Meta from 'gi://Meta'; --import Shell from 'gi://Shell'; --import St from 'gi://St'; -- --import { CursorManager } from './cursormanager.js'; --import { DeviceDataStream } from './devicedatastream.js'; --import Globals from './globals.js'; --import { Logger } from './logger.js'; --import { MonitorManager, NESTED_MONITOR_PRODUCT, SUPPORTED_MONITOR_PRODUCTS, VIRTUAL_MONITOR_PRODUCT } from './monitormanager.js'; --import { VirtualDisplaysActor } from './virtualdisplaysactor.js'; -- --import {Extension} from 'resource:///org/gnome/shell/extensions/extension.js'; --import * as Main from 'resource:///org/gnome/shell/ui/main.js'; -+const Clutter = imports.gi.Clutter; -+const Gio = imports.gi.Gio; -+const GLib = imports.gi.GLib; -+const Meta = imports.gi.Meta; -+const Shell = imports.gi.Shell; -+const St = imports.gi.St; -+ -+const Main = imports.ui.main; -+ -+const ExtensionUtils = imports.misc.extensionUtils; -+const Me = ExtensionUtils.getCurrentExtension(); -+ -+const Globals = Me.imports.globals; -+const { CursorManager } = Me.imports.cursormanager; -+const { DeviceDataStream } = Me.imports.devicedatastream; -+const { Logger } = Me.imports.logger; -+const { MonitorManager, NESTED_MONITOR_PRODUCT, SUPPORTED_MONITOR_PRODUCTS, VIRTUAL_MONITOR_PRODUCT } = Me.imports.monitormanager; -+const { VirtualDisplaysActor } = Me.imports.virtualdisplaysactor; -+ - - const BIN_HOME = GLib.getenv('XDG_BIN_HOME') || GLib.build_filenamev([GLib.get_home_dir(), '.local', 'bin']); - const XDG_CLI_PATH = GLib.build_filenamev([BIN_HOME, 'xr_driver_cli']); - const ALT_CLI_PATH = '/usr/bin/xr_driver_cli'; - --export default class BreezyDesktopExtension extends Extension { -- constructor(metadata, uuid) { -- super(metadata, uuid); -- -- this.settings = this.getSettings(); -+class BreezyDesktopExtension { -+ constructor(extensionPath) { -+ this.path = extensionPath; -+ -+ this.settings = ExtensionUtils.getSettings(); - - // Set/destroyed by enable/disable - this._cursor_manager = null; -@@ -645,6 +649,6 @@ export default class BreezyDesktopExtension extends Extension { - } - } - --function init() { -- return new Extension(); -+function init(meta) { -+ return new BreezyDesktopExtension(meta.path); - } -diff --git a/gnome-44-max/src/globals.js b/gnome-44-max/src/globals.js -index f11451c..4b5c65b 100644 ---- a/gnome-44-max/src/globals.js -+++ b/gnome-44-max/src/globals.js -@@ -1,7 +1,6 @@ --const Globals = { -+var Globals = { - logger: null, - ipc_file: null, // Gio.File instance, file exists if set - extension_dir: null, // string path - data_stream: null, // DeviceDataStream instance --} --export default Globals; -\ No newline at end of file -+} -\ No newline at end of file -diff --git a/gnome-44-max/src/ipc.js b/gnome-44-max/src/ipc.js -index a729368..d5f7ab0 100644 ---- a/gnome-44-max/src/ipc.js -+++ b/gnome-44-max/src/ipc.js -@@ -1,30 +1,30 @@ --export const UINT8_SIZE = 1; --export const BOOL_SIZE = UINT8_SIZE; --export const UINT_SIZE = 4; --export const FLOAT_SIZE = 4; -+var UINT8_SIZE = 1; -+var BOOL_SIZE = UINT8_SIZE; -+var UINT_SIZE = 4; -+var FLOAT_SIZE = 4; - --export const DATA_VIEW_INFO_OFFSET_INDEX = 0; --export const DATA_VIEW_INFO_SIZE_INDEX = 1; --export const DATA_VIEW_INFO_COUNT_INDEX = 2; -+var DATA_VIEW_INFO_OFFSET_INDEX = 0; -+var DATA_VIEW_INFO_SIZE_INDEX = 1; -+var DATA_VIEW_INFO_COUNT_INDEX = 2; - - // computes the end offset, exclusive --export function dataViewEnd(dataViewInfo) { -+function dataViewEnd(dataViewInfo) { - return dataViewInfo[DATA_VIEW_INFO_OFFSET_INDEX] + dataViewInfo[DATA_VIEW_INFO_SIZE_INDEX] * dataViewInfo[DATA_VIEW_INFO_COUNT_INDEX]; - } - --export function dataViewUint8(dataView, dataViewInfo) { -+function dataViewUint8(dataView, dataViewInfo) { - return dataView.getUint8(dataViewInfo[DATA_VIEW_INFO_OFFSET_INDEX]); - } - --export function dataViewUint(dataView, dataViewInfo) { -+function dataViewUint(dataView, dataViewInfo) { - return dataView.getUint32(dataViewInfo[DATA_VIEW_INFO_OFFSET_INDEX], true); - } - --export function dataViewBigUint(dataView, dataViewInfo) { -+function dataViewBigUint(dataView, dataViewInfo) { - return Number(dataView.getBigUint64(dataViewInfo[DATA_VIEW_INFO_OFFSET_INDEX], true)); - } - --export function dataViewUint32Array(dataView, dataViewInfo) { -+function dataViewUint32Array(dataView, dataViewInfo) { - const uintArray = [] - let offset = dataViewInfo[DATA_VIEW_INFO_OFFSET_INDEX]; - for (let i = 0; i < dataViewInfo[DATA_VIEW_INFO_COUNT_INDEX]; i++) { -@@ -34,7 +34,7 @@ export function dataViewUint32Array(dataView, dataViewInfo) { - return uintArray; - } - --export function dataViewUint8Array(dataView, dataViewInfo) { -+function dataViewUint8Array(dataView, dataViewInfo) { - const uintArray = [] - let offset = dataViewInfo[DATA_VIEW_INFO_OFFSET_INDEX]; - for (let i = 0; i < dataViewInfo[DATA_VIEW_INFO_SIZE_INDEX] * dataViewInfo[DATA_VIEW_INFO_COUNT_INDEX]; i++) { -@@ -44,11 +44,11 @@ export function dataViewUint8Array(dataView, dataViewInfo) { - return uintArray; - } - --export function dataViewFloat(dataView, dataViewInfo) { -+function dataViewFloat(dataView, dataViewInfo) { - return dataView.getFloat32(dataViewInfo[DATA_VIEW_INFO_OFFSET_INDEX], true); - } - --export function dataViewFloatArray(dataView, dataViewInfo) { -+function dataViewFloatArray(dataView, dataViewInfo) { - const floatArray = [] - let offset = dataViewInfo[DATA_VIEW_INFO_OFFSET_INDEX]; - for (let i = 0; i < dataViewInfo[DATA_VIEW_INFO_COUNT_INDEX]; i++) { -diff --git a/gnome-44-max/src/logger.js b/gnome-44-max/src/logger.js -index 5bdf115..138a98a 100644 ---- a/gnome-44-max/src/logger.js -+++ b/gnome-44-max/src/logger.js -@@ -14,15 +14,15 @@ - // You should have received a copy of the GNU General Public License - // along with this program. If not, see . - --import * as Config from 'resource:///org/gnome/shell/misc/config.js'; --import Gio from 'gi://Gio'; --import GLib from 'gi://GLib'; --import GObject from 'gi://GObject'; --import System from 'system'; -+const Config = imports.misc.config; -+const Gio = imports.gi.Gio; -+const GLib = imports.gi.GLib; -+const GObject = imports.gi.GObject; -+const System = imports.system; - - const LOG_DIR_NAME = 'breezy_gnome/logs/gjs'; - --export const Logger = GObject.registerClass({ -+var Logger = GObject.registerClass({ - GTypeName: 'Logger', - Properties: { - 'title': GObject.ParamSpec.string( -diff --git a/gnome-44-max/src/math.js b/gnome-44-max/src/math.js -index f1c9983..9a98c7b 100644 ---- a/gnome-44-max/src/math.js -+++ b/gnome-44-max/src/math.js -@@ -1,9 +1,9 @@ --export function degreeToRadian(degree) { -+function degreeToRadian(degree) { - return degree * Math.PI / 180; - } - - // FOV in radians is spherical, so doesn't follow Pythagoras' theorem --export function diagonalToCrossFOVs(diagonalFOVRadians, aspectRatio) { -+function diagonalToCrossFOVs(diagonalFOVRadians, aspectRatio) { - // first convert from a spherical FOV to a diagonal FOV on a flat plane at a generic distance of 1.0 - const flatDiagonalFOV = 2 * Math.tan(diagonalFOVRadians / 2); - -diff --git a/gnome-44-max/src/metadata.json b/gnome-44-max/src/metadata.json -index 0f8073b..bc26f97 100644 ---- a/gnome-44-max/src/metadata.json -+++ b/gnome-44-max/src/metadata.json -@@ -5,7 +5,7 @@ - "settings-schema": "com.xronlinux.BreezyDesktop", - "session-modes": ["user"], - "shell-version": [ -- "45", "46", "47" -+ "42", "43", "44" - ], - "url": "https://github.com/wheaney/breezy-desktop" - } -\ No newline at end of file -diff --git a/gnome-44-max/src/monitormanager.js b/gnome-44-max/src/monitormanager.js -index 4c57171..080924d 100644 ---- a/gnome-44-max/src/monitormanager.js -+++ b/gnome-44-max/src/monitormanager.js -@@ -16,16 +16,19 @@ - // You should have received a copy of the GNU General Public License - // along with this program. If not, see . - --import Gio from 'gi://Gio'; --import GObject from 'gi://GObject'; -+const Gio = imports.gi.Gio; -+const GObject = imports.gi.GObject; - --import * as Main from 'resource:///org/gnome/shell/ui/main.js'; -+const Main = imports.ui.main; - --import Globals from './globals.js'; -+const ExtensionUtils = imports.misc.extensionUtils; -+const Me = ExtensionUtils.getCurrentExtension(); - --export const NESTED_MONITOR_PRODUCT = 'MetaMonitor'; --export const VIRTUAL_MONITOR_PRODUCT = 'Virtual remote monitor'; --export const SUPPORTED_MONITOR_PRODUCTS = [ -+const Globals = Me.imports.globals; -+ -+var NESTED_MONITOR_PRODUCT = 'MetaMonitor'; -+var VIRTUAL_MONITOR_PRODUCT = 'Virtual remote monitor'; -+var SUPPORTED_MONITOR_PRODUCTS = [ - 'VITURE', - 'nreal air', - 'Air', -@@ -58,7 +61,7 @@ function getDisplayConfigProxy(extPath) { - return cachedDisplayConfigProxy; - } - --export function newDisplayConfig(extPath, callback) { -+function newDisplayConfig(extPath, callback) { - const DisplayConfigProxy = getDisplayConfigProxy(extPath); - new DisplayConfigProxy( - Gio.DBus.session, -@@ -366,7 +369,7 @@ function performOptimalModeCheck(displayConfigProxy, connectorName, headsetAsPri - } - - // Monitor change handling --export const MonitorManager = GObject.registerClass({ -+var MonitorManager = GObject.registerClass({ - Properties: { - 'use-optimal-monitor-config': GObject.ParamSpec.boolean( - 'use-optimal-monitor-config', -diff --git a/gnome-44-max/src/shader.js b/gnome-44-max/src/shader.js -index f70c96d..352be40 100644 ---- a/gnome-44-max/src/shader.js -+++ b/gnome-44-max/src/shader.js -@@ -1,6 +1,6 @@ --import Gio from 'gi://Gio'; -+const Gio = imports.gi.Gio; - --export function getShaderSource(path) { -+function getShaderSource(path) { - const file = Gio.file_new_for_path(path); - const data = file.load_contents(null); - -diff --git a/gnome-44-max/src/time.js b/gnome-44-max/src/time.js -index 8c17207..fdfdac1 100644 ---- a/gnome-44-max/src/time.js -+++ b/gnome-44-max/src/time.js -@@ -1,11 +1,11 @@ --export function getEpochSec() { -+function getEpochSec() { - return toSec(Date.now()); - } - --export function toSec(milliseconds) { -+function toSec(milliseconds) { - return Math.floor(milliseconds / 1000); - } - --export function isValidKeepAlive(dateSec) { -+function isValidKeepAlive(dateSec) { - return Math.abs(getEpochSec() - dateSec) <= 1; - } -\ No newline at end of file -diff --git a/gnome-44-max/src/virtualdisplayeffect.js b/gnome-44-max/src/virtualdisplayeffect.js -index 26be71e..42da807 100644 ---- a/gnome-44-max/src/virtualdisplayeffect.js -+++ b/gnome-44-max/src/virtualdisplayeffect.js -@@ -1,16 +1,18 @@ --import Clutter from 'gi://Clutter' --import Cogl from 'gi://Cogl'; --import GLib from 'gi://GLib'; --import GObject from 'gi://GObject'; --import Shell from 'gi://Shell'; -+const Clutter = imports.gi.Clutter; -+const Cogl = imports.gi.Cogl; -+const GLib = imports.gi.GLib; -+const GObject = imports.gi.GObject; -+const Shell = imports.gi.Shell; - --import Globals from './globals.js'; --import { degreeToRadian, diagonalToCrossFOVs } from './math.js'; -+const ExtensionUtils = imports.misc.extensionUtils; -+const Me = ExtensionUtils.getCurrentExtension(); - -+const Globals = Me.imports.globals; -+const { degreeToRadian, diagonalToCrossFOVs } = Me.imports.math; - - // these need to mirror the values in XRLinuxDriver - // https://github.com/wheaney/XRLinuxDriver/blob/main/src/plugins/smooth_follow.c#L31 --export const SMOOTH_FOLLOW_SLERP_TIMELINE_MS = 1000; -+var SMOOTH_FOLLOW_SLERP_TIMELINE_MS = 1000; - const SMOOTH_FOLLOW_SLERP_FACTOR = Math.pow(1-0.999, 1/SMOOTH_FOLLOW_SLERP_TIMELINE_MS); - - // this mirror's how the driver's slerp function progresses so our effect will match it -@@ -26,7 +28,7 @@ function lookAheadMS(imuDateMs, lookAheadCfg, override) { - return (override === -1 ? lookAheadCfg[0] : override) + dataAge; - } - --export const VirtualDisplayEffect = GObject.registerClass({ -+var VirtualDisplayEffect = GObject.registerClass({ - Properties: { - 'monitor-index': GObject.ParamSpec.int( - 'monitor-index', -diff --git a/gnome-44-max/src/virtualdisplaysactor.js b/gnome-44-max/src/virtualdisplaysactor.js -index 538fa8c..fa134f1 100644 ---- a/gnome-44-max/src/virtualdisplaysactor.js -+++ b/gnome-44-max/src/virtualdisplaysactor.js -@@ -1,18 +1,19 @@ --import Clutter from 'gi://Clutter' --import Cogl from 'gi://Cogl'; --import GdkPixbuf from 'gi://GdkPixbuf'; --import GLib from 'gi://GLib'; --import GObject from 'gi://GObject'; --import Mtk from 'gi://Mtk'; --import Shell from 'gi://Shell'; --import St from 'gi://St'; -+const Clutter = imports.gi.Clutter; -+const Cogl = imports.gi.Cogl; -+const GdkPixbuf = imports.gi.GdkPixbuf; -+const GLib = imports.gi.GLib; -+const GObject = imports.gi.GObject; -+const Shell = imports.gi.Shell; -+const St = imports.gi.St; - --import { VirtualDisplayEffect, SMOOTH_FOLLOW_SLERP_TIMELINE_MS } from './virtualdisplayeffect.js'; --import { degreeToRadian, diagonalToCrossFOVs } from './math.js'; -+const Main = imports.ui.main; - --import * as Main from 'resource:///org/gnome/shell/ui/main.js'; -+const ExtensionUtils = imports.misc.extensionUtils; -+const Me = ExtensionUtils.getCurrentExtension(); - --import Globals from './globals.js'; -+const { VirtualDisplayEffect, SMOOTH_FOLLOW_SLERP_TIMELINE_MS } = Me.imports.virtualdisplayeffect; -+const Globals = Me.imports.globals; -+const { degreeToRadian, diagonalToCrossFOVs } = Me.imports.math; - - function applyQuaternionToVector(vector, quaternion) { - const t = [ -@@ -394,7 +395,7 @@ function verticalMonitorSort(monitors) { - }); - } - --export const VirtualDisplaysActor = GObject.registerClass({ -+var VirtualDisplaysActor = GObject.registerClass({ - Properties: { - 'target-monitor': GObject.ParamSpec.jsobject( - 'target-monitor', diff --git a/gnome/backports/gnome-44-max b/gnome/backports/gnome-44-max new file mode 160000 index 0000000..1445122 --- /dev/null +++ b/gnome/backports/gnome-44-max @@ -0,0 +1 @@ +Subproject commit 144512201119b6b0522e59a44c7f83461f77f80d diff --git a/gnome/backports/gnome-45 b/gnome/backports/gnome-45 new file mode 160000 index 0000000..ce6f7dd --- /dev/null +++ b/gnome/backports/gnome-45 @@ -0,0 +1 @@ +Subproject commit ce6f7dd7e473100cf15d97e657cff54d0c17f62d