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 0000000..28d35ad Binary files /dev/null and b/gnome/breezydesktop@org.xronlinux/schemas/gschemas.compiled differ 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