From 9bd034533fee4934a621313dea35843365c8c6a1 Mon Sep 17 00:00:00 2001 From: wheaney <42350981+wheaney@users.noreply.github.com> Date: Wed, 24 Apr 2024 21:59:56 -0700 Subject: [PATCH] Working recenter shortcut --- .gitignore | 1 - gnome/bin/setup-45.sh | 2 -- .../cursormanager.js | 1 - .../breezydesktop@org.xronlinux/extension.js | 18 +++++++++++++++--- .../breezydesktop@org.xronlinux/metadata.json | 1 + .../schemas/gschemas.compiled | Bin 0 -> 340 bytes ...hell.extensions.breezy-desktop.gschema.xml | 13 +++++++++++++ 7 files changed, 29 insertions(+), 7 deletions(-) create mode 100644 gnome/breezydesktop@org.xronlinux/schemas/gschemas.compiled create mode 100644 gnome/breezydesktop@org.xronlinux/schemas/org.gnome.shell.extensions.breezy-desktop.gschema.xml diff --git a/.gitignore b/.gitignore index 1119e10..92b8c92 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,2 @@ /vulkan/build/ /build/ -/gnome/setup-45.sh diff --git a/gnome/bin/setup-45.sh b/gnome/bin/setup-45.sh index 9e4fb5d..8504b54 100644 --- a/gnome/bin/setup-45.sh +++ b/gnome/bin/setup-45.sh @@ -1,4 +1,3 @@ -# require a first parameter, the user home directory if [ -z "$1" ]; then echo "Usage: $0 username [group]" exit 1 @@ -30,7 +29,6 @@ $user_home/bin/xreal_driver_config -vd sed -i 's/virtual_display/breezy_desktop/g' $user_home/.xreal_driver_config -# if breezy-desktop directory doesn't exit if [ ! -d breezy-desktop ]; then git clone https://github.com/wheaney/breezy-desktop.git diff --git a/gnome/breezydesktop@org.xronlinux/cursormanager.js b/gnome/breezydesktop@org.xronlinux/cursormanager.js index e9da4d6..9f80ad0 100644 --- a/gnome/breezydesktop@org.xronlinux/cursormanager.js +++ b/gnome/breezydesktop@org.xronlinux/cursormanager.js @@ -1,5 +1,4 @@ import Clutter from 'gi://Clutter'; -import GLib from 'gi://GLib'; import Meta from 'gi://Meta'; import * as PointerWatcher from 'resource:///org/gnome/shell/ui/pointerWatcher.js'; import { MouseSpriteContent } from './cursor.js'; diff --git a/gnome/breezydesktop@org.xronlinux/extension.js b/gnome/breezydesktop@org.xronlinux/extension.js index 3ed4e9d..f47593e 100644 --- a/gnome/breezydesktop@org.xronlinux/extension.js +++ b/gnome/breezydesktop@org.xronlinux/extension.js @@ -54,7 +54,6 @@ export default class BreezyDesktopExtension extends Extension { this._effect_enable(); return GLib.SOURCE_REMOVE; } else { - console.log(`Not ready: driver_running ${is_driver_running}, target_monitor ${JSON.stringify(target_monitor)}`); return GLib.SOURCE_CONTINUE; } }).bind(this)); @@ -135,6 +134,13 @@ export default class BreezyDesktopExtension extends Extension { this._overlay.add_effect_with_name('xr-desktop', this._xr_effect); Meta.disable_unredirect_for_display(global.display); + const action = Main.wm.addKeybinding( + 'shortcut-recenter', + this.getSettings(), + Meta.KeyBindingFlags.IGNORE_AUTOREPEAT, + Shell.ActionMode.NORMAL | Shell.ActionMode.OVERVIEW | Shell.ActionMode.POPUP, + this._recenter_display.bind(this) + ) } catch (e) { console.error('Error enabling XR effect', e); this._effect_disable(); @@ -142,6 +148,13 @@ export default class BreezyDesktopExtension extends Extension { } } + _recenter_display() { + const file = Gio.file_new_for_path('/dev/shm/xr_driver_control'); + const stream = file.replace(null, false, Gio.FileCreateFlags.NONE, null); + stream.write('recenter_screen=true', null); + stream.close(null); + } + _effect_disable() { this._is_effect_running = false; @@ -150,8 +163,8 @@ export default class BreezyDesktopExtension extends Extension { Meta.enable_unredirect_for_display(global.display); if (this._overlay) { - this._overlay.remove_effect_by_name('xr-desktop'); global.stage.remove_child(this._overlay); + this._overlay.remove_effect_by_name('xr-desktop'); this._overlay.destroy(); this._overlay = null; } @@ -164,7 +177,6 @@ export default class BreezyDesktopExtension extends Extension { this._cursor_manager.disable(); this._cursor_manager = null; } - } disable() { diff --git a/gnome/breezydesktop@org.xronlinux/metadata.json b/gnome/breezydesktop@org.xronlinux/metadata.json index b0009c0..c740eb2 100644 --- a/gnome/breezydesktop@org.xronlinux/metadata.json +++ b/gnome/breezydesktop@org.xronlinux/metadata.json @@ -2,6 +2,7 @@ "uuid": "breezydesktop@org.xronlinux", "name": "Breezy GNOME XR Desktop", "description": "XR virtual desktop for GNOME.", + "settings-schema": "org.gnome.shell.extensions.breezy-desktop", "shell-version": [ "45", "46" ], diff --git a/gnome/breezydesktop@org.xronlinux/schemas/gschemas.compiled b/gnome/breezydesktop@org.xronlinux/schemas/gschemas.compiled new file mode 100644 index 0000000000000000000000000000000000000000..28d35ad7712a59787c83b080dd8eb810c3fcd216 GIT binary patch literal 340 zcmZ<{ODxJv%qwAl0tp};0by$}!32Rct0)7*e;|O!`GD2L0L7(U8&pBcKx|D04~7mP z{RD^^fjGY?T`xT^KQ~pcI3qPDM=!OaBsH%%Ge56bFR3UswW?A#CAB!aB)$$ zAv9Po$nIlzui1cTka>a(Weh)nvJ=oG fWPpqS0)3z-^ueCc2YW&v;R$_IPv`?Jg6IJNbz4y) literal 0 HcmV?d00001 diff --git a/gnome/breezydesktop@org.xronlinux/schemas/org.gnome.shell.extensions.breezy-desktop.gschema.xml b/gnome/breezydesktop@org.xronlinux/schemas/org.gnome.shell.extensions.breezy-desktop.gschema.xml new file mode 100644 index 0000000..846baf2 --- /dev/null +++ b/gnome/breezydesktop@org.xronlinux/schemas/org.gnome.shell.extensions.breezy-desktop.gschema.xml @@ -0,0 +1,13 @@ + + + + + space']]]> + + Re-center display + + Shortcut to re-center the virtual display. + + + + \ No newline at end of file