diff --git a/README.md b/README.md index 7c42f00..be88e9c 100644 --- a/README.md +++ b/README.md @@ -25,11 +25,13 @@ Breezy GNOME is in AUR (but not pacman, yet). To install, run these commands fro 1. If you've previously installed Breezy GNOME using the setup script, you must uninstall it first with `breezy_gnome_uninstall` 2. `yay -S breezy-desktop-gnome-git` 3. `systemctl --user enable --now xr-driver.service` +4. Log out and back in, then proceed to [usage](#breezy-gnome-usage). #### All other distros 1. Download the Breezy GNOME [setup script](https://github.com/wheaney/breezy-desktop/releases/latest/download/breezy_gnome_setup) and set the execute flag (e.g. from the terminal: `chmod +x ~/Downloads/breezy_gnome_setup`) 2. Run the setup script: `~/Downloads/breezy_gnome_setup` +3. Log out and back in, then proceed to [usage](#breezy-gnome-usage). ### Steam Deck desktop mode diff --git a/VERSION b/VERSION index ece61c6..9084fa2 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.0.6 \ No newline at end of file +1.1.0 diff --git a/gnome-44-max.patch b/gnome-44-max.patch index e633a59..cae2d6c 100644 --- a/gnome-44-max.patch +++ b/gnome-44-max.patch @@ -35,7 +35,7 @@ index 36ad7ee..41102a0 100644 }, class MouseSpriteContent extends GObject.Object { _init() { diff --git a/gnome-44-max/src/cursormanager.js b/gnome-44-max/src/cursormanager.js -index 44b3f5f..fa65a4a 100644 +index 018b942..870d86e 100644 --- a/gnome-44-max/src/cursormanager.js +++ b/gnome-44-max/src/cursormanager.js @@ -1,11 +1,15 @@ @@ -60,15 +60,6 @@ index 44b3f5f..fa65a4a 100644 constructor(mainActor, refreshRate) { this._mainActor = mainActor; this._refreshRate = refreshRate; -@@ -208,7 +212,7 @@ export class CursorManager { - - _queueVisibilityUpdate() { - this._queued_visibility_update = true; -- this._cursorTrackerSetPointerVisibleBound(false); -+ if (this._cursorTrackerSetPointerVisibleBound) this._cursorTrackerSetPointerVisibleBound(false); - this._queueSpriteUpdate(); - } - diff --git a/gnome-44-max/src/extension.js b/gnome-44-max/src/extension.js index 29a38f1..0a7e9ae 100644 --- a/gnome-44-max/src/extension.js @@ -327,10 +318,11 @@ index f70c96d..352be40 100644 const data = file.load_contents(null); diff --git a/gnome-44-max/src/systembackground.js b/gnome-44-max/src/systembackground.js -index 23039b9..350f32d 100644 +index 32b501e..de43435 100644 --- a/gnome-44-max/src/systembackground.js +++ b/gnome-44-max/src/systembackground.js -@@ -1,13 +1,14 @@ +@@ -1,13 +1,13 @@ +-import Clutter from 'gi://Clutter'; -import Cogl from 'gi://Cogl'; -import GLib from 'gi://GLib'; -import GObject from 'gi://GObject'; @@ -341,8 +333,7 @@ index 23039b9..350f32d 100644 +const GObject = imports.gi.GObject; +const Meta = imports.gi.Meta; --const DEFAULT_BACKGROUND_COLOR = new Cogl.Color({red: 40, green: 40, blue: 40, alpha: 255}); -+const DEFAULT_BACKGROUND_COLOR = Clutter.Color.from_pixel(0x2e3436ff); + const DEFAULT_BACKGROUND_COLOR = Clutter.Color?.from_pixel(0x2e3436ff) || new Cogl.Color({red: 40, green: 40, blue: 40, alpha: 255}); let _systemBackground; diff --git a/gnome/src/cursormanager.js b/gnome/src/cursormanager.js index 870d86e..3e1ea23 100644 --- a/gnome/src/cursormanager.js +++ b/gnome/src/cursormanager.js @@ -10,8 +10,8 @@ const { MouseSpriteContent } = Me.imports.cursor; // Taken from https://github.com/jkitching/soft-brightness-plus var CursorManager = class CursorManager { - constructor(mainActor, refreshRate) { - this._mainActor = mainActor; + constructor(overlay, refreshRate) { + this._overlay = overlay; this._refreshRate = refreshRate; // Set/destroyed by _enableCloningMouse/_disableCloningMouse @@ -23,7 +23,7 @@ var CursorManager = class CursorManager { // Set/destroyed by _startCloningMouse / _stopCloningMouse this._cursorWatch = null; this._cursorChangedConnection = null; - this._redraw_timeline = null; + this._systemCursorShown = true; } enable() { @@ -66,10 +66,12 @@ var CursorManager = class CursorManager { } _hideSystemCursor() { - const seat = Clutter.get_default_backend().get_default_seat(); + this._systemCursorShown = false; + + this._cursorRoot.show(); if (!this._cursorUnfocusInhibited) { - seat.inhibit_unfocus(); + Clutter.get_default_backend().get_default_seat().inhibit_unfocus(); this._cursorUnfocusInhibited = true; } @@ -112,17 +114,20 @@ var CursorManager = class CursorManager { // prereqs: setup in _enableCloningMouse _startCloningMouse() { Globals.logger.log_debug('CursorManager _startCloningMouse'); - this._mainActor.add_child(this._cursorRoot); + this._overlay.mainActor().add_child(this._cursorRoot); this._updateMouseSprite(); this._cursorTracker.connectObject('cursor-changed', this._updateMouseSprite.bind(this), this); Meta.disable_unredirect_for_display(global.display); - const interval = 1000.0 / 60; + // cap the refresh rate for performance reasons + const interval = 1000.0 / Math.min(this._refreshRate, 60); + this._cursorWatch = PointerWatcher.getPointerWatcher().addWatch(interval, this._updateMousePosition.bind(this)); this._updateMousePosition(); - this._hideSystemCursor(); + const [xMouse, yMouse] = global.get_pointer(); + if (this._overlay.isWithinBounds(xMouse, yMouse)) this._hideSystemCursor(); } // After this: @@ -142,26 +147,21 @@ var CursorManager = class CursorManager { this._mouseSprite.content.texture = null; Meta.enable_unredirect_for_display(global.display); - if (this._cursorChangedConnection) { - this._cursorTracker.disconnect(this._cursorChangedConnection); - this._cursorChangedConnection = null; - } - - if (this._redraw_timeline) { - this._redraw_timeline.stop(); - this._redraw_timeline = null; - } - - if (this._cursorRoot) this._mainActor.remove_child(this._cursorRoot); - - this._showSystemCursor(); + if (this._cursorTracker) this._cursorTracker.disconnectObject(this); + if (this._mouseSprite?.content?.texture) this._mouseSprite.content.texture = null; + Meta.enable_unredirect_for_display(global.display); + + if (this._cursorRoot) this._overlay.mainActor().remove_child(this._cursorRoot); + if (!this._systemCursorShown) this._showSystemCursor(); } _showSystemCursor() { - const seat = Clutter.get_default_backend().get_default_seat(); + this._systemCursorShown = true; + + if (this._cursorRoot) this._cursorRoot.hide(); if (this._cursorUnfocusInhibited) { - seat.uninhibit_unfocus(); + Clutter.get_default_backend().get_default_seat().uninhibit_unfocus(); this._cursorUnfocusInhibited = false; } @@ -175,20 +175,24 @@ var CursorManager = class CursorManager { _updateMousePosition(...args) { const [xMouse, yMouse] = args.length ? args : global.get_pointer(); + const inBounds = this._overlay.isWithinBounds(xMouse, yMouse); + const [xRel, yRel] = this._overlay.getRelativePosition(xMouse, yMouse); - if (xMouse === this.xMouse && yMouse === this.yMouse) + if (xRel === this.xMouse && yRel === this.yMouse) return; - this.xMouse = xMouse; - this.yMouse = yMouse; + if (inBounds) { + if (this._systemCursorShown) this._hideSystemCursor(); + this._cursorRoot.set_position(xRel, yRel); + } else if (!this._systemCursorShown && !inBounds) { + this._showSystemCursor(); + } - this._cursorRoot.set_position(xMouse, yMouse); - - if (this._mainActor.get_last_child() !== this._cursorRoot) - this._mainActor.set_child_above_sibling(this._cursorRoot, null); + this.xMouse = xRel; + this.yMouse = yRel; const seat = Clutter.get_default_backend().get_default_seat(); - if (!seat.is_unfocus_inhibited() && this._cursorUnfocusInhibited) { + if (this._cursorUnfocusInhibited && !seat.is_unfocus_inhibited()) { Globals.logger.log_debug('reinhibiting'); seat.inhibit_unfocus(); } diff --git a/gnome/src/extension.js b/gnome/src/extension.js index 0a7e9ae..9846f5f 100644 --- a/gnome/src/extension.js +++ b/gnome/src/extension.js @@ -14,6 +14,7 @@ const Globals = Me.imports.globals; const { CursorManager } = Me.imports.cursormanager; const { Logger } = Me.imports.logger; const { MonitorManager } = Me.imports.monitormanager; +const { Overlay } = Me.imports.overlay; const { SystemBackground } = Me.imports.systembackground; const { isValidKeepAlive } = Me.imports.time; const { IPC_FILE_PATH, XREffect } = Me.imports.xrEffect; @@ -249,28 +250,11 @@ class BreezyDesktopExtension { try { const targetMonitor = this._target_monitor.monitor; const refreshRate = targetMonitor.refreshRate ?? 60; - this._cursor_manager = new CursorManager(Main.layoutManager.uiGroup, refreshRate); + this._overlay = new Overlay(targetMonitor); + + this._cursor_manager = new CursorManager(this._overlay, refreshRate); this._cursor_manager.enable(); - const overlayContent = new Clutter.Actor({clip_to_allocation: true}); - - this._overlay = new St.Bin({ - child: overlayContent - }); - this._overlay.set_position(targetMonitor.x, targetMonitor.y); - this._overlay.set_size(targetMonitor.width, targetMonitor.height); - - global.stage.add_child(this._overlay); - Shell.util_set_hidden_from_pick(this._overlay, true); - - this._background = new SystemBackground(); - overlayContent.add_child(this._background); - - const uiClone = new Clutter.Clone({ source: Main.layoutManager.uiGroup, clip_to_allocation: true }); - uiClone.x = -targetMonitor.x; - uiClone.y = -targetMonitor.y; - overlayContent.add_child(uiClone); - // In GS 45, use of "actor" was renamed to "child". const clutterContainer = Clutter.Container !== undefined; this._actor_added_connection = global.stage.connect( @@ -313,9 +297,10 @@ class BreezyDesktopExtension { this._look_ahead_override_binding = this.settings.bind('look-ahead-override', this._xr_effect, 'look-ahead-override', Gio.SettingsBindFlags.DEFAULT); this._disable_anti_aliasing_binding = this.settings.bind('disable-anti-aliasing', this._xr_effect, 'disable-anti-aliasing', Gio.SettingsBindFlags.DEFAULT); - this._overlay.add_effect_with_name('xr-desktop', this._xr_effect); + this._overlay.mainActor().add_effect_with_name('xr-desktop', this._xr_effect); Meta.disable_unredirect_for_display(global.display); + this._add_settings_keybinding('toggle-xr-effect-shortcut', this._toggle_xr_effect.bind(this)); this._add_settings_keybinding('recenter-display-shortcut', this._recenter_display.bind(this)); this._add_settings_keybinding('toggle-display-distance-shortcut', this._xr_effect._change_distance.bind(this._xr_effect)); this._add_settings_keybinding('toggle-follow-shortcut', this._toggle_follow_mode.bind(this)); @@ -328,7 +313,7 @@ class BreezyDesktopExtension { _handle_sibling_update() { Globals.logger.log_debug('BreezyDesktopExtension _handle_sibling_update()'); - global.stage.set_child_above_sibling(this._overlay, null); + global.stage.set_child_above_sibling(this._overlay.mainActor(), null); } _add_settings_keybinding(settings_key, bind_to_function) { @@ -488,6 +473,40 @@ class BreezyDesktopExtension { } } + _toggle_xr_effect() { + Globals.logger.log_debug('BreezyDesktopExtension _toggle_xr_effect'); + + const bin_home = GLib.getenv('XDG_BIN_HOME') || GLib.build_filenamev([GLib.get_home_dir(), '.local', 'bin']); + const cli_path = GLib.build_filenamev([bin_home, 'xr_driver_cli']); + + Globals.logger.log_debug(`BreezyDesktopExtension _toggle_xr_effect path: ${cli_path}`); + + let proc = Gio.Subprocess.new( + ['bash', '-c', `${cli_path} --external-mode`], + Gio.SubprocessFlags.STDOUT_PIPE | Gio.SubprocessFlags.STDERR_PIPE + ); + + let [success, stdout, stderr] = proc.communicate_utf8(null, null); + if (!success || !!stderr || !stdout) { + Globals.logger.log(`ERROR: Failed to get driver status: ${stderr}`); + return; + } + + Globals.logger.log_debug(`BreezyDesktopExtension _toggle_xr_effect external_mode: ${stdout}`); + const enabled = stdout.trim() === 'breezy_desktop'; + + // use the CLI to change the external mode, avoid using disable/enable, otherwise the driver will + // shut down and recalibrate each time + proc = Gio.Subprocess.new( + ['bash', '-c', `${cli_path} --${enabled ? 'disable-external' : 'breezy-desktop'}`], + Gio.SubprocessFlags.STDOUT_PIPE | Gio.SubprocessFlags.STDERR_PIPE + ); + [success, stdout, stderr] = proc.communicate_utf8(null, null); + if (!success || !!stderr) { + Globals.logger.log(`ERROR: Failed to toggle driver: ${stderr}`); + } + } + _recenter_display() { Globals.logger.log_debug('BreezyDesktopExtension _recenter_display'); this._write_control('recenter_screen', 'true'); @@ -523,14 +542,6 @@ class BreezyDesktopExtension { global.stage.disconnect(this._actor_removed_connection); this._actor_removed_connection = null; } - if (this._overlay) { - if (this._xr_effect) this._xr_effect.cleanup(); - this._overlay.remove_effect_by_name('xr-desktop'); - - global.stage.remove_child(this._overlay); - this._overlay.destroy(); - this._overlay = null; - } if (this._distance_binding) { this.settings.unbind(this._distance_binding); this._distance_binding = null; @@ -580,12 +591,17 @@ class BreezyDesktopExtension { this._xr_effect.disconnect(this._supported_device_detected_connected); this._supported_device_detected_connected = null; } + this._xr_effect.cleanup(); this._xr_effect = null; } if (this._cursor_manager) { this._cursor_manager.disable(); this._cursor_manager = null; } + if (this._overlay) { + this._overlay.mainActor().remove_effect_by_name('xr-desktop'); + this._overlay.destroy(); + } // this should always be done at the end of this function after the widescreen settings binding is removed, // so it doesn't reset the setting to false diff --git a/gnome/src/overlay.js b/gnome/src/overlay.js new file mode 100644 index 0000000..c42af7c --- /dev/null +++ b/gnome/src/overlay.js @@ -0,0 +1,49 @@ +import Clutter from 'gi://Clutter' +import Shell from 'gi://Shell'; +import St from 'gi://St'; + +import { SystemBackground } from './systembackground.js'; +import * as Main from 'resource:///org/gnome/shell/ui/main.js'; + +export class Overlay { + constructor(targetMonitor) { + this._overlayContent = new Clutter.Actor({clip_to_allocation: true}); + this._overlay = new St.Bin({ + child: this._overlayContent + }); + this._overlay.set_position(targetMonitor.x, targetMonitor.y); + this._overlay.set_size(targetMonitor.width, targetMonitor.height); + + global.stage.add_child(this._overlay); + Shell.util_set_hidden_from_pick(this._overlay, true); + + this._background = new SystemBackground(); + this._overlayContent.add_child(this._background); + + this._uiClone = new Clutter.Clone({ source: Main.layoutManager.uiGroup, clip_to_allocation: true }); + this._uiClone.x = -targetMonitor.x; + this._uiClone.y = -targetMonitor.y; + this._overlayContent.add_child(this._uiClone); + + this._targetMonitor = targetMonitor; + } + + isWithinBounds(x, y) { + return x >= this._targetMonitor.x && x < this._targetMonitor.x + this._targetMonitor.width && + y >= this._targetMonitor.y && y < this._targetMonitor.y + this._targetMonitor.height; + } + + getRelativePosition(x, y) { + return [x - this._targetMonitor.x, y - this._targetMonitor.y]; + } + + mainActor() { + return this._overlayContent; + } + + destroy() { + global.stage.remove_child(this._overlay); + this._overlay.destroy(); + this._overlay = null; + } +} \ No newline at end of file diff --git a/gnome/src/systembackground.js b/gnome/src/systembackground.js index de43435..cbf0a75 100644 --- a/gnome/src/systembackground.js +++ b/gnome/src/systembackground.js @@ -1,9 +1,10 @@ const Clutter = imports.gi.Clutter; +const Cogl = imports.gi.Cogl; const GLib = imports.gi.GLib; const GObject = imports.gi.GObject; const Meta = imports.gi.Meta; -const DEFAULT_BACKGROUND_COLOR = Clutter.Color.from_pixel(0x2e3436ff); +const DEFAULT_BACKGROUND_COLOR = Clutter.Color?.from_pixel(0x2e3436ff) || new Cogl.Color({red: 40, green: 40, blue: 40, alpha: 255}); let _systemBackground; diff --git a/modules/XRLinuxDriver b/modules/XRLinuxDriver index 70b9af0..91a5d65 160000 --- a/modules/XRLinuxDriver +++ b/modules/XRLinuxDriver @@ -1 +1 @@ -Subproject commit 70b9af0a0f706430f70d5421ebb1179930c548c7 +Subproject commit 91a5d65c57a63a8003ef4f8a2c36bc519104d54c diff --git a/modules/sombrero b/modules/sombrero index d270ebf..0ddc237 160000 --- a/modules/sombrero +++ b/modules/sombrero @@ -1 +1 @@ -Subproject commit d270ebfd2e3202133fea75e1513f1571960bdafd +Subproject commit 0ddc237b5b47208eb9f3f520177920f7ea157dfd diff --git a/ui/data/com.xronlinux.BreezyDesktop.gschema.xml b/ui/data/com.xronlinux.BreezyDesktop.gschema.xml index e504280..b5aafdd 100644 --- a/ui/data/com.xronlinux.BreezyDesktop.gschema.xml +++ b/ui/data/com.xronlinux.BreezyDesktop.gschema.xml @@ -1,6 +1,15 @@ + + + backslash']]]> + + Toggle the XR Effect on or off + + Shortcut to toggle the XR Effect. + + space']]]> diff --git a/ui/modules/PyXRLinuxDriverIPC b/ui/modules/PyXRLinuxDriverIPC index 3f23409..e6ec3e3 160000 --- a/ui/modules/PyXRLinuxDriverIPC +++ b/ui/modules/PyXRLinuxDriverIPC @@ -1 +1 @@ -Subproject commit 3f23409b6be154c9c9a7035c6213558a7ef6c84e +Subproject commit e6ec3e309e63608552becff694e5f3c9d1e5bcc3 diff --git a/ui/po/breezydesktop.pot b/ui/po/breezydesktop.pot index 5408e5d..36933f0 100644 --- a/ui/po/breezydesktop.pot +++ b/ui/po/breezydesktop.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-03 21:35-0700\n" +"POT-Creation-Date: 2024-10-18 11:45-0700\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,13 +17,13 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: src/connecteddevice.py:16 +#: src/connecteddevice.py:17 msgid "" "Switches your glasses into side-by-side mode and doubles the width of the " "display." msgstr "" -#: src/connecteddevice.py:17 +#: src/connecteddevice.py:18 msgid "This feature is not currently supported for your device." msgstr "" @@ -230,94 +230,104 @@ msgid "Keyboard Shortcuts" msgstr "" #: src/gtk/connected-device.ui:218 -msgid "Re-center display shortcut" +msgid "XR Effect on/off shortcut" msgstr "" #: src/gtk/connected-device.ui:219 -msgid "Pin the virtual display to the current position." +msgid "" +"Quickly enable or disable the XR Effect. You may need to enable the effect " +"manually once in order to enable the shortcut." msgstr "" #: src/gtk/connected-device.ui:238 src/gtk/connected-device.ui:267 -#: src/gtk/connected-device.ui:296 +#: src/gtk/connected-device.ui:296 src/gtk/connected-device.ui:325 msgid "Change" msgstr "" #: src/gtk/connected-device.ui:247 -msgid "Display distance shortcut" +msgid "Re-center display shortcut" msgstr "" #: src/gtk/connected-device.ui:248 -msgid "Quickly toggle between two predefined distances." +msgid "Pin the virtual display to the current position." msgstr "" #: src/gtk/connected-device.ui:276 -msgid "Toggle follow mode shortcut" +msgid "Display distance shortcut" msgstr "" #: src/gtk/connected-device.ui:277 +msgid "Quickly toggle between two predefined distances." +msgstr "" + +#: src/gtk/connected-device.ui:305 +msgid "Toggle follow mode shortcut" +msgstr "" + +#: src/gtk/connected-device.ui:306 msgid "Quickly toggle follow mode." msgstr "" -#: src/gtk/connected-device.ui:312 src/gtk/connected-device.ui:318 +#: src/gtk/connected-device.ui:341 src/gtk/connected-device.ui:347 msgid "Advanced Settings" msgstr "" -#: src/gtk/connected-device.ui:321 +#: src/gtk/connected-device.ui:350 msgid "Find optimal display config" msgstr "" -#: src/gtk/connected-device.ui:322 +#: src/gtk/connected-device.ui:351 msgid "" "Automatically modify the glasses display configuration for maximum " "resolution and best scaling when plugged in." msgstr "" -#: src/gtk/connected-device.ui:332 +#: src/gtk/connected-device.ui:361 msgid "Use highest refresh rate" msgstr "" -#: src/gtk/connected-device.ui:333 +#: src/gtk/connected-device.ui:362 msgid "Refresh rate may affect performance, disable this to set it manually." msgstr "" -#: src/gtk/connected-device.ui:343 +#: src/gtk/connected-device.ui:372 msgid "Always primary display" msgstr "" -#: src/gtk/connected-device.ui:344 +#: src/gtk/connected-device.ui:373 msgid "Automatically set the glasses as the primary display when plugged in." msgstr "" -#: src/gtk/connected-device.ui:354 +#: src/gtk/connected-device.ui:383 msgid "Fast SBS mode switching" msgstr "" -#: src/gtk/connected-device.ui:355 +#: src/gtk/connected-device.ui:384 msgid "" "Switches glasses to SBS mode immediately when plugged in, if widescreen mode " "is on. May cause instability." msgstr "" -#: src/gtk/connected-device.ui:365 +#: src/gtk/connected-device.ui:394 msgid "Movement look-ahead" msgstr "" -#: src/gtk/connected-device.ui:366 +#: src/gtk/connected-device.ui:395 msgid "" "Counteracts input lag by predicting head-tracking position ahead of render " "time. Stick with default unless virtual display drags behind your head " "movements, jumps ahead, or is very shaky." msgstr "" -#: src/gtk/connected-device.ui:384 +#: src/gtk/connected-device.ui:413 msgid "Default" msgstr "" -#: src/gtk/connected-device.ui:396 +#: src/gtk/connected-device.ui:425 msgid "Text Scaling" msgstr "" -#: src/gtk/connected-device.ui:397 +#: src/gtk/connected-device.ui:426 msgid "Scaling text below 1.0 will simulate a higher resolution display" msgstr "" diff --git a/ui/po/de.po b/ui/po/de.po index 06f17ff..e6409d3 100644 --- a/ui/po/de.po +++ b/ui/po/de.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-03 21:26-0700\n" +"POT-Creation-Date: 2024-10-18 11:45-0700\n" "PO-Revision-Date: 2024-08-02 20:54-0700\n" "Last-Translator: \n" "Language-Team: German \n" @@ -17,7 +17,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: src/connecteddevice.py:16 +#: src/connecteddevice.py:17 msgid "" "Switches your glasses into side-by-side mode and doubles the width of the " "display." @@ -25,7 +25,7 @@ msgstr "" "Schaltet Ihre Brille in den Side-by-Side-Modus und verdoppelt die Breite des " "Displays." -#: src/connecteddevice.py:17 +#: src/connecteddevice.py:18 msgid "This feature is not currently supported for your device." msgstr "Diese Funktion wird von Ihrem Gerät derzeit nicht unterstützt." @@ -238,43 +238,53 @@ msgid "Keyboard Shortcuts" msgstr "Tastenkombinationen" #: src/gtk/connected-device.ui:218 -msgid "Re-center display shortcut" -msgstr "Display-Zentrierung-Tastenkombination" +msgid "XR Effect on/off shortcut" +msgstr "" #: src/gtk/connected-device.ui:219 -msgid "Pin the virtual display to the current position." -msgstr "Heften Sie das virtuelle Display an die aktuelle Position an." +msgid "" +"Quickly enable or disable the XR Effect. You may need to enable the effect " +"manually once in order to enable the shortcut." +msgstr "" #: src/gtk/connected-device.ui:238 src/gtk/connected-device.ui:267 -#: src/gtk/connected-device.ui:296 +#: src/gtk/connected-device.ui:296 src/gtk/connected-device.ui:325 msgid "Change" msgstr "Ändern" #: src/gtk/connected-device.ui:247 +msgid "Re-center display shortcut" +msgstr "Display-Zentrierung-Tastenkombination" + +#: src/gtk/connected-device.ui:248 +msgid "Pin the virtual display to the current position." +msgstr "Heften Sie das virtuelle Display an die aktuelle Position an." + +#: src/gtk/connected-device.ui:276 msgid "Display distance shortcut" msgstr "Display-Entfernung-Tastenkombination" -#: src/gtk/connected-device.ui:248 +#: src/gtk/connected-device.ui:277 msgid "Quickly toggle between two predefined distances." msgstr "Schnell zwischen zwei vordefinierten Entfernungen umschalten." -#: src/gtk/connected-device.ui:276 +#: src/gtk/connected-device.ui:305 msgid "Toggle follow mode shortcut" msgstr "Folgemodus-Tastenkombination umschalten" -#: src/gtk/connected-device.ui:277 +#: src/gtk/connected-device.ui:306 msgid "Quickly toggle follow mode." msgstr "Schnell den Folgemodus umschalten." -#: src/gtk/connected-device.ui:312 src/gtk/connected-device.ui:318 +#: src/gtk/connected-device.ui:341 src/gtk/connected-device.ui:347 msgid "Advanced Settings" msgstr "Erweiterte Einstellungen" -#: src/gtk/connected-device.ui:321 +#: src/gtk/connected-device.ui:350 msgid "Find optimal display config" msgstr "Optimale Display-Konfiguration finden" -#: src/gtk/connected-device.ui:322 +#: src/gtk/connected-device.ui:351 msgid "" "Automatically modify the glasses display configuration for maximum " "resolution and best scaling when plugged in." @@ -282,31 +292,31 @@ msgstr "" "Ändern Sie die Display-Konfiguration der Brille automatisch für maximale " "Auflösung und beste Skalierung, wenn sie angeschlossen ist." -#: src/gtk/connected-device.ui:332 +#: src/gtk/connected-device.ui:361 msgid "Use highest refresh rate" msgstr "Höchste Bildwiederholrate verwenden" -#: src/gtk/connected-device.ui:333 +#: src/gtk/connected-device.ui:362 msgid "Refresh rate may affect performance, disable this to set it manually." msgstr "" "Die Bildwiederholrate kann die Leistung beeinflussen, deaktivieren Sie dies, " "um sie manuell festzulegen." -#: src/gtk/connected-device.ui:343 +#: src/gtk/connected-device.ui:372 msgid "Always primary display" msgstr "Immer primäres Display" -#: src/gtk/connected-device.ui:344 +#: src/gtk/connected-device.ui:373 msgid "Automatically set the glasses as the primary display when plugged in." msgstr "" "Setzen Sie die Brille automatisch als primäres Display ein, wenn sie " "angeschlossen ist." -#: src/gtk/connected-device.ui:354 +#: src/gtk/connected-device.ui:383 msgid "Fast SBS mode switching" msgstr "Schnelles SBS-Modus-Umschalten" -#: src/gtk/connected-device.ui:355 +#: src/gtk/connected-device.ui:384 msgid "" "Switches glasses to SBS mode immediately when plugged in, if widescreen mode " "is on. May cause instability." @@ -314,11 +324,11 @@ msgstr "" "Schaltet die Brille sofort in den SBS-Modus, wenn sie angeschlossen ist, " "wenn der Breitbildmodus aktiviert ist. Kann zu Instabilität führen." -#: src/gtk/connected-device.ui:365 +#: src/gtk/connected-device.ui:394 msgid "Movement look-ahead" msgstr "Bewegungsvorausschau" -#: src/gtk/connected-device.ui:366 +#: src/gtk/connected-device.ui:395 msgid "" "Counteracts input lag by predicting head-tracking position ahead of render " "time. Stick with default unless virtual display drags behind your head " @@ -329,15 +339,15 @@ msgstr "" "es sei denn, das virtuelle Display hängt hinter Ihren Kopfbewegungen " "hinterher, springt vor oder ist sehr wackelig." -#: src/gtk/connected-device.ui:384 +#: src/gtk/connected-device.ui:413 msgid "Default" msgstr "Standard" -#: src/gtk/connected-device.ui:396 +#: src/gtk/connected-device.ui:425 msgid "Text Scaling" msgstr "" -#: src/gtk/connected-device.ui:397 +#: src/gtk/connected-device.ui:426 msgid "Scaling text below 1.0 will simulate a higher resolution display" msgstr "" diff --git a/ui/po/es.po b/ui/po/es.po index 99ff603..5e104ce 100644 --- a/ui/po/es.po +++ b/ui/po/es.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-03 21:26-0700\n" +"POT-Creation-Date: 2024-10-18 11:45-0700\n" "PO-Revision-Date: 2024-08-02 20:55-0700\n" "Last-Translator: \n" "Language-Team: Spanish \n" @@ -17,14 +17,14 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: src/connecteddevice.py:16 +#: src/connecteddevice.py:17 msgid "" "Switches your glasses into side-by-side mode and doubles the width of the " "display." msgstr "" "Cambia tus gafas al modo lado a lado y duplica el ancho de la pantalla." -#: src/connecteddevice.py:17 +#: src/connecteddevice.py:18 msgid "This feature is not currently supported for your device." msgstr "Esta función no es compatible con tu dispositivo en este momento." @@ -237,43 +237,53 @@ msgid "Keyboard Shortcuts" msgstr "Atajos de teclado" #: src/gtk/connected-device.ui:218 -msgid "Re-center display shortcut" -msgstr "Atajo para recentrar la pantalla" +msgid "XR Effect on/off shortcut" +msgstr "" #: src/gtk/connected-device.ui:219 -msgid "Pin the virtual display to the current position." -msgstr "Fije la pantalla virtual en la posición actual." +msgid "" +"Quickly enable or disable the XR Effect. You may need to enable the effect " +"manually once in order to enable the shortcut." +msgstr "" #: src/gtk/connected-device.ui:238 src/gtk/connected-device.ui:267 -#: src/gtk/connected-device.ui:296 +#: src/gtk/connected-device.ui:296 src/gtk/connected-device.ui:325 msgid "Change" msgstr "Cambiar" #: src/gtk/connected-device.ui:247 +msgid "Re-center display shortcut" +msgstr "Atajo para recentrar la pantalla" + +#: src/gtk/connected-device.ui:248 +msgid "Pin the virtual display to the current position." +msgstr "Fije la pantalla virtual en la posición actual." + +#: src/gtk/connected-device.ui:276 msgid "Display distance shortcut" msgstr "Atajo de distancia de pantalla" -#: src/gtk/connected-device.ui:248 +#: src/gtk/connected-device.ui:277 msgid "Quickly toggle between two predefined distances." msgstr "Cambiar rápidamente entre dos distancias predefinidas." -#: src/gtk/connected-device.ui:276 +#: src/gtk/connected-device.ui:305 msgid "Toggle follow mode shortcut" msgstr "Atajo para alternar el modo de seguimiento" -#: src/gtk/connected-device.ui:277 +#: src/gtk/connected-device.ui:306 msgid "Quickly toggle follow mode." msgstr "Activar el modo de seguimiento." -#: src/gtk/connected-device.ui:312 src/gtk/connected-device.ui:318 +#: src/gtk/connected-device.ui:341 src/gtk/connected-device.ui:347 msgid "Advanced Settings" msgstr "Configuración Avanzada" -#: src/gtk/connected-device.ui:321 +#: src/gtk/connected-device.ui:350 msgid "Find optimal display config" msgstr "Encuentre la configuración de pantalla óptima" -#: src/gtk/connected-device.ui:322 +#: src/gtk/connected-device.ui:351 msgid "" "Automatically modify the glasses display configuration for maximum " "resolution and best scaling when plugged in." @@ -282,30 +292,30 @@ msgstr "" "obtener la máxima resolución y la mejor escalabilidad cuando estén " "enchufadas." -#: src/gtk/connected-device.ui:332 +#: src/gtk/connected-device.ui:361 msgid "Use highest refresh rate" msgstr "Utilizar la frecuencia de actualización más alta" -#: src/gtk/connected-device.ui:333 +#: src/gtk/connected-device.ui:362 msgid "Refresh rate may affect performance, disable this to set it manually." msgstr "" "La frecuencia de actualización puede afectar el rendimiento, deshabilite " "esto para configurarlo manualmente." -#: src/gtk/connected-device.ui:343 +#: src/gtk/connected-device.ui:372 msgid "Always primary display" msgstr "Siempre como pantalla principal" -#: src/gtk/connected-device.ui:344 +#: src/gtk/connected-device.ui:373 msgid "Automatically set the glasses as the primary display when plugged in." msgstr "" "Automáticamente configurar las gafas como pantalla principal al enchufarse." -#: src/gtk/connected-device.ui:354 +#: src/gtk/connected-device.ui:383 msgid "Fast SBS mode switching" msgstr "Cambio rápido de modo SBS" -#: src/gtk/connected-device.ui:355 +#: src/gtk/connected-device.ui:384 msgid "" "Switches glasses to SBS mode immediately when plugged in, if widescreen mode " "is on. May cause instability." @@ -314,11 +324,11 @@ msgstr "" "enchufan, si el modo de pantalla ancha está activado. Puede causar " "inestabilidad." -#: src/gtk/connected-device.ui:365 +#: src/gtk/connected-device.ui:394 msgid "Movement look-ahead" msgstr "Anticipación de movimiento" -#: src/gtk/connected-device.ui:366 +#: src/gtk/connected-device.ui:395 msgid "" "Counteracts input lag by predicting head-tracking position ahead of render " "time. Stick with default unless virtual display drags behind your head " @@ -329,15 +339,15 @@ msgstr "" "predeterminado a menos que la pantalla virtual se retrase detrás de los " "movimientos de la cabeza, se adelante o sea muy inestable." -#: src/gtk/connected-device.ui:384 +#: src/gtk/connected-device.ui:413 msgid "Default" msgstr "Predeterminado" -#: src/gtk/connected-device.ui:396 +#: src/gtk/connected-device.ui:425 msgid "Text Scaling" msgstr "" -#: src/gtk/connected-device.ui:397 +#: src/gtk/connected-device.ui:426 msgid "Scaling text below 1.0 will simulate a higher resolution display" msgstr "" diff --git a/ui/po/fr.po b/ui/po/fr.po index 30f4be6..9bd381a 100644 --- a/ui/po/fr.po +++ b/ui/po/fr.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-03 21:26-0700\n" +"POT-Creation-Date: 2024-10-18 11:45-0700\n" "PO-Revision-Date: 2024-08-02 20:54-0700\n" "Last-Translator: \n" "Language-Team: French \n" @@ -17,7 +17,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -#: src/connecteddevice.py:16 +#: src/connecteddevice.py:17 msgid "" "Switches your glasses into side-by-side mode and doubles the width of the " "display." @@ -25,7 +25,7 @@ msgstr "" "Basculez vos lunettes en mode Side-By-Side (Côte-à-Côte) et doublez la " "largeur de l'écran." -#: src/connecteddevice.py:17 +#: src/connecteddevice.py:18 msgid "This feature is not currently supported for your device." msgstr "" "Cette fonctionnalité n'est actuellement pas prise en charge par votre " @@ -240,43 +240,53 @@ msgid "Keyboard Shortcuts" msgstr "Raccourcis clavier" #: src/gtk/connected-device.ui:218 -msgid "Re-center display shortcut" -msgstr "Raccourci de recentrage de l'affichage" +msgid "XR Effect on/off shortcut" +msgstr "" #: src/gtk/connected-device.ui:219 -msgid "Pin the virtual display to the current position." -msgstr "Fixez l'affichage virtuel à la position actuelle." +msgid "" +"Quickly enable or disable the XR Effect. You may need to enable the effect " +"manually once in order to enable the shortcut." +msgstr "" #: src/gtk/connected-device.ui:238 src/gtk/connected-device.ui:267 -#: src/gtk/connected-device.ui:296 +#: src/gtk/connected-device.ui:296 src/gtk/connected-device.ui:325 msgid "Change" msgstr "Changer" #: src/gtk/connected-device.ui:247 +msgid "Re-center display shortcut" +msgstr "Raccourci de recentrage de l'affichage" + +#: src/gtk/connected-device.ui:248 +msgid "Pin the virtual display to the current position." +msgstr "Fixez l'affichage virtuel à la position actuelle." + +#: src/gtk/connected-device.ui:276 msgid "Display distance shortcut" msgstr "Raccourci de distance d'affichage" -#: src/gtk/connected-device.ui:248 +#: src/gtk/connected-device.ui:277 msgid "Quickly toggle between two predefined distances." msgstr "Basculez rapidement entre deux distances prédéfinies." -#: src/gtk/connected-device.ui:276 +#: src/gtk/connected-device.ui:305 msgid "Toggle follow mode shortcut" msgstr "Raccourci de basculement du mode de suivi" -#: src/gtk/connected-device.ui:277 +#: src/gtk/connected-device.ui:306 msgid "Quickly toggle follow mode." msgstr "Basculer rapidement le mode de suivi." -#: src/gtk/connected-device.ui:312 src/gtk/connected-device.ui:318 +#: src/gtk/connected-device.ui:341 src/gtk/connected-device.ui:347 msgid "Advanced Settings" msgstr "Paramètres avancés" -#: src/gtk/connected-device.ui:321 +#: src/gtk/connected-device.ui:350 msgid "Find optimal display config" msgstr "Trouver la configuration d'affichage optimale" -#: src/gtk/connected-device.ui:322 +#: src/gtk/connected-device.ui:351 msgid "" "Automatically modify the glasses display configuration for maximum " "resolution and best scaling when plugged in." @@ -285,31 +295,31 @@ msgstr "" "résolution maximale et une meilleure mise à l'échelle lorsque elles sont " "branchées." -#: src/gtk/connected-device.ui:332 +#: src/gtk/connected-device.ui:361 msgid "Use highest refresh rate" msgstr "Utiliser le taux de rafraîchissement le plus élevé" -#: src/gtk/connected-device.ui:333 +#: src/gtk/connected-device.ui:362 msgid "Refresh rate may affect performance, disable this to set it manually." msgstr "" "Un taux de rafraîchissement élevé peut affecter les performances, désactivez-" "le pour le définir manuellement." -#: src/gtk/connected-device.ui:343 +#: src/gtk/connected-device.ui:372 msgid "Always primary display" msgstr "Affichage principal en permanence" -#: src/gtk/connected-device.ui:344 +#: src/gtk/connected-device.ui:373 msgid "Automatically set the glasses as the primary display when plugged in." msgstr "" "Définissez automatiquement les lunettes comme affichage principal " "lorsqu'elles sont branchées." -#: src/gtk/connected-device.ui:354 +#: src/gtk/connected-device.ui:383 msgid "Fast SBS mode switching" msgstr "Bascule rapide vers le mode SBS" -#: src/gtk/connected-device.ui:355 +#: src/gtk/connected-device.ui:384 msgid "" "Switches glasses to SBS mode immediately when plugged in, if widescreen mode " "is on. May cause instability." @@ -317,11 +327,11 @@ msgstr "" "Bascule les lunettes vers le mode SBS immédiatement lorsqu'elles sont " "branchées si le mode grand écran est activé. Peut provoquer des instabilités." -#: src/gtk/connected-device.ui:365 +#: src/gtk/connected-device.ui:394 msgid "Movement look-ahead" msgstr "Prédiction de mouvement" -#: src/gtk/connected-device.ui:366 +#: src/gtk/connected-device.ui:395 msgid "" "Counteracts input lag by predicting head-tracking position ahead of render " "time. Stick with default unless virtual display drags behind your head " @@ -331,17 +341,19 @@ msgstr "" "le temps de rendu. Restez sur la valeur par défaut à moins que l'affichage " "virtuel ne soit lent, ne saute pas ou ne soit très instable." -#: src/gtk/connected-device.ui:384 +#: src/gtk/connected-device.ui:413 msgid "Default" msgstr "Par défaut" -#: src/gtk/connected-device.ui:396 +#: src/gtk/connected-device.ui:425 msgid "Text Scaling" msgstr "Mise à l'échelle du texte" -#: src/gtk/connected-device.ui:397 +#: src/gtk/connected-device.ui:426 msgid "Scaling text below 1.0 will simulate a higher resolution display" -msgstr "Une mise à l'échelle du texte en dessous de 1.0 simulera un affichage de plus haute résolution" +msgstr "" +"Une mise à l'échelle du texte en dessous de 1.0 simulera un affichage de " +"plus haute résolution" #: src/gtk/failed-verification.ui:13 msgid "Breezy Desktop GNOME invalid setup" diff --git a/ui/po/it.po b/ui/po/it.po index fb59a2c..1ec6e0d 100644 --- a/ui/po/it.po +++ b/ui/po/it.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-03 21:26-0700\n" +"POT-Creation-Date: 2024-10-18 11:45-0700\n" "PO-Revision-Date: 2024-08-02 21:14-0700\n" "Last-Translator: \n" "Language-Team: Italian \n" @@ -17,13 +17,13 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: src/connecteddevice.py:16 +#: src/connecteddevice.py:17 msgid "" "Switches your glasses into side-by-side mode and doubles the width of the " "display." msgstr "" -#: src/connecteddevice.py:17 +#: src/connecteddevice.py:18 msgid "This feature is not currently supported for your device." msgstr "" @@ -230,94 +230,104 @@ msgid "Keyboard Shortcuts" msgstr "" #: src/gtk/connected-device.ui:218 -msgid "Re-center display shortcut" +msgid "XR Effect on/off shortcut" msgstr "" #: src/gtk/connected-device.ui:219 -msgid "Pin the virtual display to the current position." +msgid "" +"Quickly enable or disable the XR Effect. You may need to enable the effect " +"manually once in order to enable the shortcut." msgstr "" #: src/gtk/connected-device.ui:238 src/gtk/connected-device.ui:267 -#: src/gtk/connected-device.ui:296 +#: src/gtk/connected-device.ui:296 src/gtk/connected-device.ui:325 msgid "Change" msgstr "" #: src/gtk/connected-device.ui:247 -msgid "Display distance shortcut" +msgid "Re-center display shortcut" msgstr "" #: src/gtk/connected-device.ui:248 -msgid "Quickly toggle between two predefined distances." +msgid "Pin the virtual display to the current position." msgstr "" #: src/gtk/connected-device.ui:276 -msgid "Toggle follow mode shortcut" +msgid "Display distance shortcut" msgstr "" #: src/gtk/connected-device.ui:277 +msgid "Quickly toggle between two predefined distances." +msgstr "" + +#: src/gtk/connected-device.ui:305 +msgid "Toggle follow mode shortcut" +msgstr "" + +#: src/gtk/connected-device.ui:306 msgid "Quickly toggle follow mode." msgstr "" -#: src/gtk/connected-device.ui:312 src/gtk/connected-device.ui:318 +#: src/gtk/connected-device.ui:341 src/gtk/connected-device.ui:347 msgid "Advanced Settings" msgstr "" -#: src/gtk/connected-device.ui:321 +#: src/gtk/connected-device.ui:350 msgid "Find optimal display config" msgstr "" -#: src/gtk/connected-device.ui:322 +#: src/gtk/connected-device.ui:351 msgid "" "Automatically modify the glasses display configuration for maximum " "resolution and best scaling when plugged in." msgstr "" -#: src/gtk/connected-device.ui:332 +#: src/gtk/connected-device.ui:361 msgid "Use highest refresh rate" msgstr "" -#: src/gtk/connected-device.ui:333 +#: src/gtk/connected-device.ui:362 msgid "Refresh rate may affect performance, disable this to set it manually." msgstr "" -#: src/gtk/connected-device.ui:343 +#: src/gtk/connected-device.ui:372 msgid "Always primary display" msgstr "" -#: src/gtk/connected-device.ui:344 +#: src/gtk/connected-device.ui:373 msgid "Automatically set the glasses as the primary display when plugged in." msgstr "" -#: src/gtk/connected-device.ui:354 +#: src/gtk/connected-device.ui:383 msgid "Fast SBS mode switching" msgstr "" -#: src/gtk/connected-device.ui:355 +#: src/gtk/connected-device.ui:384 msgid "" "Switches glasses to SBS mode immediately when plugged in, if widescreen mode " "is on. May cause instability." msgstr "" -#: src/gtk/connected-device.ui:365 +#: src/gtk/connected-device.ui:394 msgid "Movement look-ahead" msgstr "" -#: src/gtk/connected-device.ui:366 +#: src/gtk/connected-device.ui:395 msgid "" "Counteracts input lag by predicting head-tracking position ahead of render " "time. Stick with default unless virtual display drags behind your head " "movements, jumps ahead, or is very shaky." msgstr "" -#: src/gtk/connected-device.ui:384 +#: src/gtk/connected-device.ui:413 msgid "Default" msgstr "" -#: src/gtk/connected-device.ui:396 +#: src/gtk/connected-device.ui:425 msgid "Text Scaling" msgstr "" -#: src/gtk/connected-device.ui:397 +#: src/gtk/connected-device.ui:426 msgid "Scaling text below 1.0 will simulate a higher resolution display" msgstr "" diff --git a/ui/po/ja.po b/ui/po/ja.po index e5825b7..7948bf6 100644 --- a/ui/po/ja.po +++ b/ui/po/ja.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-03 21:26-0700\n" +"POT-Creation-Date: 2024-10-18 11:45-0700\n" "PO-Revision-Date: 2024-08-02 20:55-0700\n" "Last-Translator: \n" "Language-Team: Japanese \n" @@ -21,13 +21,13 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -#: src/connecteddevice.py:16 +#: src/connecteddevice.py:17 msgid "" "Switches your glasses into side-by-side mode and doubles the width of the " "display." msgstr "メガネを3Dモードに切り替え、表示の幅を2倍にします。" -#: src/connecteddevice.py:17 +#: src/connecteddevice.py:18 msgid "This feature is not currently supported for your device." msgstr "この機能は現在接続されているデバイスではサポートされていません。" @@ -240,43 +240,53 @@ msgid "Keyboard Shortcuts" msgstr "キーボードショートカット" #: src/gtk/connected-device.ui:218 -msgid "Re-center display shortcut" -msgstr "ディスプレイを中央へ移動" +msgid "XR Effect on/off shortcut" +msgstr "" #: src/gtk/connected-device.ui:219 -msgid "Pin the virtual display to the current position." -msgstr "仮想ディスプレイを現在の視点に固定します。" +msgid "" +"Quickly enable or disable the XR Effect. You may need to enable the effect " +"manually once in order to enable the shortcut." +msgstr "" #: src/gtk/connected-device.ui:238 src/gtk/connected-device.ui:267 -#: src/gtk/connected-device.ui:296 +#: src/gtk/connected-device.ui:296 src/gtk/connected-device.ui:325 msgid "Change" msgstr "変更" #: src/gtk/connected-device.ui:247 +msgid "Re-center display shortcut" +msgstr "ディスプレイを中央へ移動" + +#: src/gtk/connected-device.ui:248 +msgid "Pin the virtual display to the current position." +msgstr "仮想ディスプレイを現在の視点に固定します。" + +#: src/gtk/connected-device.ui:276 msgid "Display distance shortcut" msgstr "ディスプレイ距離の切り替え" -#: src/gtk/connected-device.ui:248 +#: src/gtk/connected-device.ui:277 msgid "Quickly toggle between two predefined distances." msgstr "設定してある2個の距離をすばやく切り替えます。" -#: src/gtk/connected-device.ui:276 +#: src/gtk/connected-device.ui:305 msgid "Toggle follow mode shortcut" msgstr "フォローモードの切り替え" -#: src/gtk/connected-device.ui:277 +#: src/gtk/connected-device.ui:306 msgid "Quickly toggle follow mode." msgstr "フォローモードのオン/オフをすばやく切り替えます。" -#: src/gtk/connected-device.ui:312 src/gtk/connected-device.ui:318 +#: src/gtk/connected-device.ui:341 src/gtk/connected-device.ui:347 msgid "Advanced Settings" msgstr "詳細設定" -#: src/gtk/connected-device.ui:321 +#: src/gtk/connected-device.ui:350 msgid "Find optimal display config" msgstr "ディスプレイ設定を最適化する" -#: src/gtk/connected-device.ui:322 +#: src/gtk/connected-device.ui:351 msgid "" "Automatically modify the glasses display configuration for maximum " "resolution and best scaling when plugged in." @@ -284,29 +294,29 @@ msgstr "" "メガネ接続時、最大解像度と最適なスケーリングのためにディスプレイ設定を自動的" "に変更します。" -#: src/gtk/connected-device.ui:332 +#: src/gtk/connected-device.ui:361 msgid "Use highest refresh rate" msgstr "最大のリフレッシュレートを使用する" -#: src/gtk/connected-device.ui:333 +#: src/gtk/connected-device.ui:362 msgid "Refresh rate may affect performance, disable this to set it manually." msgstr "" "リフレッシュレートはパフォーマンスに影響を与える可能性があります。手動で設定" "する場合は無効にしてください。" -#: src/gtk/connected-device.ui:343 +#: src/gtk/connected-device.ui:372 msgid "Always primary display" msgstr "常にプライマリディスプレイにする" -#: src/gtk/connected-device.ui:344 +#: src/gtk/connected-device.ui:373 msgid "Automatically set the glasses as the primary display when plugged in." msgstr "メガネ接続時、自動的にプライマリディスプレイにします。" -#: src/gtk/connected-device.ui:354 +#: src/gtk/connected-device.ui:383 msgid "Fast SBS mode switching" msgstr "高速SBSモード切り替え" -#: src/gtk/connected-device.ui:355 +#: src/gtk/connected-device.ui:384 msgid "" "Switches glasses to SBS mode immediately when plugged in, if widescreen mode " "is on. May cause instability." @@ -314,11 +324,11 @@ msgstr "" "ワイドスクリーンモードがオンになっている場合、メガネ接続時にたたちにSBSモード" "に切り替えます。不安定になる可能性があります。" -#: src/gtk/connected-device.ui:365 +#: src/gtk/connected-device.ui:394 msgid "Movement look-ahead" msgstr "動きの先読み" -#: src/gtk/connected-device.ui:366 +#: src/gtk/connected-device.ui:395 msgid "" "Counteracts input lag by predicting head-tracking position ahead of render " "time. Stick with default unless virtual display drags behind your head " @@ -328,15 +338,15 @@ msgstr "" "ます。仮想ディスプレイが頭の動きに遅れたり、先に進んだり、非常に揺れたりする" "場合を除き、デフォルトのままで問題ありません。" -#: src/gtk/connected-device.ui:384 +#: src/gtk/connected-device.ui:413 msgid "Default" msgstr "デフォルト" -#: src/gtk/connected-device.ui:396 +#: src/gtk/connected-device.ui:425 msgid "Text Scaling" msgstr "テキストスケーリング" -#: src/gtk/connected-device.ui:397 +#: src/gtk/connected-device.ui:426 msgid "Scaling text below 1.0 will simulate a higher resolution display" msgstr "" "テキストを1.0未満にスケーリングすると、高解像度ディスプレイをシミュレートしま" diff --git a/ui/po/mo/fr/LC_MESSAGES/breezydesktop.mo b/ui/po/mo/fr/LC_MESSAGES/breezydesktop.mo index 244a50e..fe84ab2 100644 Binary files a/ui/po/mo/fr/LC_MESSAGES/breezydesktop.mo and b/ui/po/mo/fr/LC_MESSAGES/breezydesktop.mo differ diff --git a/ui/po/pl.po b/ui/po/pl.po index 3034319..4d3d8d0 100644 --- a/ui/po/pl.po +++ b/ui/po/pl.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-03 21:26-0700\n" +"POT-Creation-Date: 2024-10-18 11:45-0700\n" "PO-Revision-Date: 2024-08-16 10:26-0700\n" "Last-Translator: \n" "Language-Team: Polish \n" @@ -18,13 +18,13 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" -#: src/connecteddevice.py:16 +#: src/connecteddevice.py:17 msgid "" "Switches your glasses into side-by-side mode and doubles the width of the " "display." msgstr "" -#: src/connecteddevice.py:17 +#: src/connecteddevice.py:18 msgid "This feature is not currently supported for your device." msgstr "" @@ -231,94 +231,104 @@ msgid "Keyboard Shortcuts" msgstr "" #: src/gtk/connected-device.ui:218 -msgid "Re-center display shortcut" +msgid "XR Effect on/off shortcut" msgstr "" #: src/gtk/connected-device.ui:219 -msgid "Pin the virtual display to the current position." +msgid "" +"Quickly enable or disable the XR Effect. You may need to enable the effect " +"manually once in order to enable the shortcut." msgstr "" #: src/gtk/connected-device.ui:238 src/gtk/connected-device.ui:267 -#: src/gtk/connected-device.ui:296 +#: src/gtk/connected-device.ui:296 src/gtk/connected-device.ui:325 msgid "Change" msgstr "" #: src/gtk/connected-device.ui:247 -msgid "Display distance shortcut" +msgid "Re-center display shortcut" msgstr "" #: src/gtk/connected-device.ui:248 -msgid "Quickly toggle between two predefined distances." +msgid "Pin the virtual display to the current position." msgstr "" #: src/gtk/connected-device.ui:276 -msgid "Toggle follow mode shortcut" +msgid "Display distance shortcut" msgstr "" #: src/gtk/connected-device.ui:277 +msgid "Quickly toggle between two predefined distances." +msgstr "" + +#: src/gtk/connected-device.ui:305 +msgid "Toggle follow mode shortcut" +msgstr "" + +#: src/gtk/connected-device.ui:306 msgid "Quickly toggle follow mode." msgstr "" -#: src/gtk/connected-device.ui:312 src/gtk/connected-device.ui:318 +#: src/gtk/connected-device.ui:341 src/gtk/connected-device.ui:347 msgid "Advanced Settings" msgstr "" -#: src/gtk/connected-device.ui:321 +#: src/gtk/connected-device.ui:350 msgid "Find optimal display config" msgstr "" -#: src/gtk/connected-device.ui:322 +#: src/gtk/connected-device.ui:351 msgid "" "Automatically modify the glasses display configuration for maximum " "resolution and best scaling when plugged in." msgstr "" -#: src/gtk/connected-device.ui:332 +#: src/gtk/connected-device.ui:361 msgid "Use highest refresh rate" msgstr "" -#: src/gtk/connected-device.ui:333 +#: src/gtk/connected-device.ui:362 msgid "Refresh rate may affect performance, disable this to set it manually." msgstr "" -#: src/gtk/connected-device.ui:343 +#: src/gtk/connected-device.ui:372 msgid "Always primary display" msgstr "" -#: src/gtk/connected-device.ui:344 +#: src/gtk/connected-device.ui:373 msgid "Automatically set the glasses as the primary display when plugged in." msgstr "" -#: src/gtk/connected-device.ui:354 +#: src/gtk/connected-device.ui:383 msgid "Fast SBS mode switching" msgstr "" -#: src/gtk/connected-device.ui:355 +#: src/gtk/connected-device.ui:384 msgid "" "Switches glasses to SBS mode immediately when plugged in, if widescreen mode " "is on. May cause instability." msgstr "" -#: src/gtk/connected-device.ui:365 +#: src/gtk/connected-device.ui:394 msgid "Movement look-ahead" msgstr "" -#: src/gtk/connected-device.ui:366 +#: src/gtk/connected-device.ui:395 msgid "" "Counteracts input lag by predicting head-tracking position ahead of render " "time. Stick with default unless virtual display drags behind your head " "movements, jumps ahead, or is very shaky." msgstr "" -#: src/gtk/connected-device.ui:384 +#: src/gtk/connected-device.ui:413 msgid "Default" msgstr "" -#: src/gtk/connected-device.ui:396 +#: src/gtk/connected-device.ui:425 msgid "Text Scaling" msgstr "" -#: src/gtk/connected-device.ui:397 +#: src/gtk/connected-device.ui:426 msgid "Scaling text below 1.0 will simulate a higher resolution display" msgstr "" diff --git a/ui/po/pt_BR.po b/ui/po/pt_BR.po index 339645c..d508026 100644 --- a/ui/po/pt_BR.po +++ b/ui/po/pt_BR.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-03 21:26-0700\n" +"POT-Creation-Date: 2024-10-18 11:45-0700\n" "PO-Revision-Date: 2024-08-19 09:39-0700\n" "Last-Translator: \n" "Language-Team: Brazilian Portuguese 1);\n" -#: src/connecteddevice.py:16 +#: src/connecteddevice.py:17 msgid "" "Switches your glasses into side-by-side mode and doubles the width of the " "display." @@ -26,7 +26,7 @@ msgstr "" "Altera o modo dos óculos para lado a lado (SBS) e dobra a largura da tela " "(ultrawide)." -#: src/connecteddevice.py:17 +#: src/connecteddevice.py:18 msgid "This feature is not currently supported for your device." msgstr "Este recurso não é atualmente suportado para o seu dispositivo." @@ -239,43 +239,53 @@ msgid "Keyboard Shortcuts" msgstr "Atalhos de teclado" #: src/gtk/connected-device.ui:218 -msgid "Re-center display shortcut" -msgstr "Atalho para recentralizar a tela" +msgid "XR Effect on/off shortcut" +msgstr "" #: src/gtk/connected-device.ui:219 -msgid "Pin the virtual display to the current position." -msgstr "Traga a tela virtual para onde você está olhando." +msgid "" +"Quickly enable or disable the XR Effect. You may need to enable the effect " +"manually once in order to enable the shortcut." +msgstr "" #: src/gtk/connected-device.ui:238 src/gtk/connected-device.ui:267 -#: src/gtk/connected-device.ui:296 +#: src/gtk/connected-device.ui:296 src/gtk/connected-device.ui:325 msgid "Change" msgstr "Alterar" #: src/gtk/connected-device.ui:247 +msgid "Re-center display shortcut" +msgstr "Atalho para recentralizar a tela" + +#: src/gtk/connected-device.ui:248 +msgid "Pin the virtual display to the current position." +msgstr "Traga a tela virtual para onde você está olhando." + +#: src/gtk/connected-device.ui:276 msgid "Display distance shortcut" msgstr "Atalho de distância da tela" -#: src/gtk/connected-device.ui:248 +#: src/gtk/connected-device.ui:277 msgid "Quickly toggle between two predefined distances." msgstr "Alterne rapidamente entre as duas distâncias predefinidas." -#: src/gtk/connected-device.ui:276 +#: src/gtk/connected-device.ui:305 msgid "Toggle follow mode shortcut" msgstr "Atalho para alternar o modo de acompanhamento" -#: src/gtk/connected-device.ui:277 +#: src/gtk/connected-device.ui:306 msgid "Quickly toggle follow mode." msgstr "Alterne rapidamente o modo de acompanhamento." -#: src/gtk/connected-device.ui:312 src/gtk/connected-device.ui:318 +#: src/gtk/connected-device.ui:341 src/gtk/connected-device.ui:347 msgid "Advanced Settings" msgstr "Configurações Avançadas" -#: src/gtk/connected-device.ui:321 +#: src/gtk/connected-device.ui:350 msgid "Find optimal display config" msgstr "Encontre a configuração de tela ideal" -#: src/gtk/connected-device.ui:322 +#: src/gtk/connected-device.ui:351 msgid "" "Automatically modify the glasses display configuration for maximum " "resolution and best scaling when plugged in." @@ -283,30 +293,30 @@ msgstr "" "Modifique automaticamente a configuração de exibição dos óculos para máxima " "resolução e melhor dimensionamento quando conectado." -#: src/gtk/connected-device.ui:332 +#: src/gtk/connected-device.ui:361 msgid "Use highest refresh rate" msgstr "Use a taxa de atualização mais alta" -#: src/gtk/connected-device.ui:333 +#: src/gtk/connected-device.ui:362 msgid "Refresh rate may affect performance, disable this to set it manually." msgstr "" "A taxa de atualização pode afetar o desempenho, desative-a para defini-la " "manualmente." -#: src/gtk/connected-device.ui:343 +#: src/gtk/connected-device.ui:372 msgid "Always primary display" msgstr "Sempre tela principal" -#: src/gtk/connected-device.ui:344 +#: src/gtk/connected-device.ui:373 msgid "Automatically set the glasses as the primary display when plugged in." msgstr "" "Defina automaticamente os óculos como a tela primária quando conectados." -#: src/gtk/connected-device.ui:354 +#: src/gtk/connected-device.ui:383 msgid "Fast SBS mode switching" msgstr "Alternância rápida do modo SBS" -#: src/gtk/connected-device.ui:355 +#: src/gtk/connected-device.ui:384 msgid "" "Switches glasses to SBS mode immediately when plugged in, if widescreen mode " "is on. May cause instability." @@ -314,11 +324,11 @@ msgstr "" "Altera os óculos para o modo SBS imediatamente quando conectados, se o modo " "ultrawide estiver ativado. Pode causar instabilidade." -#: src/gtk/connected-device.ui:365 +#: src/gtk/connected-device.ui:394 msgid "Movement look-ahead" msgstr "Antecipação de movimento" -#: src/gtk/connected-device.ui:366 +#: src/gtk/connected-device.ui:395 msgid "" "Counteracts input lag by predicting head-tracking position ahead of render " "time. Stick with default unless virtual display drags behind your head " @@ -329,15 +339,15 @@ msgstr "" "virtual tenha atrasos, avance ou seja muito instável em relação aos " "movimentos da cabeça " -#: src/gtk/connected-device.ui:384 +#: src/gtk/connected-device.ui:413 msgid "Default" msgstr "Padrão" -#: src/gtk/connected-device.ui:396 +#: src/gtk/connected-device.ui:425 msgid "Text Scaling" msgstr "Redimensionamento de Texto" -#: src/gtk/connected-device.ui:397 +#: src/gtk/connected-device.ui:426 msgid "Scaling text below 1.0 will simulate a higher resolution display" msgstr "" "Redimensionar o texto abaixo de 1.0 simulará uma tela de resolução mais alta" diff --git a/ui/po/ru.po b/ui/po/ru.po index aa3e9fc..d1649f4 100644 --- a/ui/po/ru.po +++ b/ui/po/ru.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-03 21:26-0700\n" +"POT-Creation-Date: 2024-10-18 11:45-0700\n" "PO-Revision-Date: 2024-08-17 09:39-0700\n" "Last-Translator: \n" "Language-Team: Russian \n" @@ -18,14 +18,14 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: src/connecteddevice.py:16 +#: src/connecteddevice.py:17 msgid "" "Switches your glasses into side-by-side mode and doubles the width of the " "display." msgstr "" "Переключает очки в режим «сторона к стороне» и удваивает ширину дисплея." -#: src/connecteddevice.py:17 +#: src/connecteddevice.py:18 msgid "This feature is not currently supported for your device." msgstr "Эта функция в настоящее время не поддерживается для вашего устройства." @@ -239,43 +239,53 @@ msgid "Keyboard Shortcuts" msgstr "Сочетания клавиш" #: src/gtk/connected-device.ui:218 -msgid "Re-center display shortcut" -msgstr "Сочетание клавиш для перецентровки дисплея" +msgid "XR Effect on/off shortcut" +msgstr "" #: src/gtk/connected-device.ui:219 -msgid "Pin the virtual display to the current position." -msgstr "Фиксировать виртуальный дисплей в текущем положении." +msgid "" +"Quickly enable or disable the XR Effect. You may need to enable the effect " +"manually once in order to enable the shortcut." +msgstr "" #: src/gtk/connected-device.ui:238 src/gtk/connected-device.ui:267 -#: src/gtk/connected-device.ui:296 +#: src/gtk/connected-device.ui:296 src/gtk/connected-device.ui:325 msgid "Change" msgstr "Изменить" #: src/gtk/connected-device.ui:247 +msgid "Re-center display shortcut" +msgstr "Сочетание клавиш для перецентровки дисплея" + +#: src/gtk/connected-device.ui:248 +msgid "Pin the virtual display to the current position." +msgstr "Фиксировать виртуальный дисплей в текущем положении." + +#: src/gtk/connected-device.ui:276 msgid "Display distance shortcut" msgstr "Сочетание клавиш для расстояния дисплея" -#: src/gtk/connected-device.ui:248 +#: src/gtk/connected-device.ui:277 msgid "Quickly toggle between two predefined distances." msgstr "Быстро переключаться между двумя предопределенными расстояниями." -#: src/gtk/connected-device.ui:276 +#: src/gtk/connected-device.ui:305 msgid "Toggle follow mode shortcut" msgstr "Сочетание клавиш для переключения режима следования" -#: src/gtk/connected-device.ui:277 +#: src/gtk/connected-device.ui:306 msgid "Quickly toggle follow mode." msgstr "Быстро переключать режим следования." -#: src/gtk/connected-device.ui:312 src/gtk/connected-device.ui:318 +#: src/gtk/connected-device.ui:341 src/gtk/connected-device.ui:347 msgid "Advanced Settings" msgstr "Дополнительные настройки" -#: src/gtk/connected-device.ui:321 +#: src/gtk/connected-device.ui:350 msgid "Find optimal display config" msgstr "Найти оптимальную конфигурацию дисплея" -#: src/gtk/connected-device.ui:322 +#: src/gtk/connected-device.ui:351 msgid "" "Automatically modify the glasses display configuration for maximum " "resolution and best scaling when plugged in." @@ -283,31 +293,31 @@ msgstr "" "Автоматически изменять конфигурацию дисплея очков для максимального " "разрешения и лучшей масштабирования при подключении." -#: src/gtk/connected-device.ui:332 +#: src/gtk/connected-device.ui:361 msgid "Use highest refresh rate" msgstr "Использовать высшую частоту обновления" -#: src/gtk/connected-device.ui:333 +#: src/gtk/connected-device.ui:362 msgid "Refresh rate may affect performance, disable this to set it manually." msgstr "" "Частота обновления может повлиять на производительность, отключите это, " "чтобы установить ее вручную." -#: src/gtk/connected-device.ui:343 +#: src/gtk/connected-device.ui:372 msgid "Always primary display" msgstr "Всегда основной дисплей" -#: src/gtk/connected-device.ui:344 +#: src/gtk/connected-device.ui:373 msgid "Automatically set the glasses as the primary display when plugged in." msgstr "" "Автоматически устанавливать очки в качестве основного дисплея при " "подключении." -#: src/gtk/connected-device.ui:354 +#: src/gtk/connected-device.ui:383 msgid "Fast SBS mode switching" msgstr "Быстрое переключение режима SBS" -#: src/gtk/connected-device.ui:355 +#: src/gtk/connected-device.ui:384 msgid "" "Switches glasses to SBS mode immediately when plugged in, if widescreen mode " "is on. May cause instability." @@ -315,11 +325,11 @@ msgstr "" "Переключает очки в режим SBS сразу при подключении, если режим широкого " "экрана включен. Может вызвать нестабильность." -#: src/gtk/connected-device.ui:365 +#: src/gtk/connected-device.ui:394 msgid "Movement look-ahead" msgstr "Прогнозирование движения" -#: src/gtk/connected-device.ui:366 +#: src/gtk/connected-device.ui:395 msgid "" "Counteracts input lag by predicting head-tracking position ahead of render " "time. Stick with default unless virtual display drags behind your head " @@ -330,15 +340,15 @@ msgstr "" "виртуальный дисплей не отстает от движений вашей головы, не опережает или не " "очень трясётся." -#: src/gtk/connected-device.ui:384 +#: src/gtk/connected-device.ui:413 msgid "Default" msgstr "По умолчанию" -#: src/gtk/connected-device.ui:396 +#: src/gtk/connected-device.ui:425 msgid "Text Scaling" msgstr "" -#: src/gtk/connected-device.ui:397 +#: src/gtk/connected-device.ui:426 msgid "Scaling text below 1.0 will simulate a higher resolution display" msgstr "" diff --git a/ui/po/sv.po b/ui/po/sv.po index 9a6d458..ba37c96 100644 --- a/ui/po/sv.po +++ b/ui/po/sv.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-03 21:26-0700\n" +"POT-Creation-Date: 2024-10-18 11:45-0700\n" "PO-Revision-Date: 2024-08-16 10:31-0700\n" "Last-Translator: \n" "Language-Team: Swedish \n" @@ -17,7 +17,7 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: src/connecteddevice.py:16 +#: src/connecteddevice.py:17 msgid "" "Switches your glasses into side-by-side mode and doubles the width of the " "display." @@ -25,7 +25,7 @@ msgstr "" "Växlar dina glasögon till side-by-side-läget och dubblerar bredden på " "visningen." -#: src/connecteddevice.py:17 +#: src/connecteddevice.py:18 msgid "This feature is not currently supported for your device." msgstr "Din enhet stöder inte den här funktionen för tillfället." @@ -238,43 +238,53 @@ msgid "Keyboard Shortcuts" msgstr "Tangentbordsgenvägar" #: src/gtk/connected-device.ui:218 -msgid "Re-center display shortcut" -msgstr "Om-centrering tangentbordsgenväg" +msgid "XR Effect on/off shortcut" +msgstr "" #: src/gtk/connected-device.ui:219 -msgid "Pin the virtual display to the current position." -msgstr "Fäst den virtuella skärmen i den nuvarande positionen." +msgid "" +"Quickly enable or disable the XR Effect. You may need to enable the effect " +"manually once in order to enable the shortcut." +msgstr "" #: src/gtk/connected-device.ui:238 src/gtk/connected-device.ui:267 -#: src/gtk/connected-device.ui:296 +#: src/gtk/connected-device.ui:296 src/gtk/connected-device.ui:325 msgid "Change" msgstr "Ändra" #: src/gtk/connected-device.ui:247 +msgid "Re-center display shortcut" +msgstr "Om-centrering tangentbordsgenväg" + +#: src/gtk/connected-device.ui:248 +msgid "Pin the virtual display to the current position." +msgstr "Fäst den virtuella skärmen i den nuvarande positionen." + +#: src/gtk/connected-device.ui:276 msgid "Display distance shortcut" msgstr "Skärm avstånd genväg" -#: src/gtk/connected-device.ui:248 +#: src/gtk/connected-device.ui:277 msgid "Quickly toggle between two predefined distances." msgstr "Växla snabbt mellan två fördefinierade avstånd." -#: src/gtk/connected-device.ui:276 +#: src/gtk/connected-device.ui:305 msgid "Toggle follow mode shortcut" msgstr "Växla följ läge kort" -#: src/gtk/connected-device.ui:277 +#: src/gtk/connected-device.ui:306 msgid "Quickly toggle follow mode." msgstr "Växla snabbt följ läge." -#: src/gtk/connected-device.ui:312 src/gtk/connected-device.ui:318 +#: src/gtk/connected-device.ui:341 src/gtk/connected-device.ui:347 msgid "Advanced Settings" msgstr "Avancerade inställningar" -#: src/gtk/connected-device.ui:321 +#: src/gtk/connected-device.ui:350 msgid "Find optimal display config" msgstr "Hitta optimal konfiguration till skärmen" -#: src/gtk/connected-device.ui:322 +#: src/gtk/connected-device.ui:351 msgid "" "Automatically modify the glasses display configuration for maximum " "resolution and best scaling when plugged in." @@ -282,29 +292,29 @@ msgstr "" "Ändrar automatisk glasögonens skärmkonfiguration för maximal upplösning och " "bästa skälning när den är ansluten." -#: src/gtk/connected-device.ui:332 +#: src/gtk/connected-device.ui:361 msgid "Use highest refresh rate" msgstr "Använd högsta uppdateringsfrekvens" -#: src/gtk/connected-device.ui:333 +#: src/gtk/connected-device.ui:362 msgid "Refresh rate may affect performance, disable this to set it manually." msgstr "" "Uppdateringsfrekvens kan påverka prestanda, inaktivera detta för att ställa " "in det manuellt." -#: src/gtk/connected-device.ui:343 +#: src/gtk/connected-device.ui:372 msgid "Always primary display" msgstr "Alltid primär skärm" -#: src/gtk/connected-device.ui:344 +#: src/gtk/connected-device.ui:373 msgid "Automatically set the glasses as the primary display when plugged in." msgstr "Ställer automatisk glasögon som primär skärm när den är ansluten." -#: src/gtk/connected-device.ui:354 +#: src/gtk/connected-device.ui:383 msgid "Fast SBS mode switching" msgstr "Snabb SBS läge växling" -#: src/gtk/connected-device.ui:355 +#: src/gtk/connected-device.ui:384 msgid "" "Switches glasses to SBS mode immediately when plugged in, if widescreen mode " "is on. May cause instability." @@ -312,11 +322,11 @@ msgstr "" "Växlar glasögon till SBS läge omedelbart när den är ansluten, om brevläge är " "på. Kan orsaka instabilitet." -#: src/gtk/connected-device.ui:365 +#: src/gtk/connected-device.ui:394 msgid "Movement look-ahead" msgstr "Rörs förväntning" -#: src/gtk/connected-device.ui:366 +#: src/gtk/connected-device.ui:395 msgid "" "Counteracts input lag by predicting head-tracking position ahead of render " "time. Stick with default unless virtual display drags behind your head " @@ -325,15 +335,15 @@ msgstr "" "Motverkar ingångsfördröjning genom förutsägelse av huvudrörelser.Behåll " "standardinställningen om inte skärmen skakar mycket eller rörsig konstigt." -#: src/gtk/connected-device.ui:384 +#: src/gtk/connected-device.ui:413 msgid "Default" msgstr "Standard" -#: src/gtk/connected-device.ui:396 +#: src/gtk/connected-device.ui:425 msgid "Text Scaling" msgstr "" -#: src/gtk/connected-device.ui:397 +#: src/gtk/connected-device.ui:426 msgid "Scaling text below 1.0 will simulate a higher resolution display" msgstr "" diff --git a/ui/po/uk_UA.po b/ui/po/uk_UA.po index c729347..f03b93c 100644 --- a/ui/po/uk_UA.po +++ b/ui/po/uk_UA.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-03 21:26-0700\n" +"POT-Creation-Date: 2024-10-18 11:45-0700\n" "PO-Revision-Date: 2024-08-17 10:08-0700\n" "Last-Translator: \n" "Language-Team: Ukrainian \n" @@ -18,13 +18,13 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " "n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -#: src/connecteddevice.py:16 +#: src/connecteddevice.py:17 msgid "" "Switches your glasses into side-by-side mode and doubles the width of the " "display." msgstr "Переключає окуляри в режим «бок о бок» і подвоює ширину дисплея." -#: src/connecteddevice.py:17 +#: src/connecteddevice.py:18 msgid "This feature is not currently supported for your device." msgstr "Ця функція наразі не підтримується на вашому пристрої." @@ -239,43 +239,53 @@ msgid "Keyboard Shortcuts" msgstr "Сполучення клавіш" #: src/gtk/connected-device.ui:218 -msgid "Re-center display shortcut" -msgstr "Сполучення клавіш для центрування дисплея" +msgid "XR Effect on/off shortcut" +msgstr "" #: src/gtk/connected-device.ui:219 -msgid "Pin the virtual display to the current position." -msgstr "Фіксувати віртуальний дисплей у поточній позиції." +msgid "" +"Quickly enable or disable the XR Effect. You may need to enable the effect " +"manually once in order to enable the shortcut." +msgstr "" #: src/gtk/connected-device.ui:238 src/gtk/connected-device.ui:267 -#: src/gtk/connected-device.ui:296 +#: src/gtk/connected-device.ui:296 src/gtk/connected-device.ui:325 msgid "Change" msgstr "Змінити" #: src/gtk/connected-device.ui:247 +msgid "Re-center display shortcut" +msgstr "Сполучення клавіш для центрування дисплея" + +#: src/gtk/connected-device.ui:248 +msgid "Pin the virtual display to the current position." +msgstr "Фіксувати віртуальний дисплей у поточній позиції." + +#: src/gtk/connected-device.ui:276 msgid "Display distance shortcut" msgstr "Сполучення клавіш для відстані дисплея" -#: src/gtk/connected-device.ui:248 +#: src/gtk/connected-device.ui:277 msgid "Quickly toggle between two predefined distances." msgstr "Швидко перемикатися між двома попередньо визначеними відстанями." -#: src/gtk/connected-device.ui:276 +#: src/gtk/connected-device.ui:305 msgid "Toggle follow mode shortcut" msgstr "Сполучення клавіш для перемикання режиму слідування" -#: src/gtk/connected-device.ui:277 +#: src/gtk/connected-device.ui:306 msgid "Quickly toggle follow mode." msgstr "Швидко перемикати режим слідування." -#: src/gtk/connected-device.ui:312 src/gtk/connected-device.ui:318 +#: src/gtk/connected-device.ui:341 src/gtk/connected-device.ui:347 msgid "Advanced Settings" msgstr "Додаткові налаштування" -#: src/gtk/connected-device.ui:321 +#: src/gtk/connected-device.ui:350 msgid "Find optimal display config" msgstr "Знайти оптимальну конфігурацію дисплея" -#: src/gtk/connected-device.ui:322 +#: src/gtk/connected-device.ui:351 msgid "" "Automatically modify the glasses display configuration for maximum " "resolution and best scaling when plugged in." @@ -283,29 +293,29 @@ msgstr "" "Автоматично змінює конфігурацію дисплея окулярів для максимальної роздільної " "здатності і найкращого масштабування при підключенні." -#: src/gtk/connected-device.ui:332 +#: src/gtk/connected-device.ui:361 msgid "Use highest refresh rate" msgstr "Використовувати найвищу частоту оновлення" -#: src/gtk/connected-device.ui:333 +#: src/gtk/connected-device.ui:362 msgid "Refresh rate may affect performance, disable this to set it manually." msgstr "" "Частота оновлення може вплинути на продуктивність, вимкніть це, щоб " "встановити її вручну." -#: src/gtk/connected-device.ui:343 +#: src/gtk/connected-device.ui:372 msgid "Always primary display" msgstr "Завжди основний дисплей" -#: src/gtk/connected-device.ui:344 +#: src/gtk/connected-device.ui:373 msgid "Automatically set the glasses as the primary display when plugged in." msgstr "Автоматично встановлює окуляри як основний дисплей при підключенні." -#: src/gtk/connected-device.ui:354 +#: src/gtk/connected-device.ui:383 msgid "Fast SBS mode switching" msgstr "Швидке перемикання режиму SBS" -#: src/gtk/connected-device.ui:355 +#: src/gtk/connected-device.ui:384 msgid "" "Switches glasses to SBS mode immediately when plugged in, if widescreen mode " "is on. May cause instability." @@ -313,11 +323,11 @@ msgstr "" "Переключає окуляри в режим SBS відразу після підключення, якщо режим " "широкого екрана увімкнено. Може викликати нестабільність." -#: src/gtk/connected-device.ui:365 +#: src/gtk/connected-device.ui:394 msgid "Movement look-ahead" msgstr "Прогнозування руху" -#: src/gtk/connected-device.ui:366 +#: src/gtk/connected-device.ui:395 msgid "" "Counteracts input lag by predicting head-tracking position ahead of render " "time. Stick with default unless virtual display drags behind your head " @@ -328,15 +338,15 @@ msgstr "" "віртуальний дисплей відстає від рухів вашої голови, випереджає або дуже " "тремтить." -#: src/gtk/connected-device.ui:384 +#: src/gtk/connected-device.ui:413 msgid "Default" msgstr "За замовчуванням" -#: src/gtk/connected-device.ui:396 +#: src/gtk/connected-device.ui:425 msgid "Text Scaling" msgstr "" -#: src/gtk/connected-device.ui:397 +#: src/gtk/connected-device.ui:426 msgid "Scaling text below 1.0 will simulate a higher resolution display" msgstr "" diff --git a/ui/po/zh_CN.po b/ui/po/zh_CN.po index a4fa7ca..f40dc97 100644 --- a/ui/po/zh_CN.po +++ b/ui/po/zh_CN.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-10-03 21:26-0700\n" +"POT-Creation-Date: 2024-10-18 11:45-0700\n" "PO-Revision-Date: 2024-08-02 20:55-0700\n" "Last-Translator: \n" "Language-Team: Chinese (simplified) \n" @@ -16,13 +16,13 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: src/connecteddevice.py:16 +#: src/connecteddevice.py:17 msgid "" "Switches your glasses into side-by-side mode and doubles the width of the " "display." msgstr "" -#: src/connecteddevice.py:17 +#: src/connecteddevice.py:18 msgid "This feature is not currently supported for your device." msgstr "" @@ -229,94 +229,104 @@ msgid "Keyboard Shortcuts" msgstr "" #: src/gtk/connected-device.ui:218 -msgid "Re-center display shortcut" +msgid "XR Effect on/off shortcut" msgstr "" #: src/gtk/connected-device.ui:219 -msgid "Pin the virtual display to the current position." +msgid "" +"Quickly enable or disable the XR Effect. You may need to enable the effect " +"manually once in order to enable the shortcut." msgstr "" #: src/gtk/connected-device.ui:238 src/gtk/connected-device.ui:267 -#: src/gtk/connected-device.ui:296 +#: src/gtk/connected-device.ui:296 src/gtk/connected-device.ui:325 msgid "Change" msgstr "" #: src/gtk/connected-device.ui:247 -msgid "Display distance shortcut" +msgid "Re-center display shortcut" msgstr "" #: src/gtk/connected-device.ui:248 -msgid "Quickly toggle between two predefined distances." +msgid "Pin the virtual display to the current position." msgstr "" #: src/gtk/connected-device.ui:276 -msgid "Toggle follow mode shortcut" +msgid "Display distance shortcut" msgstr "" #: src/gtk/connected-device.ui:277 +msgid "Quickly toggle between two predefined distances." +msgstr "" + +#: src/gtk/connected-device.ui:305 +msgid "Toggle follow mode shortcut" +msgstr "" + +#: src/gtk/connected-device.ui:306 msgid "Quickly toggle follow mode." msgstr "" -#: src/gtk/connected-device.ui:312 src/gtk/connected-device.ui:318 +#: src/gtk/connected-device.ui:341 src/gtk/connected-device.ui:347 msgid "Advanced Settings" msgstr "" -#: src/gtk/connected-device.ui:321 +#: src/gtk/connected-device.ui:350 msgid "Find optimal display config" msgstr "" -#: src/gtk/connected-device.ui:322 +#: src/gtk/connected-device.ui:351 msgid "" "Automatically modify the glasses display configuration for maximum " "resolution and best scaling when plugged in." msgstr "" -#: src/gtk/connected-device.ui:332 +#: src/gtk/connected-device.ui:361 msgid "Use highest refresh rate" msgstr "" -#: src/gtk/connected-device.ui:333 +#: src/gtk/connected-device.ui:362 msgid "Refresh rate may affect performance, disable this to set it manually." msgstr "" -#: src/gtk/connected-device.ui:343 +#: src/gtk/connected-device.ui:372 msgid "Always primary display" msgstr "" -#: src/gtk/connected-device.ui:344 +#: src/gtk/connected-device.ui:373 msgid "Automatically set the glasses as the primary display when plugged in." msgstr "" -#: src/gtk/connected-device.ui:354 +#: src/gtk/connected-device.ui:383 msgid "Fast SBS mode switching" msgstr "" -#: src/gtk/connected-device.ui:355 +#: src/gtk/connected-device.ui:384 msgid "" "Switches glasses to SBS mode immediately when plugged in, if widescreen mode " "is on. May cause instability." msgstr "" -#: src/gtk/connected-device.ui:365 +#: src/gtk/connected-device.ui:394 msgid "Movement look-ahead" msgstr "" -#: src/gtk/connected-device.ui:366 +#: src/gtk/connected-device.ui:395 msgid "" "Counteracts input lag by predicting head-tracking position ahead of render " "time. Stick with default unless virtual display drags behind your head " "movements, jumps ahead, or is very shaky." msgstr "" -#: src/gtk/connected-device.ui:384 +#: src/gtk/connected-device.ui:413 msgid "Default" msgstr "" -#: src/gtk/connected-device.ui:396 +#: src/gtk/connected-device.ui:425 msgid "Text Scaling" msgstr "" -#: src/gtk/connected-device.ui:397 +#: src/gtk/connected-device.ui:426 msgid "Scaling text below 1.0 will simulate a higher resolution display" msgstr "" diff --git a/ui/src/connecteddevice.py b/ui/src/connecteddevice.py index a1883ba..9554dcd 100644 --- a/ui/src/connecteddevice.py +++ b/ui/src/connecteddevice.py @@ -6,6 +6,7 @@ from .shortcutdialog import bind_shortcut_settings from .statemanager import StateManager from .xrdriveripc import XRDriverIPC import gettext +import threading _ = gettext.gettext @@ -30,6 +31,8 @@ class ConnectedDevice(Gtk.Box): curved_display_switch = Gtk.Template.Child() set_toggle_display_distance_start_button = Gtk.Template.Child() set_toggle_display_distance_end_button = Gtk.Template.Child() + reassign_toggle_xr_effect_shortcut_button = Gtk.Template.Child() + toggle_xr_effect_shortcut_label = Gtk.Template.Child() reassign_recenter_display_shortcut_button = Gtk.Template.Child() recenter_display_shortcut_label = Gtk.Template.Child() reassign_toggle_display_distance_shortcut_button = Gtk.Template.Child() @@ -49,6 +52,7 @@ class ConnectedDevice(Gtk.Box): def __init__(self): super(Gtk.Box, self).__init__() self.init_template() + self.active = True self.all_enabled_state_inputs = [ self.display_distance_scale, self.display_size_scale, @@ -78,6 +82,7 @@ class ConnectedDevice(Gtk.Box): self.desktop_settings.bind('text-scaling-factor', self.text_scaling_adjustment, 'value', Gio.SettingsBindFlags.DEFAULT) bind_shortcut_settings(self.get_parent(), [ + [self.reassign_toggle_xr_effect_shortcut_button, self.toggle_xr_effect_shortcut_label], [self.reassign_recenter_display_shortcut_button, self.recenter_display_shortcut_label], [self.reassign_toggle_display_distance_shortcut_button, self.toggle_display_distance_shortcut_label], [self.reassign_toggle_follow_shortcut_button, self.toggle_follow_shortcut_label] @@ -96,16 +101,15 @@ class ConnectedDevice(Gtk.Box): self.follow_mode_switch.set_active(self.state_manager.get_property('follow-mode')) self.follow_mode_switch.connect('notify::active', self._refresh_follow_mode) - self.effect_enable_switch.set_active(self._is_config_enabled(self.ipc.retrieve_config()) and self.extensions_manager.is_enabled()) - self.effect_enable_switch.connect('notify::active', self._refresh_inputs_for_enabled_state) + self._refresh_enabled_state(); + self.effect_enable_switch.connect('notify::active', self._handle_enabled_state) self.use_optimal_monitor_config_switch.connect('notify::active', self._refresh_use_optimal_monitor_config) self._handle_enabled_features(self.state_manager, None) self._handle_device_supports_sbs(self.state_manager, None) - self._refresh_inputs_for_enabled_state(self.effect_enable_switch, None) + self._handle_enabled_state(self.effect_enable_switch, None) self._refresh_use_optimal_monitor_config(self.use_optimal_monitor_config_switch, None) - self.extensions_manager.bind_property('breezy-enabled', self.effect_enable_switch, 'active', GObject.BindingFlags.BIDIRECTIONAL) self.connect("destroy", self._on_widget_destroy) @@ -122,20 +126,30 @@ class ConnectedDevice(Gtk.Box): self.widescreen_mode_switch.set_sensitive(state_manager.get_property('device-supports-sbs')) subtitle = self.widescreen_mode_subtitle if state_manager.get_property('device-supports-sbs') else self.widescreen_mode_not_supported_subtitle self.widescreen_mode_row.set_subtitle(subtitle) + + def _refresh_enabled_state(self): + enabled = self._is_config_enabled(self.ipc.retrieve_config()) and self.extensions_manager.is_enabled() + if enabled != self.effect_enable_switch.get_active(): + self.effect_enable_switch.set_active(enabled) + + if self.active: threading.Timer(1.0, self._refresh_enabled_state).start() def _is_config_enabled(self, config): return config.get('disabled') == False and 'breezy_desktop' in config.get('external_mode', []) - def _refresh_inputs_for_enabled_state(self, switch, param): + def _handle_enabled_state(self, switch, param): requesting_enabled = switch.get_active() - self.extensions_manager.set_property('breezy-enabled', requesting_enabled) + config = self.ipc.retrieve_config(False) if requesting_enabled: - config = self.ipc.retrieve_config(False) + self.extensions_manager.set_property('breezy-enabled', True) if not self._is_config_enabled(config): config['disabled'] = False config['output_mode'] = 'external_only' config['external_mode'] = ['breezy_desktop'] self.ipc.write_config(config) + else: + config['external_mode'] = [] + self.ipc.write_config(config) for widget in self.all_enabled_state_inputs: widget.set_sensitive(requesting_enabled) @@ -168,12 +182,12 @@ class ConnectedDevice(Gtk.Box): reload_display_distance_toggle_button(widget) def _on_widget_destroy(self, widget): + self.active = False self.state_manager.unbind_property('follow-mode', self.follow_mode_switch, 'active') self.settings.unbind('display-distance', self.display_distance_adjustment, 'value') self.settings.unbind('display-size', self.display_size_adjustment, 'value') self.settings.unbind('follow-threshold', self.follow_threshold_adjustment, 'value') self.settings.unbind('widescreen-mode', self.widescreen_mode_switch, 'active') - self.extensions_manager.unbind_property('breezy-enabled', self.effect_enable_switch, 'active') def reload_display_distance_toggle_button(widget): distance = SettingsManager.get_instance().settings.get_double(widget.get_name()) diff --git a/ui/src/gtk/connected-device.ui b/ui/src/gtk/connected-device.ui index 3a73559..26f7063 100644 --- a/ui/src/gtk/connected-device.ui +++ b/ui/src/gtk/connected-device.ui @@ -213,6 +213,35 @@ Keyboard Shortcuts + + + XR Effect on/off shortcut + Quickly enable or disable the XR Effect. You may need to enable the effect manually once in order to enable the shortcut. + 2 + + + 30 + 30 + + + 3 + + + + + + + toggle-xr-effect-shortcut + 3 + Change + + + + + + Re-center display shortcut