From f924fdde3b4238a1d144da4f2274783aa42ce043 Mon Sep 17 00:00:00 2001 From: wheaney <42350981+wheaney@users.noreply.github.com> Date: Sat, 17 Aug 2024 11:44:17 -0700 Subject: [PATCH 01/30] Add support for gnome-44-max build via a special patch and build process so it doesn't have to be maintained from a branch --- .gitignore | 1 + bin/package_gnome | 20 ++- gnome-44-max.patch | 427 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 446 insertions(+), 2 deletions(-) create mode 100644 gnome-44-max.patch diff --git a/.gitignore b/.gitignore index a9b274e..fc25d01 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ gschemas.compiled .flatpak-builder/ out/ *.po~ +gnome-44-max/ diff --git a/bin/package_gnome b/bin/package_gnome index 1f9dd0f..9a5dd7f 100755 --- a/bin/package_gnome +++ b/bin/package_gnome @@ -10,9 +10,25 @@ echo "Building Breezy GNOME for $ARCH" SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd) ROOT_DIR=$(realpath $SCRIPT_DIR/..) VULKAN_DIR=$ROOT_DIR/vulkan -GNOME_DIR=$ROOT_DIR/gnome + +# if GNOME_44_MAX is not set +if [ -z "$GNOME_44_MAX" ]; then + GNOME_DIR=$ROOT_DIR/gnome + BUILD_FILE_NAME=breezyGNOME-$ARCH.tar.gz +else + # use a special directory for the GNOME 44 max build, ignored by git + GNOME_DIR=$ROOT_DIR/gnome-44-max + rm -rf $GNOME_DIR + mkdir $GNOME_DIR + BUILD_FILE_NAME=breezyGNOME.44-max.$ARCH.tar.gz + + # copy the GNOME extension source code to the new directory and apply + # a patch that makes it compatible with GNOME 44 and below + cp -ra $ROOT_DIR/gnome/* $GNOME_DIR + rm -rf $GNOME_DIR/build + git apply gnome-44-max.patch +fi GNOME_BUILD_DIR=$GNOME_DIR/build -BUILD_FILE_NAME=breezyGNOME-$ARCH.tar.gz mkdir -p $GNOME_BUILD_DIR if [ -e "$GNOME_BUILD_DIR/$BUILD_FILE_NAME" ]; then diff --git a/gnome-44-max.patch b/gnome-44-max.patch new file mode 100644 index 0000000..ce9b4bf --- /dev/null +++ b/gnome-44-max.patch @@ -0,0 +1,427 @@ +diff --git a/gnome-44-max/bin/setup b/gnome-44-max/bin/setup +index 7ee291a..3bd001b 100755 +--- a/gnome-44-max/bin/setup ++++ b/gnome-44-max/bin/setup +@@ -11,6 +11,7 @@ check_command() { + + check_command "flatpak" + check_command "gnome-extensions" ++check_command "glib-compile-schemas" + + # This script gets packaged with the release and should do the bulk of the setup work. This allows this setup to be tied + # to a specific release of the code, and guarantees it will never run along-side newer or older binaries. +@@ -78,8 +79,10 @@ echo "Copying the manifest file to ${DATA_DIR}" + mkdir -p $DATA_DIR + cp manifest $DATA_DIR + +-echo "Installing the breezydesktop@xronlinux.com GNOME extension" +-gnome-extensions install --force breezydesktop@xronlinux.com.shell-extension.zip ++EXTENSION_UUID="breezydesktop@xronlinux.com" ++echo "Installing the $EXTENSION_UUID GNOME extension" ++gnome-extensions install --force "$EXTENSION_UUID.shell-extension.zip" ++glib-compile-schemas "$GNOME_SHELL_DATA_DIR/extensions/$EXTENSION_UUID/schemas" + + echo "Installing the Breezy Desktop UI Flatpak (this may take a couple minutes the first time)" + flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo +diff --git a/gnome-44-max/src/cursor.js b/gnome-44-max/src/cursor.js +index 36ad7ee..41102a0 100644 +--- a/gnome-44-max/src/cursor.js ++++ b/gnome-44-max/src/cursor.js +@@ -15,11 +15,11 @@ + // You should have received a copy of the GNU General Public License + // along with this program. If not, see . + +-import Clutter from 'gi://Clutter'; +-import GObject from 'gi://GObject'; ++const Clutter = imports.gi.Clutter; ++const GObject = imports.gi.GObject; + + // Copied almost verbatim from ui/magnifier.js. +-export const MouseSpriteContent = GObject.registerClass({ ++var MouseSpriteContent = GObject.registerClass({ + Implements: [Clutter.Content], + }, class MouseSpriteContent extends GObject.Object { + _init() { +diff --git a/gnome-44-max/src/cursormanager.js b/gnome-44-max/src/cursormanager.js +index 44b3f5f..fa65a4a 100644 +--- a/gnome-44-max/src/cursormanager.js ++++ b/gnome-44-max/src/cursormanager.js +@@ -1,11 +1,15 @@ +-import Clutter from 'gi://Clutter'; +-import Meta from 'gi://Meta'; +-import * as PointerWatcher from 'resource:///org/gnome/shell/ui/pointerWatcher.js'; +-import { MouseSpriteContent } from './cursor.js'; +-import Globals from './globals.js'; ++const Clutter = imports.gi.Clutter; ++const Meta = imports.gi.Meta; ++const PointerWatcher = imports.ui.pointerWatcher; ++ ++const ExtensionUtils = imports.misc.extensionUtils; ++const Me = ExtensionUtils.getCurrentExtension(); ++ ++const Globals = Me.imports.globals; ++const { MouseSpriteContent } = Me.imports.cursor; + + // Taken from https://github.com/jkitching/soft-brightness-plus +-export class CursorManager { ++var CursorManager = class CursorManager { + constructor(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 cd17162..435154d 100644 +--- a/gnome-44-max/src/extension.js ++++ b/gnome-44-max/src/extension.js +@@ -1,19 +1,21 @@ +-import Clutter from 'gi://Clutter' +-import Gio from 'gi://Gio'; +-import GLib from 'gi://GLib'; +-import Meta from 'gi://Meta'; +-import Shell from 'gi://Shell'; +-import St from 'gi://St'; +- +-import { CursorManager } from './cursormanager.js'; +-import Globals from './globals.js'; +-import { Logger } from './logger.js'; +-import { MonitorManager } from './monitormanager.js'; +-import { isValidKeepAlive } from './time.js'; +-import { IPC_FILE_PATH, XREffect } from './xrEffect.js'; +- +-import {Extension} from 'resource:///org/gnome/shell/extensions/extension.js'; +-import * as Main from 'resource:///org/gnome/shell/ui/main.js'; ++const Clutter = imports.gi.Clutter; ++const Gio = imports.gi.Gio; ++const GLib = imports.gi.GLib; ++const Meta = imports.gi.Meta; ++const Shell = imports.gi.Shell; ++const St = imports.gi.St; ++ ++const Main = imports.ui.main; ++ ++const ExtensionUtils = imports.misc.extensionUtils; ++const Me = ExtensionUtils.getCurrentExtension(); ++ ++const Globals = Me.imports.globals; ++const { CursorManager } = Me.imports.cursormanager; ++const { Logger } = Me.imports.logger; ++const { MonitorManager } = Me.imports.monitormanager; ++const { isValidKeepAlive } = Me.imports.time; ++const { IPC_FILE_PATH, XREffect } = Me.imports.xrEffect; + + const NESTED_MONITOR_PRODUCT = 'MetaMonitor'; + const SUPPORTED_MONITOR_PRODUCTS = [ +@@ -29,11 +31,10 @@ const SUPPORTED_MONITOR_PRODUCTS = [ + NESTED_MONITOR_PRODUCT + ]; + +-export default class BreezyDesktopExtension extends Extension { +- constructor(metadata, uuid) { +- super(metadata, uuid); +- +- this.settings = this.getSettings(); ++class BreezyDesktopExtension { ++ constructor(extensionPath) { ++ this.path = extensionPath; ++ this.settings = ExtensionUtils.getSettings(); + + // Set/destroyed by enable/disable + this._cursor_manager = null; +@@ -593,6 +594,6 @@ export default class BreezyDesktopExtension extends Extension { + } + } + +-function init() { +- return new Extension(); ++function init(meta) { ++ return new BreezyDesktopExtension(meta.path); + } +diff --git a/gnome-44-max/src/globals.js b/gnome-44-max/src/globals.js +index 124d2e1..79a3a87 100644 +--- a/gnome-44-max/src/globals.js ++++ b/gnome-44-max/src/globals.js +@@ -2,5 +2,4 @@ const Globals = { + logger: null, + ipc_file: null, // Gio.File instance, file exists if set + extension_dir: null // string path +-} +-export default Globals; +\ No newline at end of file ++} +\ No newline at end of file +diff --git a/gnome-44-max/src/ipc.js b/gnome-44-max/src/ipc.js +index a729368..d5f7ab0 100644 +--- a/gnome-44-max/src/ipc.js ++++ b/gnome-44-max/src/ipc.js +@@ -1,30 +1,30 @@ +-export const UINT8_SIZE = 1; +-export const BOOL_SIZE = UINT8_SIZE; +-export const UINT_SIZE = 4; +-export const FLOAT_SIZE = 4; ++var UINT8_SIZE = 1; ++var BOOL_SIZE = UINT8_SIZE; ++var UINT_SIZE = 4; ++var FLOAT_SIZE = 4; + +-export const DATA_VIEW_INFO_OFFSET_INDEX = 0; +-export const DATA_VIEW_INFO_SIZE_INDEX = 1; +-export const DATA_VIEW_INFO_COUNT_INDEX = 2; ++var DATA_VIEW_INFO_OFFSET_INDEX = 0; ++var DATA_VIEW_INFO_SIZE_INDEX = 1; ++var DATA_VIEW_INFO_COUNT_INDEX = 2; + + // computes the end offset, exclusive +-export function dataViewEnd(dataViewInfo) { ++function dataViewEnd(dataViewInfo) { + return dataViewInfo[DATA_VIEW_INFO_OFFSET_INDEX] + dataViewInfo[DATA_VIEW_INFO_SIZE_INDEX] * dataViewInfo[DATA_VIEW_INFO_COUNT_INDEX]; + } + +-export function dataViewUint8(dataView, dataViewInfo) { ++function dataViewUint8(dataView, dataViewInfo) { + return dataView.getUint8(dataViewInfo[DATA_VIEW_INFO_OFFSET_INDEX]); + } + +-export function dataViewUint(dataView, dataViewInfo) { ++function dataViewUint(dataView, dataViewInfo) { + return dataView.getUint32(dataViewInfo[DATA_VIEW_INFO_OFFSET_INDEX], true); + } + +-export function dataViewBigUint(dataView, dataViewInfo) { ++function dataViewBigUint(dataView, dataViewInfo) { + return Number(dataView.getBigUint64(dataViewInfo[DATA_VIEW_INFO_OFFSET_INDEX], true)); + } + +-export function dataViewUint32Array(dataView, dataViewInfo) { ++function dataViewUint32Array(dataView, dataViewInfo) { + const uintArray = [] + let offset = dataViewInfo[DATA_VIEW_INFO_OFFSET_INDEX]; + for (let i = 0; i < dataViewInfo[DATA_VIEW_INFO_COUNT_INDEX]; i++) { +@@ -34,7 +34,7 @@ export function dataViewUint32Array(dataView, dataViewInfo) { + return uintArray; + } + +-export function dataViewUint8Array(dataView, dataViewInfo) { ++function dataViewUint8Array(dataView, dataViewInfo) { + const uintArray = [] + let offset = dataViewInfo[DATA_VIEW_INFO_OFFSET_INDEX]; + for (let i = 0; i < dataViewInfo[DATA_VIEW_INFO_SIZE_INDEX] * dataViewInfo[DATA_VIEW_INFO_COUNT_INDEX]; i++) { +@@ -44,11 +44,11 @@ export function dataViewUint8Array(dataView, dataViewInfo) { + return uintArray; + } + +-export function dataViewFloat(dataView, dataViewInfo) { ++function dataViewFloat(dataView, dataViewInfo) { + return dataView.getFloat32(dataViewInfo[DATA_VIEW_INFO_OFFSET_INDEX], true); + } + +-export function dataViewFloatArray(dataView, dataViewInfo) { ++function dataViewFloatArray(dataView, dataViewInfo) { + const floatArray = [] + let offset = dataViewInfo[DATA_VIEW_INFO_OFFSET_INDEX]; + for (let i = 0; i < dataViewInfo[DATA_VIEW_INFO_COUNT_INDEX]; i++) { +diff --git a/gnome-44-max/src/logger.js b/gnome-44-max/src/logger.js +index 50450c1..8b307fc 100644 +--- a/gnome-44-max/src/logger.js ++++ b/gnome-44-max/src/logger.js +@@ -14,15 +14,15 @@ + // You should have received a copy of the GNU General Public License + // along with this program. If not, see . + +-import * as Config from 'resource:///org/gnome/shell/misc/config.js'; +-import Gio from 'gi://Gio'; +-import GLib from 'gi://GLib'; +-import GObject from 'gi://GObject'; +-import System from 'system'; ++const Config = imports.misc.config; ++const Gio = imports.gi.Gio; ++const GLib = imports.gi.GLib; ++const GObject = imports.gi.GObject; ++const System = imports.system; + + const LOG_DIR_NAME = 'breezy_gnome/logs/gjs'; + +-export const Logger = GObject.registerClass({ ++var Logger = GObject.registerClass({ + GTypeName: 'Logger', + Properties: { + 'title': GObject.ParamSpec.string( +diff --git a/gnome-44-max/src/math.js b/gnome-44-max/src/math.js +index 497274e..6c98cdb 100644 +--- a/gnome-44-max/src/math.js ++++ b/gnome-44-max/src/math.js +@@ -1,3 +1,3 @@ +-export function degreeToRadian(degree) { ++function degreeToRadian(degree) { + return degree * Math.PI / 180; + } +\ No newline at end of file +diff --git a/gnome-44-max/src/metadata.json b/gnome-44-max/src/metadata.json +index b9b5ebf..c888f94 100644 +--- a/gnome-44-max/src/metadata.json ++++ b/gnome-44-max/src/metadata.json +@@ -5,7 +5,7 @@ + "settings-schema": "com.xronlinux.BreezyDesktop", + "session-modes": ["user", "unlock-dialog"], + "shell-version": [ +- "45", "46" ++ "42", "43", "44" + ], + "url": "https://github.com/wheaney/breezy-desktop" + } +\ No newline at end of file +diff --git a/gnome-44-max/src/monitormanager.js b/gnome-44-max/src/monitormanager.js +index ca8a6a5..075ba63 100644 +--- a/gnome-44-max/src/monitormanager.js ++++ b/gnome-44-max/src/monitormanager.js +@@ -16,12 +16,15 @@ + // You should have received a copy of the GNU General Public License + // along with this program. If not, see . + +-import Gio from 'gi://Gio'; +-import GObject from 'gi://GObject'; ++const Gio = imports.gi.Gio; ++const GObject = imports.gi.GObject; + +-import * as Main from 'resource:///org/gnome/shell/ui/main.js'; ++const Main = imports.ui.main; + +-import Globals from './globals.js'; ++const ExtensionUtils = imports.misc.extensionUtils; ++const Me = ExtensionUtils.getCurrentExtension(); ++ ++const Globals = Me.imports.globals; + + let cachedDisplayConfigProxy = null; + +@@ -43,7 +46,7 @@ function getDisplayConfigProxy(extPath) { + return cachedDisplayConfigProxy; + } + +-export function newDisplayConfig(extPath, callback) { ++function newDisplayConfig(extPath, callback) { + const DisplayConfigProxy = getDisplayConfigProxy(extPath); + new DisplayConfigProxy( + Gio.DBus.session, +@@ -243,7 +246,7 @@ function performOptimalModeCheck(displayConfigProxy, connectorName, headsetAsPri + } + + // Monitor change handling +-export const MonitorManager = GObject.registerClass({ ++var MonitorManager = GObject.registerClass({ + Properties: { + 'use-optimal-monitor-config': GObject.ParamSpec.boolean( + 'use-optimal-monitor-config', +diff --git a/gnome-44-max/src/shader.js b/gnome-44-max/src/shader.js +index f70c96d..352be40 100644 +--- a/gnome-44-max/src/shader.js ++++ b/gnome-44-max/src/shader.js +@@ -1,6 +1,6 @@ +-import Gio from 'gi://Gio'; ++const Gio = imports.gi.Gio; + +-export function getShaderSource(path) { ++function getShaderSource(path) { + const file = Gio.file_new_for_path(path); + const data = file.load_contents(null); + +diff --git a/gnome-44-max/src/time.js b/gnome-44-max/src/time.js +index 7883b9b..5478d2a 100644 +--- a/gnome-44-max/src/time.js ++++ b/gnome-44-max/src/time.js +@@ -1,11 +1,11 @@ +-export function getEpochSec() { ++function getEpochSec() { + return toSec(Date.now()); + } + +-export function toSec(milliseconds) { ++function toSec(milliseconds) { + return Math.floor(milliseconds / 1000); + } + +-export function isValidKeepAlive(dateSec, strictCheck = false) { ++function isValidKeepAlive(dateSec, strictCheck = false) { + return Math.abs(toSec(Date.now()) - dateSec) <= (strictCheck ? 1 : 5); + } +\ No newline at end of file +diff --git a/gnome-44-max/src/xrEffect.js b/gnome-44-max/src/xrEffect.js +index 2680cae..bfb036f 100644 +--- a/gnome-44-max/src/xrEffect.js ++++ b/gnome-44-max/src/xrEffect.js +@@ -1,13 +1,15 @@ +-import Clutter from 'gi://Clutter'; +-import Cogl from 'gi://Cogl'; +-import GdkPixbuf from 'gi://GdkPixbuf'; +-import GLib from 'gi://GLib'; +-import GObject from 'gi://GObject'; +-import Shell from 'gi://Shell'; +- +-import Globals from './globals.js'; +- +-import { ++const Clutter = imports.gi.Clutter; ++const Cogl = imports.gi.Cogl; ++const GdkPixbuf = imports.gi.GdkPixbuf; ++const GLib = imports.gi.GLib; ++const GObject = imports.gi.GObject; ++const Shell = imports.gi.Shell; ++ ++const ExtensionUtils = imports.misc.extensionUtils; ++const Me = ExtensionUtils.getCurrentExtension(); ++ ++const Globals = Me.imports.globals; ++const { + dataViewEnd, + dataViewUint8, + dataViewBigUint, +@@ -21,12 +23,12 @@ import { + FLOAT_SIZE, + UINT_SIZE, + UINT8_SIZE +-} from "./ipc.js"; +-import { degreeToRadian } from "./math.js"; +-import { getShaderSource } from "./shader.js"; +-import { isValidKeepAlive, toSec } from "./time.js"; ++} = Me.imports.ipc; ++const { degreeToRadian } = Me.imports.math; ++const { getShaderSource } = Me.imports.shader; ++const { isValidKeepAlive, toSec } = Me.imports.time; + +-export const IPC_FILE_PATH = "/dev/shm/breezy_desktop_imu"; ++var IPC_FILE_PATH = "/dev/shm/breezy_desktop_imu"; + + // the driver should be using the same data layout version + const DATA_LAYOUT_VERSION = 3; +@@ -220,7 +222,7 @@ function checkParityByte(dataView) { + return parityByte === parity; + } + +-export const XREffect = GObject.registerClass({ ++var XREffect = GObject.registerClass({ + Properties: { + 'supported-device-detected': GObject.ParamSpec.boolean( + 'supported-device-detected', +@@ -360,8 +362,13 @@ export const XREffect = GObject.registerClass({ + if (!this._initialized) { + this.set_uniform_float(this.get_uniform_location('uDesktopTexture'), 1, [0]); + +- this.get_pipeline().set_layer_texture(1, calibratingImage.get_texture()); +- this.get_pipeline().set_layer_texture(2, customBannerImage.get_texture()); ++ try { ++ // this can break in GNOME 42 ++ this.get_pipeline().set_layer_texture(1, calibratingImage.get_texture()); ++ this.get_pipeline().set_layer_texture(2, customBannerImage.get_texture()); ++ } catch (e) { ++ Globals.logger.log(`ERROR: xrEffect.js vfunc_paint_target ${e.message}\n${e.stack}`); ++ } + this.get_pipeline().set_uniform_1i(this.get_uniform_location('uCalibratingTexture'), 1); + this.get_pipeline().set_uniform_1i(this.get_uniform_location('uCustomBannerTexture'), 2); + From b0e0b224ccf5f4e47cd05adc678b9c5e8921902a Mon Sep 17 00:00:00 2001 From: wheaney <42350981+wheaney@users.noreply.github.com> Date: Sat, 17 Aug 2024 12:39:12 -0700 Subject: [PATCH 02/30] Update package and setup to fully support GNOME 44 and below --- bin/breezy_gnome_setup | 29 +++++++++++++++++++++++------ bin/package_gnome | 15 +++++++++------ 2 files changed, 32 insertions(+), 12 deletions(-) diff --git a/bin/breezy_gnome_setup b/bin/breezy_gnome_setup index 6ec8bb9..31fe60b 100755 --- a/bin/breezy_gnome_setup +++ b/bin/breezy_gnome_setup @@ -11,23 +11,40 @@ if [ "$(id -u)" == "0" ]; then exit 1 fi -start_dir=$(pwd) +check_command() { + if ! command -v "$1" &>/dev/null; then + echo "Please install \"$1\" and make sure it's available in your \$PATH, then rerun the setup." + exit 1 + fi +} + +check_command "gnome-shell" ARCH=$(uname -m) +FILE_NAME="breezyGNOME-$ARCH.tar.gz" +if [ "$(gnome-shell --version | cut -d' ' -f3 | cut -d'.' -f1)" -lt 45 ]; then + echo "Performing setup for GNOME 44 and below ($ARCH)" + FILE_NAME="breezyGNOME-44-max-$ARCH.tar.gz" +else + echo "Performing setup for GNOME 45 and up ($ARCH)" +fi + +start_dir=$(pwd) + # create temp directory tmp_dir=$(mktemp -d -t breezy-gnome-XXXXXXXXXX) pushd $tmp_dir > /dev/null echo "Created temp directory: ${tmp_dir}" -binary_download_url="https://github.com/wheaney/breezy-desktop/releases/latest/download/breezyGNOME-$ARCH.tar.gz" +binary_download_url="https://github.com/wheaney/breezy-desktop/releases/latest/download/$FILE_NAME" if [ "$1" = "-v" ] then metrics_version="$2" binary_path_arg="$3" elif [ "$1" = "--tag" ] && [ -n "$2" ] then - binary_download_url="https://github.com/wheaney/breezy-desktop/releases/download/$2/breezyGNOME-$ARCH.tar.gz" + binary_download_url="https://github.com/wheaney/breezy-desktop/releases/download/$2/$FILE_NAME" else binary_path_arg="$1" fi @@ -35,10 +52,10 @@ fi if [ -z "$binary_path_arg" ] then # download and unzip the binary - echo "Downloading to: ${tmp_dir}/breezyGNOME-$ARCH.tar.gz" + echo "Downloading to: ${tmp_dir}/$FILE_NAME" curl -L -O $binary_download_url - binary_path_arg="breezyGNOME-$ARCH.tar.gz" else + FILE_NAME=$(basename $binary_path_arg) if [[ "$binary_path_arg" = /* ]]; then abs_path="$binary_path_arg" else @@ -49,7 +66,7 @@ else fi echo "Extracting to: ${tmp_dir}/breezy_gnome" -tar -xf $(basename $binary_path_arg) +tar -xf $FILE_NAME pushd breezy_gnome > /dev/null diff --git a/bin/package_gnome b/bin/package_gnome index 9a5dd7f..b0e6c29 100755 --- a/bin/package_gnome +++ b/bin/package_gnome @@ -4,23 +4,26 @@ set -e ARCH=${ARCH:-$(uname -m)} -echo "Building Breezy GNOME for $ARCH" # https://stackoverflow.com/a/246128 SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd) ROOT_DIR=$(realpath $SCRIPT_DIR/..) VULKAN_DIR=$ROOT_DIR/vulkan -# if GNOME_44_MAX is not set if [ -z "$GNOME_44_MAX" ]; then + # standard build for GNOME 45 and up + echo "Building Breezy GNOME for $ARCH, GNOME versions 45 and up" GNOME_DIR=$ROOT_DIR/gnome BUILD_FILE_NAME=breezyGNOME-$ARCH.tar.gz else + # special patched build for GNOME 44 and below + echo "Building Breezy GNOME for $ARCH, GNOME versions 44 and below" + # use a special directory for the GNOME 44 max build, ignored by git GNOME_DIR=$ROOT_DIR/gnome-44-max rm -rf $GNOME_DIR mkdir $GNOME_DIR - BUILD_FILE_NAME=breezyGNOME.44-max.$ARCH.tar.gz + BUILD_FILE_NAME=breezyGNOME-44-max-$ARCH.tar.gz # copy the GNOME extension source code to the new directory and apply # a patch that makes it compatible with GNOME 44 and below @@ -81,11 +84,11 @@ rm -rf $TMP_DIR cp $XR_DRIVER_BINARY $PACKAGE_DIR/xrDriver.tar.gz cp $XR_DRIVER_DIR/bin/xr_driver_setup $PACKAGE_DIR/bin -gnome/bin/package_extension -cp gnome/out/breezydesktop@xronlinux.com.shell-extension.zip $PACKAGE_DIR +$GNOME_DIR/bin/package_extension +cp $GNOME_DIR/out/breezydesktop@xronlinux.com.shell-extension.zip $PACKAGE_DIR # create a checksum that combines the checksums of all files in the directory -pushd gnome/src +pushd $GNOME_DIR/src GNOME_MANIFEST_LINE=$(find -L . -type f ! -name "*.compiled" -exec sha256sum {} \; | sort | sha256sum | sed 's/ .*//') popd From e4a10c55ebeb163246704268de87ebf50bd06440 Mon Sep 17 00:00:00 2001 From: Wayne Heaney <42350981+wheaney@users.noreply.github.com> Date: Sat, 17 Aug 2024 12:41:21 -0700 Subject: [PATCH 03/30] Update README.md --- README.md | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.md b/README.md index a1b3353..d9b754d 100644 --- a/README.md +++ b/README.md @@ -29,9 +29,7 @@ Breezy GNOME is in AUR (but not pacman, yet). To install, run these commands fro #### 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: - * For **GNOME 45+**: `~/Downloads/breezy_gnome_setup` - * For **GNOME 42-44**: `~/Downloads/breezy_gnome_setup --tag gnome-44-max` +2. Run the setup script: `~/Downloads/breezy_gnome_setup` ### Steam Deck desktop mode From 9d7227ca9e104d5e554e170c940689c806bac558 Mon Sep 17 00:00:00 2001 From: 8796n Date: Mon, 19 Aug 2024 09:33:38 +0900 Subject: [PATCH 04/30] Update ja.po (#47) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit "XR effect"を「XR効果」から「XRエフェクト」に変更とライセンス周りの見直しなど --- ui/po/ja.po | 37 +++++++++++++++++++------------------ 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/ui/po/ja.po b/ui/po/ja.po index f86ffae..453a708 100644 --- a/ui/po/ja.po +++ b/ui/po/ja.po @@ -5,7 +5,7 @@ # # Breezy DesktopやXR、GNOMEのような固有名詞はそのままの表記にしています。 #「gaming」が「ゲーミング」なので「productivity」も「プロダクティビティ」とカナ表記にしました。 -#「glasses」は「XR効果」から「XRメガネ」にしても良かったんですが、繰り返すのもくどいので「メガネ」にしてます。 +#「glasses」は「XRエフェクト」から「XRメガネ」にしても良かったんですが、繰り返すのもくどいので「メガネ」にしてます。 # msgid "" msgstr "" @@ -25,11 +25,11 @@ msgstr "" msgid "" "Switches your glasses into side-by-side mode and doubles the width of the " "display." -msgstr "ARグラスをサイドバイサイドモードに切り替え、表示の幅を2倍にします。" +msgstr "メガネを3Dモードに切り替え、表示の幅を2倍にします。" #: src/connecteddevice.py:17 msgid "This feature is not currently supported for your device." -msgstr "この機能は現在、お使いのデバイスではサポートされていません。" +msgstr "この機能は現在接続されているデバイスではサポートされていません。" #: src/licensedialog.py:49 msgid "Paid Tier Status" @@ -45,7 +45,7 @@ msgstr "無効" #: src/licensefeaturerow.py:18 msgid "In trial" -msgstr "試用中" +msgstr "試用期間中" #: src/licensefeaturerow.py:18 msgid "Enabled" @@ -161,11 +161,11 @@ msgstr "機能" #: src/gtk/connected-device.ui:44 msgid "XR effect" -msgstr "XR効果" +msgstr "XRエフェクト" #: src/gtk/connected-device.ui:45 msgid "Enables the Breezy Desktop XR effect." -msgstr "Breezy DesktopのXR効果を有効にします。" +msgstr "Breezy DesktopのXRエフェクトを有効にします。" #: src/gtk/connected-device.ui:55 msgid "Widescreen mode" @@ -193,14 +193,15 @@ msgstr "調整" #: src/gtk/connected-device.ui:94 msgid "Display distance" -msgstr "ディスプレイとの距離" +msgstr "ディスプレイ距離" #: src/gtk/connected-device.ui:95 msgid "" "Closer appears larger, further appears smaller. Controls depth when in " "widescreen mode." msgstr "" -"近づけると大きく見え、遠ざけると小さく見えます。ワイドスクリーンモードの奥行きを制御します。" +"近づけると大きく見え、遠ざけると小さく見えます。" +"ワイドスクリーンモードの奥行きを制御します。" #: src/gtk/connected-device.ui:123 msgid "Display size" @@ -211,11 +212,11 @@ msgid "" "Combine with display distance to achieve a comfortable level of depth and " "size." msgstr "" -"ディスプレイ距離と組み合わせて、奥行きとサイズの快適なレベルを達成します。" +"ディスプレイ距離と組み合わせて、快適な奥行きとサイズを実現します。" #: src/gtk/connected-device.ui:152 msgid "Display toggle distances" -msgstr "ディスプレイ距離切り替え" +msgstr "ディスプレイ距離の切り替え" #: src/gtk/connected-device.ui:153 msgid "" @@ -230,7 +231,7 @@ msgstr "フォローしきい値" #: src/gtk/connected-device.ui:179 msgid "How far away you can look before the display follows." -msgstr "どれだけ遠ざかるとディスプレイがフォロー(追従)するか" +msgstr "ディスプレイがフォロー(追従)を開始するまでの距離" #: src/gtk/connected-device.ui:209 src/gtk/connected-device.ui:215 msgid "Keyboard Shortcuts" @@ -238,7 +239,7 @@ msgstr "キーボードショートカット" #: src/gtk/connected-device.ui:218 msgid "Re-center display shortcut" -msgstr "中心へ移動するショートカット" +msgstr "ディスプレイを中央へ移動" #: src/gtk/connected-device.ui:219 msgid "Pin the virtual display to the current position." @@ -251,7 +252,7 @@ msgstr "変更" #: src/gtk/connected-device.ui:247 msgid "Display distance shortcut" -msgstr "ディスプレイ距離ショートカット" +msgstr "ディスプレイ距離の切り替え" #: src/gtk/connected-device.ui:248 msgid "Quickly toggle between two predefined distances." @@ -259,11 +260,11 @@ msgstr "設定してある2個の距離をすばやく切り替えます。" #: src/gtk/connected-device.ui:276 msgid "Toggle follow mode shortcut" -msgstr "フォローモードに切り替えるショートカット" +msgstr "フォローモードの切り替え" #: src/gtk/connected-device.ui:277 msgid "Quickly toggle follow mode." -msgstr "フォローモードにすばやく切り替えます。" +msgstr "フォローモードのオン/オフをすばやく切り替えます。" #: src/gtk/connected-device.ui:312 src/gtk/connected-device.ui:318 msgid "Advanced Settings" @@ -411,11 +412,11 @@ msgid "" " " msgstr "" "\n" -" Breezy Desktopを初めて使用する際は、デバイスのライセンスを取得するためにインターネット接続が必要です。\n" +" Breezy Desktopを初めて使用する際は、デバイスライセンスを取得するためにインターネット接続が必要です。\n" " \n" -" 寄付する義務はありません。まだであれば、Breezy Desktopがニーズに合っているかどうかを判断できるトライアルライセンスが提供されます。\n" +" ご安心ください。今すぐに寄付する必要はありません。寄付していない場合は、Breezy Desktopがニーズに合っているかどうかを判断できる試用ライセンスが提供されます。\n" " \n" -" ライセンスを取得したら、トライアルであろうと、Breezy Desktopをオフラインで使用できます。機能が期限切れるまで(または生涯アクセスを選択した場合)、無期限に使用できます。\n" +" ライセンスを取得したら、試用期間中であろうと期限切れるまではBreezy Desktopをオフラインで使用できます。(生涯アクセスを選択した場合は期限はありません。)\n" " " #: src/gtk/no-license.ui:27 From e331da34bf6647e548bff0bc6309e333a1571a1d Mon Sep 17 00:00:00 2001 From: wheaney <42350981+wheaney@users.noreply.github.com> Date: Sun, 18 Aug 2024 17:35:28 -0700 Subject: [PATCH 05/30] Update ja.mo for latest translations --- ui/po/ja/LC_MESSAGES/breezydesktop.mo | Bin 11522 -> 11497 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/ui/po/ja/LC_MESSAGES/breezydesktop.mo b/ui/po/ja/LC_MESSAGES/breezydesktop.mo index d4fc6717bc5fe7639b87877811f1caaa5d920871..8956f7b62ba54de597883738854619464522d466 100644 GIT binary patch delta 1252 zcmZwFYiLwQ6u|M>L{}>&#>5!2d2Dx+8WUet!PX!sDwJ5G_CpITQsbjSphzqDC=}PZ zYnzxgMly*eO=}X-Y>al3c%^D134$Ofeo#=XpVZl#WECHXUm^(pCwB{_2+RIv=AJWi z=G<$2llZzXKQ$Cd5u!L(2!5h3Pl#!FBk2SDfcX=gg|Be}rsWGU2{Umf`p}1q(B!W} zFK)uAxD7wXA8;vlVh!HU7a{QlgQ@}{((ydb#jCgmpW$L$Tqwl1_#K*!uVEeD#BKPM zUx-qV5Pzd7H2$Gm$Xhh=X#sbA29_|NkK9Fk83?%xKeAu~Ta$KRIrAuThIowG=n1-U zIatQL5Y2i8nu9lEChkMii3pkwwBcvijbr#S`TR+!$W3^It9X!B%UxScBDg9Zd&9i)OnIDseRn_4qm7Mw3`T zzuIvXn)zciuVm63T8`zo1h?ZdY{83o2hBcp1XbZZH2I%UEzK00ki4y8KZD~eoJUj9 zT0Q{Nx*cc&_uzDFK`-{;UF=8Gk(zmQ4V%#9pTsO2MDuapvBxIv%2GRXtE;taa$<*^ zp|F+>T6SpJtmQ#{z={vlY1yjfQ7z9py$9n1EoN#(oS|PvyQG%AT3Xs7W>CvEZ7EXz z4Lh!7m)S)2@b7e7aE{gzuQGg<-qAB%BTe1vd*7BqcR2ied*YaiU;0za==hHHTK=kK zw_2E&ooce4`#$x|Q5*A0{LD;rD;2%x@KXCk-lNpXLuV863@5Ao{+W}lMkm%j(lBWE z`+xGND!*4P4fxV!%&D!R^x?K4Eo)UEn5Fgxf*cl8t$_v8wAHP{&Dx4;t5=6>)vdro zRTP}A{t3=1uo@G`B2F~owqpG5R2>_=_(!7cq&*h&c)ad~>^DWPQZi!N>d|5Q#g&Hf zL9^>%o!UC5!}SC#S)(e;a@Ez+^6cRw xr$_$!&Ab}xaI&{nL`^AMKlQ&?v41XG>B;$D`NFw;A<OV<*5yJiMojd2uIVU%@&D!4P85RuL zg_t%;2!5i$ErbJ~WqpIAc>atN@hc9;9FGtqa5NTT0lF}NCcX@Fu>$jO2hPJoxEP~& z7GHZrP;BC6YmpH7*od>R1IsXh3$SFe5W8^~n#5gLjnDBYZYbt(n-D!{3LTu1Da7W@ z>>r106%%m|EbdG5P#w?G?V=voSF&vjcZsKM>VFP3N9w`2{avFK$GZd_W2%~gBsBk(v7CG zL0o}_(=+e4AWPyPuEH=L#+PU&5L`4P^I{XOW#J+&!*^&BJN#6S%h4qIfaWjxg8^JH zQ;3DQ6HQzMA7dZxM~h9{F^Q(IQj#)EaSDmsC+fJl#==`P6&>LNFr%wNv++8P#HW~x z&+#4hp_xeCY$3*AGn)8L9FOnOe4Jn6KXZj(lQtG4S}XfIuWK3AR(PN% zmIy~x#O*B5vPa80EgxuUX{$!dHnq}K?$Dts9g1n|zP9e_P?L(d_Im$Y`xkRw%QIRw z=+jd9-AhL$W3_{!ZY^t+!|lu)>Z(egP^)FD+T-^7hq}(ObD;80@@8!+8qu<;zq@zf zazi>Bsi-EZPh0VN_orbhQtT{}Es5Tyl#FTFs6!8RC`vinx|EWalU0#;bMXmVo;h8% z3_iY^SV^KXM(EmE>bn#xw(nzj^yo|>V@~CizKE)y1ke(*Q;8FnFir1QZzwz z`3gs-$HQ`b$Y-;~e@y*mw>7EO89rzKljcNkNXsV!4>}X!E15Z}Hjgu2>R)fqFWs!I zw)Dh0C{B%-=~ZQcv8p|=+(ElqR@0@Hm6Um@WP@54$hTYJbo7prRkm!6@z|`@w!c6t BMk4?K From e6ec19da4c4333b8e466ff42049d3ced5fd62f70 Mon Sep 17 00:00:00 2001 From: wheaney <42350981+wheaney@users.noreply.github.com> Date: Sun, 18 Aug 2024 18:04:12 -0700 Subject: [PATCH 06/30] Fix licensetierrow broken by localization --- ui/src/licensetierrow.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/src/licensetierrow.py b/ui/src/licensetierrow.py index b3d1958..0b0d1a1 100644 --- a/ui/src/licensetierrow.py +++ b/ui/src/licensetierrow.py @@ -24,7 +24,7 @@ class LicenseTierRow(Adw.ExpanderRow): status = _('Active') if active_period else _('Inactive') details = '' if active_period: - details += f" {self._period_description[active_period]}" + details += f" {self._period_description(active_period)}" if funds_needed_in_seconds is not None and funds_needed_in_seconds > 0: time_remaining = time_remaining_text(funds_needed_in_seconds) if time_remaining: details += _(" ({time_remaining} remaining)").format(time_remaining=time_remaining) From 1ef732c8a6e138d54a59652f27a08cd9b48a3928 Mon Sep 17 00:00:00 2001 From: wheaney <42350981+wheaney@users.noreply.github.com> Date: Fri, 16 Aug 2024 09:15:42 -0700 Subject: [PATCH 07/30] LLM-generated fr_FR translation --- ui/po/fr.po | 205 +++++++++++++++----------- ui/po/fr/LC_MESSAGES/breezydesktop.mo | Bin 384 -> 10549 bytes 2 files changed, 123 insertions(+), 82 deletions(-) diff --git a/ui/po/fr.po b/ui/po/fr.po index 2764ed7..92fdf2d 100644 --- a/ui/po/fr.po +++ b/ui/po/fr.po @@ -5,6 +5,7 @@ # msgid "" msgstr "" + "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2024-08-15 15:19-0700\n" @@ -22,285 +23,296 @@ msgid "" "Switches your glasses into side-by-side mode and doubles the width of the " "display." msgstr "" +"Basculez vos lunettes en mode côte à côte et doublez la largeur de l'écran." #: src/connecteddevice.py:17 msgid "This feature is not currently supported for your device." -msgstr "" +msgstr "Cette fonctionnalité n'est actuellement pas prise en charge par votre appareil." #: src/licensedialog.py:49 msgid "Paid Tier Status" -msgstr "" +msgstr "Statut de l'abonnement payant" #: src/licensedialog.py:57 msgid "Feature Availability" -msgstr "" +msgstr "Disponibilité des fonctionnalités" #: src/licensefeaturerow.py:15 src/shortcutdialog.py:107 msgid "Disabled" -msgstr "" +msgstr "Désactivé" #: src/licensefeaturerow.py:18 msgid "In trial" -msgstr "" +msgstr "En essai" #: src/licensefeaturerow.py:18 msgid "Enabled" -msgstr "" +msgstr "Activé" #: src/licensefeaturerow.py:24 src/licensetierrow.py:30 #, python-brace-format msgid " ({time_remaining} remaining)" -msgstr "" +msgstr " ({time_remaining} restant)" #: src/licensefeaturerow.py:32 msgid "Side-by-side mode (gaming)" -msgstr "" +msgstr "Mode côte à côte (jeu)" #: src/licensefeaturerow.py:33 msgid "Smooth Follow (gaming)" -msgstr "" +msgstr "Suivi fluide (jeu)" #: src/licensefeaturerow.py:34 msgid "Breezy Desktop (productivity)" -msgstr "" +msgstr "Bureau aéré (productivité)" #: src/licensetierrow.py:24 msgid "Active" -msgstr "" +msgstr "Actif" #: src/licensetierrow.py:24 msgid "Inactive" -msgstr "" +msgstr "Inactif" #: src/licensetierrow.py:41 #, python-brace-format msgid "${amount} USD" -msgstr "" +msgstr "${amount} USD" #: src/licensetierrow.py:43 msgid " to renew" -msgstr "" +msgstr " à renouveler" #: src/licensetierrow.py:45 msgid " to upgrade" -msgstr "" +msgstr " à mettre à niveau" #: src/licensetierrow.py:47 msgid "Paid through next renewal period" -msgstr "" +msgstr "Payé jusqu'à la prochaine période de renouvellement" #: src/licensetierrow.py:56 msgid "Gaming" -msgstr "" +msgstr "Jeu" #: src/licensetierrow.py:57 msgid "Productivity" -msgstr "" +msgstr "Productivité" #: src/licensetierrow.py:63 msgid " - renewing monthly" -msgstr "" +msgstr " - renouvellement mensuel" #: src/licensetierrow.py:64 msgid " - renewing yearly" -msgstr "" +msgstr " - renouvellement annuel" #: src/licensetierrow.py:65 msgid "with lifetime access" -msgstr "" +msgstr "avec accès à vie" #: src/licensetierrow.py:72 msgid "Monthly" -msgstr "" +msgstr "Mensuel" #: src/licensetierrow.py:73 msgid "Yearly" -msgstr "" +msgstr "Annuel" #: src/licensetierrow.py:74 msgid "Lifetime" -msgstr "" +msgstr "À vie" #: src/time.py:14 msgid "less than an hour" -msgstr "" +msgstr "moins d'une heure" #: src/time.py:17 msgid "1 hour" -msgstr "" +msgstr "1 heure" #: src/time.py:17 #, python-brace-format msgid "{time_remaining} hours" -msgstr "" +msgstr "{time_remaining} heures" #: src/time.py:20 msgid "1 day" -msgstr "" +msgstr "1 jour" #: src/time.py:20 #, python-brace-format msgid "{time_remaining} days" -msgstr "" +msgstr "{time_remaining} jours" #: src/gtk/connected-device.ui:21 msgid "connected" -msgstr "" +msgstr "connecté" #: src/gtk/connected-device.ui:31 msgid "General Settings" -msgstr "" +msgstr "Paramètres généraux" #: src/gtk/connected-device.ui:41 msgid "Features" -msgstr "" +msgstr "Fonctionnalités" #: src/gtk/connected-device.ui:44 msgid "XR effect" -msgstr "" +msgstr "Effet XR" #: src/gtk/connected-device.ui:45 msgid "Enables the Breezy Desktop XR effect." -msgstr "" +msgstr "Active l'effet de bureau aéré XR." #: src/gtk/connected-device.ui:55 msgid "Widescreen mode" -msgstr "" +msgstr "Mode grand écran" #: src/gtk/connected-device.ui:66 msgid "Follow mode" -msgstr "" +msgstr "Mode de suivi" #: src/gtk/connected-device.ui:67 msgid "Keep the virtual display near the center of your view." -msgstr "" +msgstr "Gardez l'affichage virtuel près du centre de votre champ de vision." #: src/gtk/connected-device.ui:77 msgid "Curved display" -msgstr "" +msgstr "Affichage incurvé" #: src/gtk/connected-device.ui:78 msgid "Switch between flat and curved displays." -msgstr "" +msgstr "Basculez entre les affichages plats et incurvés." #: src/gtk/connected-device.ui:91 msgid "Adjustments" -msgstr "" +msgstr "Réglages" #: src/gtk/connected-device.ui:94 msgid "Display distance" -msgstr "" +msgstr "Distance d'affichage" #: src/gtk/connected-device.ui:95 msgid "" "Closer appears larger, further appears smaller. Controls depth when in " "widescreen mode." msgstr "" +"Plus proche apparaît plus grand, plus loin apparaît plus petit. Contrôle la " +"profondeur lorsque vous êtes en mode grand écran." #: src/gtk/connected-device.ui:123 msgid "Display size" -msgstr "" +msgstr "Taille de l'affichage" #: src/gtk/connected-device.ui:124 msgid "" "Combine with display distance to achieve a comfortable level of depth and " "size." msgstr "" +"Combinez avec la distance d'affichage pour obtenir un niveau de profondeur et " +"de taille confortable." #: src/gtk/connected-device.ui:152 msgid "Display toggle distances" -msgstr "" +msgstr "Distances de basculement de l'affichage" #: src/gtk/connected-device.ui:153 msgid "" "Use the buttons to capture the current display distance for use with the " "keyboard shortcut." msgstr "" +"Utilisez les boutons pour capturer la distance d'affichage actuelle pour une " +"utilisation avec le raccourci clavier." #: src/gtk/connected-device.ui:178 msgid "Follow threshold" -msgstr "" +msgstr "Seuil de suivi" #: src/gtk/connected-device.ui:179 msgid "How far away you can look before the display follows." -msgstr "" +msgstr "Distance à laquelle vous pouvez regarder avant que l'affichage ne suive." #: src/gtk/connected-device.ui:209 src/gtk/connected-device.ui:215 msgid "Keyboard Shortcuts" -msgstr "" +msgstr "Raccourcis clavier" #: src/gtk/connected-device.ui:218 msgid "Re-center display shortcut" -msgstr "" +msgstr "Raccourci de recentrage de l'affichage" #: src/gtk/connected-device.ui:219 msgid "Pin the virtual display to the current position." -msgstr "" +msgstr "Fixez l'affichage virtuel à la position actuelle." #: src/gtk/connected-device.ui:238 src/gtk/connected-device.ui:267 #: src/gtk/connected-device.ui:296 msgid "Change" -msgstr "" +msgstr "Changer" #: src/gtk/connected-device.ui:247 msgid "Display distance shortcut" -msgstr "" +msgstr "Raccourci de distance d'affichage" #: src/gtk/connected-device.ui:248 msgid "Quickly toggle between two predefined distances." -msgstr "" +msgstr "Basculez rapidement entre deux distances prédéfinies." #: src/gtk/connected-device.ui:276 msgid "Toggle follow mode shortcut" -msgstr "" +msgstr "Raccourci de basculement du mode de suivi" #: src/gtk/connected-device.ui:277 msgid "Quickly toggle follow mode." -msgstr "" +msgstr "Basculer rapidement le mode de suivi." #: src/gtk/connected-device.ui:312 src/gtk/connected-device.ui:318 msgid "Advanced Settings" -msgstr "" +msgstr "Paramètres avancés" #: src/gtk/connected-device.ui:321 msgid "Find optimal display config" -msgstr "" +msgstr "Trouver la configuration d'affichage optimale" #: src/gtk/connected-device.ui:322 msgid "" "Automatically modify the glasses display configuration for maximum " "resolution and best scaling when plugged in." msgstr "" +"Modifiez automatiquement la configuration d'affichage des lunettes pour une " +"résolution maximale et un meilleur масштаб lorsque elles sont branchées." #: src/gtk/connected-device.ui:332 msgid "Use highest refresh rate" -msgstr "" +msgstr "Utiliser le taux de rafraîchissement le plus élevé" #: src/gtk/connected-device.ui:333 msgid "Refresh rate may affect performance, disable this to set it manually." -msgstr "" +msgstr "Le taux de rafraîchissement peut affecter les performances, désactivez-le pour le définir manuellement." #: src/gtk/connected-device.ui:343 msgid "Always primary display" -msgstr "" +msgstr "Affichage principal en permanence" #: src/gtk/connected-device.ui:344 msgid "Automatically set the glasses as the primary display when plugged in." -msgstr "" +msgstr "Définissez automatiquement les lunettes comme affichage principal lorsqu'elles sont branchées." #: src/gtk/connected-device.ui:354 msgid "Fast SBS mode switching" -msgstr "" +msgstr "Bascule rapide vers le mode SBS" #: src/gtk/connected-device.ui:355 msgid "" "Switches glasses to SBS mode immediately when plugged in, if widescreen mode " "is on. May cause instability." 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 msgid "Movement look-ahead" -msgstr "" +msgstr "Prédiction de mouvement" #: src/gtk/connected-device.ui:366 msgid "" @@ -308,48 +320,54 @@ msgid "" "time. Stick with default unless virtual display drags behind your head " "movements, jumps ahead, or is very shaky." msgstr "" +"Compense le lag d'entrée en prédisant la position de suivi de la tête avant " +"le temps de rendu. Restez sur la valeur par défaut à moins que l'affichage virtuel " +"ne soit lent, ne saute pas ou est très instable." #: src/gtk/connected-device.ui:384 msgid "Default" -msgstr "" +msgstr "Par défaut" #: src/gtk/failed-verification.ui:13 msgid "Breezy Desktop GNOME invalid setup" -msgstr "" +msgstr "Configuration Breezy Desktop GNOME non valide" #: src/gtk/failed-verification.ui:14 msgid "" "Your Breezy GNOME setup is invalid or incomplete. Please re-run the setup " "script. Report this issue if it persists." msgstr "" +"Votre configuration Breezy GNOME est invalide ou incomplète. Veuillez " +"exécuter à nouveau le script de configuration. Signalez ce problème s'il " +"persiste." #: src/gtk/license-dialog.ui:5 src/gtk/window.ui:55 msgid "License Details" -msgstr "" +msgstr "Détails de la licence" #: src/gtk/license-dialog.ui:27 msgid "Donate" -msgstr "" +msgstr "Faire un don" #: src/gtk/license-dialog.ui:44 msgid "Request a token" -msgstr "" +msgstr "Demander un jeton" #: src/gtk/license-dialog.ui:52 msgid "Verify token" -msgstr "" +msgstr "Vérifier le jeton" #: src/gtk/no-device.ui:13 msgid "No device connected" -msgstr "" +msgstr "Aucun appareil connecté" #: src/gtk/no-device.ui:14 msgid "Breezy Desktop was unable to detect any supported XR devices." -msgstr "" +msgstr "Breezy Desktop n'a pas pu détecter d'appareils XR pris en charge." #: src/gtk/no-driver.ui:13 msgid "No driver running" -msgstr "" +msgstr "Aucun pilote en cours d'exécution" #: src/gtk/no-driver.ui:14 msgid "" @@ -362,20 +380,31 @@ msgid "" "in the #troubleshooting channel on Discord.\n" " " msgstr "" +"\n" +" Si vous avez installé via AUR, assurez-vous d'avoir exécuté la " +"commande de post-installation recommandée:\n" +" systemctl --user enable --now xr-driver.service\n" +"\n" +" Sinon, veuillez signaler le problème sur GitHub, ou créer un nouveau " +"fil de discussion dans le canal #troubleshooting sur Discord.\n" +" " #: src/gtk/no-extension.ui:13 msgid "Breezy Desktop GNOME extension not ready" -msgstr "" +msgstr "Extension Breezy Desktop GNOME non prête" #: src/gtk/no-extension.ui:14 msgid "" "If you have just run the setup, then you may need to log out and back in to " "use it. Otherwise, please follow the Breezy GNOME setup instructions." msgstr "" +"Si vous venez d'exécuter la configuration, vous devrez peut-être vous déconnecter " +"et vous reconnecter pour l'utiliser. Sinon, veuillez suivre les instructions " +"d'installation de Breezy GNOME." #: src/gtk/no-license.ui:13 msgid "No license file was found" -msgstr "" +msgstr "Aucun fichier de licence trouvé" #: src/gtk/no-license.ui:14 msgid "" @@ -392,43 +421,55 @@ msgid "" "lifetime access).\n" " " msgstr "" +"\n" +" La première fois que vous utilisez Breezy Desktop, une connexion " +"Internet est requise pour récupérer la licence de votre appareil.\n" +" \n" +" Ne vous inquiétez pas, vous n'êtes pas obligé de faire un don à " +"ce stade. Si vous ne le faites pas, vous obtiendrez une licence d'essai pour " +"vous permettre de décider si Breezy Desktop répond à vos besoins.\n" +" \n" +" Une fois que vous avez obtenu une licence, d'essai ou autre, vous " +"pouvez utiliser Breezy Desktop hors ligne jusqu'à l'expiration des fonctionnalités " +"(ou indéfiniment, si vous avez choisi l'accès à vie).\n" +" " #: src/gtk/no-license.ui:27 msgid "Try Again" -msgstr "" +msgstr "Réessayer" #: src/gtk/shortcut-dialog.ui:5 msgid "Assign Keyboard Shortcut" -msgstr "" +msgstr "Attribuer un raccourci clavier" #: src/gtk/shortcut-dialog.ui:20 msgid "Press your keyboard shortcut or 'Backspace' to disable..." -msgstr "" +msgstr "Appuyez sur votre raccourci clavier ou sur 'Backspace' pour désactiver..." #: src/gtk/window.ui:10 msgid "Breezy Desktop" -msgstr "" +msgstr "Breezy Desktop" #: src/gtk/window.ui:23 msgid "Menu" -msgstr "" +msgstr "Menu" #: src/gtk/window.ui:35 msgid "Some features expire soon" -msgstr "" +msgstr "Certaines fonctionnalités expirent bientôt" #: src/gtk/window.ui:36 src/gtk/window.ui:43 msgid "View details" -msgstr "" +msgstr "Afficher les détails" #: src/gtk/window.ui:42 msgid "Productivity features are disabled" -msgstr "" +msgstr "Les fonctionnalités de productivité sont désactivées" #: src/gtk/window.ui:59 msgid "Force Reset" -msgstr "" +msgstr "Réinitialiser" #: src/gtk/window.ui:63 msgid "About BreezyDesktop" -msgstr "" +msgstr "À propos de BreezyDesktop" diff --git a/ui/po/fr/LC_MESSAGES/breezydesktop.mo b/ui/po/fr/LC_MESSAGES/breezydesktop.mo index 742d696bb9d1d9fab3b61794970e7055a165ee89..e22b6140ef8c0dda2f4369bd01b51bb0df343a9b 100644 GIT binary patch literal 10549 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�o= zzpQ4Tp5NiPX58`nZh!ZeXntKdNCf-1~% zw;L0TdcJc`+wlO;QQwX2qg2E&%TOTRsDks+t+f%R9ou#iQRL>7tn~dcCc66jZYZpvZAMVK_+5Aa(Agau161wLiP|&DXy0+ONL$ z%(ZV`dzk_`$Lu`C-GZGal)ga}ZEq4T$XP4F#%xDiN5E+r2>b+{iGb`Q)Y=F$%)iM5 zdmA)!3=0vPA{-w#o!(8@-8pDZjCT(9zGg!&LRiF@@^~KXGjl(kC$JGM z29?}a8w(f@?bjiv(8dDmW3wyuiKwTB-S02thE$_1psY>F;$Mh%zd;e8t874}G|c{Y zf{V}IAFv%pA)%y~@4kZNU;rcGeH|IDv6OeS5Yp=HhcL1w!Z5>lF9L%NU0Z{Ui>he` z`6%lH3F%8|!8?n*U}{dd!v)n;N(<<;-nj6S4759{5UH&R!jHt>fl1y7J4}jG`!zH> z6AV>U>0LESb& zTS;>j`t;alMJ&bWavwQF14xLmn?jE*cV2_Qp@zH8g6dpKOQftna8=oYyCil$FMMSA z`riVtVgP?pRbF$=yIL~eHF`6QhhvnE4@c(=$-7c8de zs5e@=>@2bJtJBm9+j}?zff1^As08Jx-V&jbB75}*vP9?r=(ZaY7vm%a@qJ@edv0Cx z7?LMBtloO5Q}qRcfZw51L8qbQ%T{oE$ZG(j{Jfo;l(`owC2{45+rpK}tyr!-aIO%wIsWYs@IR0;;0QL*rkBERnq*)BWw975n}@4f=Nuv_?X;IgaOEb`f?n^cO4;nH!( z);zqpj<&uG-*-i_^j71~afmQ95*qduh> zzvV=%p*hokQDC$;`nU>FZ8}R?nlYu_#$Re575CKm$@l5&RZEj}XZpNJSkgRua%8oa zl`7d47Dp~O7egN^TKxzHidCx6c6a!P49-@+#p2MD{vD{DE6=-n@5<-A>*e?H(!%2^ z%0t)>5j<36a)OyQfXyt$AsPWMY9Q{iuV`wYfbKp72Rct%+MMut|A|$z9Gap_zC+%d zlIs$;{tp~BsJFTJXT5qkzt2T)L;HKF*;kn4L-kUM<5cFTD(ra43VWtdTJswbSJg|y wwPqt?ourKTKv$Um1DR6O>Hq)$ delta 66 xcmdlQ)WB?UPl#nI0}wC*u?!Ha05LNV>i{tbSOBpbP|^}egVeylW<4 Date: Mon, 19 Aug 2024 17:33:03 +0200 Subject: [PATCH 08/30] Update fr.po (#48) A few modifications of the french translation to correct errors and make it more natural. --- ui/po/fr.po | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/ui/po/fr.po b/ui/po/fr.po index 92fdf2d..295aee6 100644 --- a/ui/po/fr.po +++ b/ui/po/fr.po @@ -23,7 +23,7 @@ msgid "" "Switches your glasses into side-by-side mode and doubles the width of the " "display." msgstr "" -"Basculez vos lunettes en mode côte à côte et doublez la largeur de l'écran." +"Basculez vos lunettes en mode Side-By-Side (Côte-à-Côte) et doublez la largeur de l'écran." #: src/connecteddevice.py:17 msgid "This feature is not currently supported for your device." @@ -56,7 +56,7 @@ msgstr " ({time_remaining} restant)" #: src/licensefeaturerow.py:32 msgid "Side-by-side mode (gaming)" -msgstr "Mode côte à côte (jeu)" +msgstr "Mode SBS (jeu)" #: src/licensefeaturerow.py:33 msgid "Smooth Follow (gaming)" @@ -64,7 +64,7 @@ msgstr "Suivi fluide (jeu)" #: src/licensefeaturerow.py:34 msgid "Breezy Desktop (productivity)" -msgstr "Bureau aéré (productivité)" +msgstr "Breezy Desktop (productivité)" #: src/licensetierrow.py:24 msgid "Active" @@ -163,7 +163,7 @@ msgstr "Effet XR" #: src/gtk/connected-device.ui:45 msgid "Enables the Breezy Desktop XR effect." -msgstr "Active l'effet de bureau aéré XR." +msgstr "Active l'effet Breezy Desktop XR." #: src/gtk/connected-device.ui:55 msgid "Widescreen mode" @@ -198,7 +198,7 @@ msgid "" "Closer appears larger, further appears smaller. Controls depth when in " "widescreen mode." msgstr "" -"Plus proche apparaît plus grand, plus loin apparaît plus petit. Contrôle la " +"Plus proche apparaît plus grand, plus éloigné apparaît plus petit. Contrôle la " "profondeur lorsque vous êtes en mode grand écran." #: src/gtk/connected-device.ui:123 @@ -231,7 +231,7 @@ msgstr "Seuil de suivi" #: src/gtk/connected-device.ui:179 msgid "How far away you can look before the display follows." -msgstr "Distance à laquelle vous pouvez regarder avant que l'affichage ne suive." +msgstr "Distance jusqu'où vous pouvez regarder avant que l'affichage ne suive." #: src/gtk/connected-device.ui:209 src/gtk/connected-device.ui:215 msgid "Keyboard Shortcuts" @@ -280,7 +280,7 @@ msgid "" "resolution and best scaling when plugged in." msgstr "" "Modifiez automatiquement la configuration d'affichage des lunettes pour une " -"résolution maximale et un meilleur масштаб lorsque elles sont branchées." +"résolution maximale et une meilleure mise à l'échelle lorsque elles sont branchées." #: src/gtk/connected-device.ui:332 msgid "Use highest refresh rate" @@ -288,7 +288,7 @@ msgstr "Utiliser le taux de rafraîchissement le plus élevé" #: src/gtk/connected-device.ui:333 msgid "Refresh rate may affect performance, disable this to set it manually." -msgstr "Le taux de rafraîchissement peut affecter les performances, désactivez-le pour le définir manuellement." +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 msgid "Always primary display" @@ -307,7 +307,7 @@ msgid "" "Switches glasses to SBS mode immediately when plugged in, if widescreen mode " "is on. May cause instability." msgstr "" -"Bascule les lunettes vers le mode SBS immédiatement lorsqu'elles sont branchées, " +"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 @@ -322,7 +322,7 @@ msgid "" msgstr "" "Compense le lag d'entrée en prédisant la position de suivi de la tête avant " "le temps de rendu. Restez sur la valeur par défaut à moins que l'affichage virtuel " -"ne soit lent, ne saute pas ou est très instable." +"ne soit lent, ne saute pas ou ne soit très instable." #: src/gtk/connected-device.ui:384 msgid "Default" @@ -351,11 +351,11 @@ msgstr "Faire un don" #: src/gtk/license-dialog.ui:44 msgid "Request a token" -msgstr "Demander un jeton" +msgstr "Demander un jeton d'authentification" #: src/gtk/license-dialog.ui:52 msgid "Verify token" -msgstr "Vérifier le jeton" +msgstr "Vérifier le jeton d'authentification" #: src/gtk/no-device.ui:13 msgid "No device connected" From 1e05f1fc7e15c42297657427251c23d438ecee51 Mon Sep 17 00:00:00 2001 From: wheaney <42350981+wheaney@users.noreply.github.com> Date: Mon, 19 Aug 2024 08:36:46 -0700 Subject: [PATCH 09/30] Update fr.mo file for latest translations --- ui/po/fr/LC_MESSAGES/breezydesktop.mo | Bin 10549 -> 10610 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/ui/po/fr/LC_MESSAGES/breezydesktop.mo b/ui/po/fr/LC_MESSAGES/breezydesktop.mo index e22b6140ef8c0dda2f4369bd01b51bb0df343a9b..244a50e54ba41e4e6469792b3425831ecc279201 100644 GIT binary patch delta 882 zcmZY6Pe>F|9Ki9n8EcxYZK#><>f2g(lv>Il(+(A@Q51o=NKg@)`&Osc9oyM0tiv2C zf`krDkWi2z5!*#$Gl+C~ZP7(~#eKhUM1lRMeN8=l9;s`_1qD-on7If%!WX z&a4pPYqJnTI295ifIqMWm$3tz!a~Hc4-=TfN?gDj_zF{ah)o~x32wq`twOBFyQ|J( z9rHPi;G0(Ah|=fq^$D({-Z+hZoWr&F9CZg?Vk3I1enf`&%|l`% z)zTc%gI#z6cjGNQii-|`uDm8HL^n3!UQA*ePGJn6Vh)#(A&&7)c?ki@XO7p3iyhZSoEvu?l9TuBOb(JQ*&qC+8>GKLHJF_q1mX>(*aZ(3P# z+)62#OeEdYZEsy8mJTP)l!_-N<67C?>pjb>xHl6o2OXt*v9vGvU!Kxmqs#XX*Up}( delta 820 zcmY+>KWGzi6u|L!Nr~3R7&W$$Hs)f}*h)I6)o8&EMUkpS>ENiw_6oJB!L$*@;V>XN zxRi4d{9hdEppk2J5kx{4akvbvq9C{^f<;i=6#PDurEs~=d->h(_ujqxIW#|1zUjB` zh{)Ggk<)m!O(cY0FowUe3pbK<<9_VNaa@H@u!PTX1ov$bS;V`z0jJ_3O?a)YgAww3 zn83NX*s_UWi9fdCcMM|0tQAOLJ9!tfB!l&Q0>k9fsEs|uwdkR~z^A&)=qLY!&8Sre zpaoxJHerjbCTQPUE11RucV zikWfipXG|J;Rl`Da+)!|ABL{pYBf From ea7930ceaa4076c33ada8423f3dc53ae271ce568 Mon Sep 17 00:00:00 2001 From: wheaney <42350981+wheaney@users.noreply.github.com> Date: Mon, 19 Aug 2024 15:06:05 -0700 Subject: [PATCH 10/30] Add explicit license refresh when the Breezy UI is opened Prevent unnecessary license warnings --- ui/src/main.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ui/src/main.py b/ui/src/main.py index 668cd7b..08c8890 100644 --- a/ui/src/main.py +++ b/ui/src/main.py @@ -83,6 +83,10 @@ class BreezydesktopApplication(Adw.Application): self.create_action('reset_driver', self.on_reset_driver_action) self._skip_verification = skip_verification + # always do this on start-up since the driver sometimes fails to update the license on boot, + # prevent showing a license warning unnecessarily + XRDriverIPC.get_instance().write_control_flags({'refresh_device_license': True}) + def do_activate(self): """Called when the application is activated. From 9a221b5bcb0342ab7f282af9581ddc84f246a750 Mon Sep 17 00:00:00 2001 From: 8796n Date: Tue, 20 Aug 2024 12:45:58 +0900 Subject: [PATCH 11/30] Update ja.po (#49) Corrected license vocabulary --- ui/po/ja.po | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/ui/po/ja.po b/ui/po/ja.po index 453a708..015ed58 100644 --- a/ui/po/ja.po +++ b/ui/po/ja.po @@ -33,7 +33,7 @@ msgstr "この機能は現在接続されているデバイスではサポート #: src/licensedialog.py:49 msgid "Paid Tier Status" -msgstr "有料会員資格" +msgstr "有料ティアの状態" #: src/licensedialog.py:57 msgid "Feature Availability" @@ -79,15 +79,15 @@ msgstr "非アクティブ" #: src/licensetierrow.py:41 #, python-brace-format msgid "${amount} USD" -msgstr "${amount}ドル" +msgstr "あと${amount} (USD)" #: src/licensetierrow.py:43 msgid " to renew" -msgstr "を更新" +msgstr "で更新可能" #: src/licensetierrow.py:45 msgid " to upgrade" -msgstr "にアップグレード" +msgstr "でアップグレード可能" #: src/licensetierrow.py:47 msgid "Paid through next renewal period" @@ -103,27 +103,27 @@ msgstr "プロダクティビティ" #: src/licensetierrow.py:63 msgid " - renewing monthly" -msgstr " - 毎月更新" +msgstr " - 月払い" #: src/licensetierrow.py:64 msgid " - renewing yearly" -msgstr " - 毎年更新" +msgstr " - 年払い" #: src/licensetierrow.py:65 msgid "with lifetime access" -msgstr "生涯アクセス権付き" +msgstr "一括払い済み" #: src/licensetierrow.py:72 msgid "Monthly" -msgstr "月額" +msgstr "月払い" #: src/licensetierrow.py:73 msgid "Yearly" -msgstr "年額" +msgstr "年払い" #: src/licensetierrow.py:74 msgid "Lifetime" -msgstr "生涯" +msgstr "一括払い" #: src/time.py:14 msgid "less than an hour" @@ -200,7 +200,7 @@ msgid "" "Closer appears larger, further appears smaller. Controls depth when in " "widescreen mode." msgstr "" -"近づけると大きく見え、遠ざけると小さく見えます。" +"近づけると大きく見え、遠ざけると小さく見えます。\n" "ワイドスクリーンモードの奥行きを制御します。" #: src/gtk/connected-device.ui:123 @@ -212,7 +212,7 @@ msgid "" "Combine with display distance to achieve a comfortable level of depth and " "size." msgstr "" -"ディスプレイ距離と組み合わせて、快適な奥行きとサイズを実現します。" +"ディスプレイ距離と組み合わせて、\n快適な奥行きとサイズを実現します。" #: src/gtk/connected-device.ui:152 msgid "Display toggle distances" @@ -337,7 +337,7 @@ msgstr "" #: src/gtk/license-dialog.ui:5 src/gtk/window.ui:55 msgid "License Details" -msgstr "ライセンス詳細" +msgstr "ライセンスの詳細" #: src/gtk/license-dialog.ui:27 msgid "Donate" From ddf26b699a841bee6aecd0fdabcacc174ca7ea1c Mon Sep 17 00:00:00 2001 From: wheaney <42350981+wheaney@users.noreply.github.com> Date: Mon, 19 Aug 2024 20:46:30 -0700 Subject: [PATCH 12/30] Update ja.mo based on latest translations --- ui/po/ja/LC_MESSAGES/breezydesktop.mo | Bin 11497 -> 11523 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/ui/po/ja/LC_MESSAGES/breezydesktop.mo b/ui/po/ja/LC_MESSAGES/breezydesktop.mo index 8956f7b62ba54de597883738854619464522d466..9566ea253579e236748565e0a39bde8cb790b713 100644 GIT binary patch delta 976 zcmYk)Ur5tY6u|K_GfVp;DTbuxW-~P>X+==!f)aYD7mcudkklSBQVFV;jP={KrR|}I zks?V^A*SdW%ydCkFF^=FRATQ}e=77)5|J;`_wt(%jNj*;^Sk%lv$HK

nI)hQL-4 znaL9|&S56b<8J(oshFKFvI%pMkGOg4!WuOD&tn>1MpLH~E3pd?<2c^Kd91^$1tQz= zZGi-&oW&;+wYZ80(9i8ncnwYA<uzyo9ZVB4sX-kC;om;&vL@;&Jxpp~)9v2_8ef zi?k-=0GhhPo`AE6k~m7@6>^9C#2m~la^4r?K4Kr5d;^*b+A#}5XeKd$W&$I43MX+D z*OKr5?s4{S_KKV!pBG@kN1Aw;f(lK6!K5RYPCSX`qW5ST`HB^|hSlgRcFwmUDGB0n z9L6?WL^FZ9y-vOzPZ9^lS)69^3(dhA=JfF@0W@8`jzyzk_49?;=G?N+iiEP6uG!yxN z+4voI;*a?1#@U>X!5+K!p|-lkUEyAMJ&_EwHEchcu=`>Q4_+>*X(86ZXId$(`gJg- z)tFXqwCYX1uCn`wq{HDoiPYAgGrTtmx5iye<&*P!9%0|HGYNxWDh5Z#(zQwNB2Rhb@FG!&=P1dfbXva65)Eh+pvt*5!*V!;yUP zODTglB=+EUtiXx_kyCgM_29SIgdeaTj~9w;N)dU9T4=)M6!HgkeWu&Vufh$)Wyrh8 zv1EJ|bzQgH?+p4#RFZgv+#yq#jVbG#`8BwixBxZ35B1{Hn1we{JJF2Vfgaq8gSdb{ zlJoOL&idb2O+M3KEW%F?^U#AEP%CRjJ*X`i_o80(5Vep|EW-qPF{{LxKZK;jhr2L{ z7w{cw2g=tw`GdHd*x$n70E17c8}sQ`FIJ<*Q>cGQ`bJugmADPh;!fP7{mj z@H6WE9aKv*r51JH9qhyrq@bg+pASG=cOG@&4P1d;n1+vW5}%@WB Date: Sat, 17 Aug 2024 09:46:03 -0700 Subject: [PATCH 13/30] Add Russian-language files and initial LLM-generated translations --- ui/po/LINGUAS | 2 +- ui/po/ru.po | 482 ++++++++++++++++++++++++++ ui/po/ru/LC_MESSAGES/breezydesktop.mo | Bin 0 -> 13638 bytes 3 files changed, 483 insertions(+), 1 deletion(-) create mode 100644 ui/po/ru.po create mode 100644 ui/po/ru/LC_MESSAGES/breezydesktop.mo diff --git a/ui/po/LINGUAS b/ui/po/LINGUAS index 82bd741..67b7f56 100644 --- a/ui/po/LINGUAS +++ b/ui/po/LINGUAS @@ -1 +1 @@ -de es fr it ja pl sv zh_CN \ No newline at end of file +de es fr it ja pl ru sv zh_CN \ No newline at end of file diff --git a/ui/po/ru.po b/ui/po/ru.po new file mode 100644 index 0000000..d706e0b --- /dev/null +++ b/ui/po/ru.po @@ -0,0 +1,482 @@ +# Russian translations for PACKAGE package. +# Copyright (C) 2024 THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# , 2024. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-08-17 09:44-0700\n" +"PO-Revision-Date: 2024-08-17 09:39-0700\n" +"Last-Translator: \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"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 +msgid "" +"Switches your glasses into side-by-side mode and doubles the width of the " +"display." +msgstr "" +"Переключает очки в режим «сторона к стороне» и удваивает ширину дисплея." + +#: src/connecteddevice.py:17 +msgid "This feature is not currently supported for your device." +msgstr "Эта функция в настоящее время не поддерживается для вашего устройства." + +#: src/licensedialog.py:49 +msgid "Paid Tier Status" +msgstr "Статус платного уровня" + +#: src/licensedialog.py:57 +msgid "Feature Availability" +msgstr "Доступность функций" + +#: src/licensefeaturerow.py:15 src/shortcutdialog.py:107 +msgid "Disabled" +msgstr "Отключено" + +#: src/licensefeaturerow.py:18 +msgid "In trial" +msgstr "На пробном периоде" + +#: src/licensefeaturerow.py:18 +msgid "Enabled" +msgstr "Включено" + +#: src/licensefeaturerow.py:24 src/licensetierrow.py:30 +#, python-brace-format +msgid " ({time_remaining} remaining)" +msgstr " ({time_remaining} осталось)" + +#: src/licensefeaturerow.py:32 +msgid "Side-by-side mode (gaming)" +msgstr "Режим «сторона к стороне» (игры)" + +#: src/licensefeaturerow.py:33 +msgid "Smooth Follow (gaming)" +msgstr "Плавное следование (игры)" + +#: src/licensefeaturerow.py:34 +msgid "Breezy Desktop (productivity)" +msgstr "Breezy Desktop (продуктивность)" + +#: src/licensetierrow.py:24 +msgid "Active" +msgstr "Активно" + +#: src/licensetierrow.py:24 +msgid "Inactive" +msgstr "Неактивно" + +#: src/licensetierrow.py:41 +#, python-brace-format +msgid "${amount} USD" +msgstr "${amount} USD" + +#: src/licensetierrow.py:43 +msgid " to renew" +msgstr " для продления" + +#: src/licensetierrow.py:45 +msgid " to upgrade" +msgstr " для апгрейда" + +#: src/licensetierrow.py:47 +msgid "Paid through next renewal period" +msgstr "Оплачено до следующего периода продления" + +#: src/licensetierrow.py:56 +msgid "Gaming" +msgstr "Игры" + +#: src/licensetierrow.py:57 +msgid "Productivity" +msgstr "Продуктивность" + +#: src/licensetierrow.py:63 +msgid " - renewing monthly" +msgstr " - ежемесячное продление" + +#: src/licensetierrow.py:64 +msgid " - renewing yearly" +msgstr " - ежегодное продление" + +#: src/licensetierrow.py:65 +msgid "with lifetime access" +msgstr "с пожизненным доступом" + +#: src/licensetierrow.py:72 +msgid "Monthly" +msgstr "Ежемесячно" + +#: src/licensetierrow.py:73 +msgid "Yearly" +msgstr "Ежегодно" + +#: src/licensetierrow.py:74 +msgid "Lifetime" +msgstr "Пожизненно" + +#: src/time.py:14 +msgid "less than an hour" +msgstr "менее часа" + +#: src/time.py:17 +msgid "1 hour" +msgstr "1 час" + +#: src/time.py:17 +#, python-brace-format +msgid "{time_remaining} hours" +msgstr "{time_remaining} часов" + +#: src/time.py:20 +msgid "1 day" +msgstr "1 день" + +#: src/time.py:20 +#, python-brace-format +msgid "{time_remaining} days" +msgstr "{time_remaining} дней" + +#: src/gtk/connected-device.ui:21 +msgid "connected" +msgstr "подключено" + +#: src/gtk/connected-device.ui:31 +msgid "General Settings" +msgstr "Общие настройки" + +#: src/gtk/connected-device.ui:41 +msgid "Features" +msgstr "Функции" + +#: src/gtk/connected-device.ui:44 +msgid "XR effect" +msgstr "Эффект XR" + +#: src/gtk/connected-device.ui:45 +msgid "Enables the Breezy Desktop XR effect." +msgstr "Включает эффект Breezy Desktop XR." + +#: src/gtk/connected-device.ui:55 +msgid "Widescreen mode" +msgstr "Режим широкого экрана" + +#: src/gtk/connected-device.ui:66 +msgid "Follow mode" +msgstr "Режим следования" + +#: src/gtk/connected-device.ui:67 +msgid "Keep the virtual display near the center of your view." +msgstr "Поддерживайте виртуальный дисплей вблизи центра вашего зрения." + +#: src/gtk/connected-device.ui:77 +msgid "Curved display" +msgstr "Изогнутый дисплей" + +#: src/gtk/connected-device.ui:78 +msgid "Switch between flat and curved displays." +msgstr "Переключаться между плоскими и изогнутыми дисплеями." + +#: src/gtk/connected-device.ui:91 +msgid "Adjustments" +msgstr "Настройки" + +#: src/gtk/connected-device.ui:94 +msgid "Display distance" +msgstr "Расстояние дисплея" + +#: src/gtk/connected-device.ui:95 +msgid "" +"Closer appears larger, further appears smaller. Controls depth when in " +"widescreen mode." +msgstr "" +"Чем ближе, тем больше, чем дальше, тем меньше. Управляет глубиной при " +"использовании режима широкого экрана." + +#: src/gtk/connected-device.ui:123 +msgid "Display size" +msgstr "Размер дисплея" + +#: src/gtk/connected-device.ui:124 +msgid "" +"Combine with display distance to achieve a comfortable level of depth and " +"size." +msgstr "" +"Комбинируйте с расстоянием дисплея, чтобы достичь комфортного уровня глубины " +"и размера." + +#: src/gtk/connected-device.ui:152 +msgid "Display toggle distances" +msgstr "Расстояние переключения дисплея" + +#: src/gtk/connected-device.ui:153 +msgid "" +"Use the buttons to capture the current display distance for use with the " +"keyboard shortcut." +msgstr "" +"Используйте кнопки, чтобы зафиксировать текущее расстояние дисплея для " +"использования с сочетанием клавиш." + +#: src/gtk/connected-device.ui:178 +msgid "Follow threshold" +msgstr "Порог следования" + +#: src/gtk/connected-device.ui:179 +msgid "How far away you can look before the display follows." +msgstr "" +"На каком расстоянии вы можете посмотреть, прежде чем дисплей последует за " +"вами." + +#: src/gtk/connected-device.ui:209 src/gtk/connected-device.ui:215 +msgid "Keyboard Shortcuts" +msgstr "Сочетания клавиш" + +#: src/gtk/connected-device.ui:218 +msgid "Re-center display shortcut" +msgstr "Сочетание клавиш для перецентровки дисплея" + +#: src/gtk/connected-device.ui:219 +msgid "Pin the virtual display to the current position." +msgstr "Фиксировать виртуальный дисплей в текущем положении." + +#: src/gtk/connected-device.ui:238 src/gtk/connected-device.ui:267 +#: src/gtk/connected-device.ui:296 +msgid "Change" +msgstr "Изменить" + +#: src/gtk/connected-device.ui:247 +msgid "Display distance shortcut" +msgstr "Сочетание клавиш для расстояния дисплея" + +#: src/gtk/connected-device.ui:248 +msgid "Quickly toggle between two predefined distances." +msgstr "Быстро переключаться между двумя предопределенными расстояниями." + +#: src/gtk/connected-device.ui:276 +msgid "Toggle follow mode shortcut" +msgstr "Сочетание клавиш для переключения режима следования" + +#: src/gtk/connected-device.ui:277 +msgid "Quickly toggle follow mode." +msgstr "Быстро переключать режим следования." + +#: src/gtk/connected-device.ui:312 src/gtk/connected-device.ui:318 +msgid "Advanced Settings" +msgstr "Дополнительные настройки" + +#: src/gtk/connected-device.ui:321 +msgid "Find optimal display config" +msgstr "Найти оптимальную конфигурацию дисплея" + +#: src/gtk/connected-device.ui:322 +msgid "" +"Automatically modify the glasses display configuration for maximum " +"resolution and best scaling when plugged in." +msgstr "" +"Автоматически изменять конфигурацию дисплея очков для максимального " +"разрешения и лучшей масштабирования при подключении." + +#: src/gtk/connected-device.ui:332 +msgid "Use highest refresh rate" +msgstr "Использовать высшую частоту обновления" + +#: src/gtk/connected-device.ui:333 +msgid "Refresh rate may affect performance, disable this to set it manually." +msgstr "" +"Частота обновления может повлиять на производительность, отключите это, " +"чтобы установить ее вручную." + +#: src/gtk/connected-device.ui:343 +msgid "Always primary display" +msgstr "Всегда основной дисплей" + +#: src/gtk/connected-device.ui:344 +msgid "Automatically set the glasses as the primary display when plugged in." +msgstr "" +"Автоматически устанавливать очки в качестве основного дисплея при " +"подключении." + +#: src/gtk/connected-device.ui:354 +msgid "Fast SBS mode switching" +msgstr "Быстрое переключение режима SBS" + +#: src/gtk/connected-device.ui:355 +msgid "" +"Switches glasses to SBS mode immediately when plugged in, if widescreen mode " +"is on. May cause instability." +msgstr "" +"Переключает очки в режим SBS немедленно при подключении, если режим широкого " +"экрана включен. Может вызвать нестабильность." + +#: src/gtk/connected-device.ui:365 +msgid "Movement look-ahead" +msgstr "Прогнозирование движения" + +#: src/gtk/connected-device.ui:366 +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 +msgid "Default" +msgstr "По умолчанию" + +#: src/gtk/failed-verification.ui:13 +msgid "Breezy Desktop GNOME invalid setup" +msgstr "Недействительная настройка Breezy Desktop GNOME" + +#: src/gtk/failed-verification.ui:14 +msgid "" +"Your Breezy GNOME setup is invalid or incomplete. Please re-run the setup " +"script. Report this issue if it persists." +msgstr "" +"Ваша настройка Breezy GNOME недействительна или неполна. Пожалуйста, " +"перезапустите скрипт настройки. Сообщите об этой проблеме, если она " +"сохранится." + +#: src/gtk/license-dialog.ui:5 src/gtk/window.ui:55 +msgid "License Details" +msgstr "Подробности лицензии" + +#: src/gtk/license-dialog.ui:27 +msgid "Donate" +msgstr "Сделать пожертвование" + +#: src/gtk/license-dialog.ui:44 +msgid "Request a token" +msgstr "Запросить токен" + +#: src/gtk/license-dialog.ui:52 +msgid "Verify token" +msgstr "Проверить токен" + +#: src/gtk/no-device.ui:13 +msgid "No device connected" +msgstr "Устройство не подключено" + +#: src/gtk/no-device.ui:14 +msgid "Breezy Desktop was unable to detect any supported XR devices." +msgstr "Breezy Desktop не смог обнаружить никаких поддерживаемых устройств XR." + +#: src/gtk/no-driver.ui:13 +msgid "No driver running" +msgstr "Драйвер не запущен" + +#: src/gtk/no-driver.ui:14 +msgid "" +"\n" +" If you installed via AUR, make sure you ran the recommended post-" +"install command:\n" +" systemctl --user enable --now xr-driver.service\n" +"\n" +" Otherwise, please file an issue on GitHub, or create a new thread " +"in the #troubleshooting channel on Discord.\n" +" " +msgstr "" +"\n" +" Если вы установили через AUR, убедитесь, что вы запустили " +"рекомендуемую команду пост-установки:\n" +" systemctl --user enable --now xr-driver.service\n" +"\n" +" В противном случае, пожалуйста, создайте проблему на GitHub или " +"новый тред в канале #troubleshooting на Discord.\n" +" " + +#: src/gtk/no-extension.ui:13 +msgid "Breezy Desktop GNOME extension not ready" +msgstr "Расширение Breezy Desktop GNOME не готово" + +#: src/gtk/no-extension.ui:14 +msgid "" +"If you have just run the setup, then you may need to log out and back in to " +"use it. Otherwise, please follow the Breezy GNOME setup instructions." +msgstr "" +"Если вы только что запустили настройку, вам может потребоваться выйти и " +"снова войти, чтобы использовать ее. В противном случае, пожалуйста, следуйте " +"инструкциям по настройке Breezy GNOME." + +#: src/gtk/no-license.ui:13 +msgid "No license file was found" +msgstr "Файл лицензии не найден" + +#: src/gtk/no-license.ui:14 +msgid "" +"\n" +" The first time you use Breezy Desktop, an internet connection is " +"required to retrieve your device's license.\n" +" \n" +" Don't worry, there's no obligation to donate at this time. If you " +"haven't, you'll be given a trial license so you can decide if Breezy Desktop " +"fits your needs. \n" +" \n" +" Once you obtain a license, trial or otherwise, you can use Breezy " +"Desktop offline until features expire (or indefinitely, if you've chosen " +"lifetime access).\n" +" " +msgstr "" +"\n" +" При первом использовании Breezy Desktop требуется интернет-" +"соединение для получения лицензии вашего устройства.\n" +" \n" +" Не волнуйтесь, вы не обязаны делать пожертвование в этот " +"момент. Если вы не сделали этого, вам будет предоставлена пробная " +"лицензия, чтобы вы могли решить, подходит ли вам Breezy Desktop.\n" +" \n" +" После получения лицензии, пробной или иной, вы можете " +"использовать Breezy Desktop в автономном режиме до истечения срока " +"действия функций (или бессрочно, если вы выбрали пожизненный доступ).\n" +" " + +#: src/gtk/no-license.ui:27 +msgid "Try Again" +msgstr "Попробовать еще раз" + +#: src/gtk/shortcut-dialog.ui:5 +msgid "Assign Keyboard Shortcut" +msgstr "Назначить сочетание клавиш" + +#: src/gtk/shortcut-dialog.ui:20 +msgid "Press your keyboard shortcut or 'Backspace' to disable..." +msgstr "Нажмите на свое сочетание клавиш или 'Backspace', чтобы отключить..." + +#: src/gtk/window.ui:10 +msgid "Breezy Desktop" +msgstr "Breezy Desktop" + +#: src/gtk/window.ui:23 +msgid "Menu" +msgstr "Меню" + +#: src/gtk/window.ui:35 +msgid "Some features expire soon" +msgstr "Некоторые функции скоро истекут" + +#: src/gtk/window.ui:36 src/gtk/window.ui:43 +msgid "View details" +msgstr "Просмотреть детали" + +#: src/gtk/window.ui:42 +msgid "Productivity features are disabled" +msgstr "Функции повышения производительности отключены" + +#: src/gtk/window.ui:59 +msgid "Force Reset" +msgstr "Силовой сброс" + +#: src/gtk/window.ui:63 +msgid "About BreezyDesktop" +msgstr "О BreezyDesktop" \ No newline at end of file diff --git a/ui/po/ru/LC_MESSAGES/breezydesktop.mo b/ui/po/ru/LC_MESSAGES/breezydesktop.mo new file mode 100644 index 0000000000000000000000000000000000000000..307ff5f888ba5a28c3ce5d007fa5aa8d85ebb994 GIT binary patch literal 13638 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 lrzfTQ`dXEGdC2+ Date: Sat, 17 Aug 2024 10:17:16 -0700 Subject: [PATCH 14/30] Add Ukrainian-language files and initial LLM-generated translations --- ui/po/uk_UA.po | 454 +++++++++++++++++++++++ ui/po/uk_UA/LC_MESSAGES/breezydesktop.mo | Bin 0 -> 13485 bytes 2 files changed, 454 insertions(+) create mode 100644 ui/po/uk_UA.po create mode 100644 ui/po/uk_UA/LC_MESSAGES/breezydesktop.mo diff --git a/ui/po/uk_UA.po b/ui/po/uk_UA.po new file mode 100644 index 0000000..3a27bdf --- /dev/null +++ b/ui/po/uk_UA.po @@ -0,0 +1,454 @@ +# Ukrainian translations for PACKAGE package. +# Copyright (C) 2024 THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# , 2024. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-08-15 15:36-0700\n" +"PO-Revision-Date: 2024-08-17 10:08-0700\n" +"Last-Translator: \n" +"Language-Team: Ukrainian \n" +"Language: uk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"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 +msgid "" +"Switches your glasses into side-by-side mode and doubles the width of the " +"display." +msgstr "Переключає окуляри в режим «бок о бок» і подвоює ширину дисплея." + +#: src/connecteddevice.py:17 +msgid "This feature is not currently supported for your device." +msgstr "Ця функція наразі не підтримується на вашому пристрої." + +#: src/licensedialog.py:49 +msgid "Paid Tier Status" +msgstr "Статус платного рівня" + +#: src/licensedialog.py:57 +msgid "Feature Availability" +msgstr "Доступність функцій" + +#: src/licensefeaturerow.py:15 src/shortcutdialog.py:107 +msgid "Disabled" +msgstr "Вимкнено" + +#: src/licensefeaturerow.py:18 +msgid "In trial" +msgstr "У пробному режимі" + +#: src/licensefeaturerow.py:18 +msgid "Enabled" +msgstr "Увімкнено" + +#: src/licensefeaturerow.py:24 src/licensetierrow.py:30 +#, python-brace-format +msgid " ({time_remaining} remaining)" +msgstr "({time_remaining} залишилося)" + +#: src/licensefeaturerow.py:32 +msgid "Side-by-side mode (gaming)" +msgstr "Режим «бок о бок» (ігровий)" + +#: src/licensefeaturerow.py:33 +msgid "Smooth Follow (gaming)" +msgstr "Плавне слідування (ігровий)" + +#: src/licensefeaturerow.py:34 +msgid "Breezy Desktop (productivity)" +msgstr "Breezy Desktop (продуктивність)" + +#: src/licensetierrow.py:24 +msgid "Active" +msgstr "Активний" + +#: src/licensetierrow.py:24 +msgid "Inactive" +msgstr "Неактивний" + +#: src/licensetierrow.py:41 +#, python-brace-format +msgid "${amount} USD" +msgstr "${amount} USD" + +#: src/licensetierrow.py:43 +msgid " to renew" +msgstr " для продовження" + +#: src/licensetierrow.py:45 +msgid " to upgrade" +msgstr " для оновлення" + +#: src/licensetierrow.py:47 +msgid "Paid through next renewal period" +msgstr "Оплата до наступного періоду продовження" + +#: src/licensetierrow.py:56 +msgid "Gaming" +msgstr "Ігровий" + +#: src/licensetierrow.py:57 +msgid "Productivity" +msgstr "Продуктивність" + +#: src/licensetierrow.py:63 +msgid " - renewing monthly" +msgstr " - продовжується щомісяця" + +#: src/licensetierrow.py:64 +msgid " - renewing yearly" +msgstr " - продовжується щорічно" + +#: src/licensetierrow.py:65 +msgid "with lifetime access" +msgstr "з довічним доступом" + +#: src/licensetierrow.py:72 +msgid "Monthly" +msgstr "Щомісячно" + +#: src/licensetierrow.py:73 +msgid "Yearly" +msgstr "Щорічно" + +#: src/licensetierrow.py:74 +msgid "Lifetime" +msgstr "Довічний" + +#: src/time.py:14 +msgid "less than an hour" +msgstr "менше години" + +#: src/time.py:17 +msgid "1 hour" +msgstr "1 година" + +#: src/time.py:17 +#, python-brace-format +msgid "{time_remaining} hours" +msgstr "{time_remaining} годин" + +#: src/time.py:20 +msgid "1 day" +msgstr "1 день" + +#: src/time.py:20 +#, python-brace-format +msgid "{time_remaining} days" +msgstr "{time_remaining} днів" + +#: src/gtk/connected-device.ui:21 +msgid "connected" +msgstr "з'єднано" + +#: src/gtk/connected-device.ui:31 +msgid "General Settings" +msgstr "Загальні налаштування" + +#: src/gtk/connected-device.ui:41 +msgid "Features" +msgstr "Функції" + +#: src/gtk/connected-device.ui:44 +msgid "XR effect" +msgstr "Ефект XR" + +#: src/gtk/connected-device.ui:45 +msgid "Enables the Breezy Desktop XR effect." +msgstr "Уможливлює ефект Breezy Desktop XR." + +#: src/gtk/connected-device.ui:55 +msgid "Widescreen mode" +msgstr "Режим широкого екрана" + +#: src/gtk/connected-device.ui:66 +msgid "Follow mode" +msgstr "Режим слідування" + +#: src/gtk/connected-device.ui:67 +msgid "Keep the virtual display near the center of your view." +msgstr "Зберігайте віртуальний дисплей поблизу центру вашого зору." + +#: src/gtk/connected-device.ui:77 +msgid "Curved display" +msgstr "Викривлений дисплей" + +#: src/gtk/connected-device.ui:78 +msgid "Switch between flat and curved displays." +msgstr "Переключайтеся між плоскими і викривленими дисплеями." + +#: src/gtk/connected-device.ui:91 +msgid "Adjustments" +msgstr "Налаштування" + +#: src/gtk/connected-device.ui:94 +msgid "Display distance" +msgstr "Відстань дисплея" + +#: src/gtk/connected-device.ui:95 +msgid "" +"Closer appears larger, further appears smaller. Controls depth when in " +"widescreen mode." +msgstr "Чим ближче, тим більший, чим далі, тим менший. Керує глибиною при використанні режиму широкого екрана." + +#: src/gtk/connected-device.ui:123 +msgid "Display size" +msgstr "Розмір дисплея" + +#: src/gtk/connected-device.ui:124 +msgid "" +"Combine with display distance to achieve a comfortable level of depth and " +"size." +msgstr "Поєднуйте з відстанню дисплея, щоб досягти комфортного рівня глибини і розміру." + +#: src/gtk/connected-device.ui:152 +msgid "Display toggle distances" +msgstr "Відстані перемикання дисплея" + +#: src/gtk/connected-device.ui:153 +msgid "" +"Use the buttons to capture the current display distance for use with the " +"keyboard shortcut." +msgstr "Використовуйте кнопки, щоб зафіксувати поточну відстань дисплея для використання з клавіатурним скороченням." + +#: src/gtk/connected-device.ui:178 +msgid "Follow threshold" +msgstr "Поріг слідування" + +#: src/gtk/connected-device.ui:179 +msgid "How far away you can look before the display follows." +msgstr "На яку відстань ви можете подивитися, перш ніж дисплей почне слідувати." + +#: src/gtk/connected-device.ui:209 src/gtk/connected-device.ui:215 +msgid "Keyboard Shortcuts" +msgstr "Клавіатурні скорочення" + +#: src/gtk/connected-device.ui:218 +msgid "Re-center display shortcut" +msgstr "Клавіатурне скорочення для центрування дисплея" + +#: src/gtk/connected-device.ui:219 +msgid "Pin the virtual display to the current position." +msgstr "Фіксує віртуальний дисплей у поточній позиції." + +#: src/gtk/connected-device.ui:238 src/gtk/connected-device.ui:267 +#: src/gtk/connected-device.ui:296 +msgid "Change" +msgstr "Змінити" + +#: src/gtk/connected-device.ui:247 +msgid "Display distance shortcut" +msgstr "Клавіатурне скорочення для відстані дисплея" + +#: src/gtk/connected-device.ui:248 +msgid "Quickly toggle between two predefined distances." +msgstr "Швидко перемикатися між двома попередньо визначеними відстанями." + +#: src/gtk/connected-device.ui:276 +msgid "Toggle follow mode shortcut" +msgstr "Клавіатурне скорочення для перемикання режиму слідування" + +#: src/gtk/connected-device.ui:277 +msgid "Quickly toggle follow mode." +msgstr "Швидко перемикати режим слідування." + +#: src/gtk/connected-device.ui:312 src/gtk/connected-device.ui:318 +msgid "Advanced Settings" +msgstr "Додаткова налаштування" + +#: src/gtk/connected-device.ui:321 +msgid "Find optimal display config" +msgstr "Знайти оптимальну конфігурацію дисплея" + +#: src/gtk/connected-device.ui:322 +msgid "" +"Automatically modify the glasses display configuration for maximum " +"resolution and best scaling when plugged in." +msgstr "Автоматично змінює конфігурацію дисплея окулярів для максимальної роздільної здатності і найкращого масштабування при підключенні." + +#: src/gtk/connected-device.ui:332 +msgid "Use highest refresh rate" +msgstr "Використовувати найвищу частоту оновлення" + +#: src/gtk/connected-device.ui:333 +msgid "Refresh rate may affect performance, disable this to set it manually." +msgstr "Частота оновлення може вплинути на продуктивність, вимкніть це, щоб встановити її вручну." + +#: src/gtk/connected-device.ui:343 +msgid "Always primary display" +msgstr "Завжди основний дисплей" + +#: src/gtk/connected-device.ui:344 +msgid "Automatically set the glasses as the primary display when plugged in." +msgstr "Автоматично встановлює окуляри як основний дисплей при підключенні." + +#: src/gtk/connected-device.ui:354 +msgid "Fast SBS mode switching" +msgstr "Швидке перемикання режиму SBS" + +#: src/gtk/connected-device.ui:355 +msgid "" +"Switches glasses to SBS mode immediately when plugged in, if widescreen mode " +"is on. May cause instability." +msgstr "Переключає окуляри в режим SBS відразу ж після підключення, якщо режим широкого екрана увімкнено. Може викликати нестабільність." + +#: src/gtk/connected-device.ui:365 +msgid "Movement look-ahead" +msgstr "Прогнозування руху" + +#: src/gtk/connected-device.ui:366 +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 +msgid "Default" +msgstr "За замовчуванням" + +#: src/gtk/failed-verification.ui:13 +msgid "Breezy Desktop GNOME invalid setup" +msgstr "Невірна настройка Breezy Desktop GNOME" + +#: src/gtk/failed-verification.ui:14 +msgid "" +"Your Breezy GNOME setup is invalid or incomplete. Please re-run the setup " +"script. Report this issue if it persists." +msgstr "" +"Ваша настройка Breezy GNOME є невірною або неповною. Будь ласка, запустіть скрипт настройки повторно. " +"Повідомте про цю проблему, якщо вона зберігається." + +#: src/gtk/license-dialog.ui:5 src/gtk/window.ui:55 +msgid "License Details" +msgstr "Деталі ліцензії" + +#: src/gtk/license-dialog.ui:27 +msgid "Donate" +msgstr "Зробити пожертву" + +#: src/gtk/license-dialog.ui:44 +msgid "Request a token" +msgstr "Запитати токен" + +#: src/gtk/license-dialog.ui:52 +msgid "Verify token" +msgstr "Перевірити токен" + +#: src/gtk/no-device.ui:13 +msgid "No device connected" +msgstr "Жоден пристрій не підключено" + +#: src/gtk/no-device.ui:14 +msgid "Breezy Desktop was unable to detect any supported XR devices." +msgstr "Breezy Desktop не зміг виявити жодного підтримуваного XR пристрою." + +#: src/gtk/no-driver.ui:13 +msgid "No driver running" +msgstr "Жоден драйвер не працює" + +#: src/gtk/no-driver.ui:14 +msgid "" +"\n" +" If you installed via AUR, make sure you ran the recommended post-" +"install command:\n" +" systemctl --user enable --now xr-driver.service\n" +"\n" +" Otherwise, please file an issue on GitHub, or create a new thread " +"in the #troubleshooting channel on Discord.\n" +" " +msgstr "" +"\n" +" Якщо ви встановили через AUR, переконайтеся, що ви запустили рекомендовану команду після встановлення:\n" +" systemctl --user enable --now xr-driver.service\n" +"\n" +"В іншому випадку, будь ласка, створіть проблему на GitHub або новий тред у каналі #troubleshooting на Discord.\n" +" " + +#: src/gtk/no-extension.ui:13 +msgid "Breezy Desktop GNOME extension not ready" +msgstr "Розширення Breezy Desktop GNOME не готове" + +#: src/gtk/no-extension.ui:14 +msgid "" +"If you have just run the setup, then you may need to log out and back in to " +"use it. Otherwise, please follow the Breezy GNOME setup instructions." +msgstr "" +"Якщо ви тільки що запустили налаштування, можливо, вам потрібно вийти і знову увійти, щоб використовувати його. " +"В іншому випадку, будь ласка, дотримуйтесь інструкцій з налаштування Breezy GNOME." + +#: src/gtk/no-license.ui:13 +msgid "No license file was found" +msgstr "Жоден файл ліцензії не знайдено" + +#: src/gtk/no-license.ui:14 +msgid "" +"\n" +" The first time you use Breezy Desktop, an internet connection is " +"required to retrieve your device's license.\n" +" \n" +" Don't worry, there's no obligation to donate at this time. If you " +"haven't, you'll be given a trial license so you can decide if Breezy Desktop " +"fits your needs. \n" +" \n" +" Once you obtain a license, trial or otherwise, you can use Breezy " +"Desktop offline until features expire (or indefinitely, if you've chosen " +"lifetime access).\n" +" " +msgstr "" +"\n" +"Під час першого запуску програми Breezy Desktop потрібне підключення до Інтернету для отримання ліцензії на пристрій.\n" +" \n" +"Не хвилюйтеся, наразі немає обов'язкового внеску. Якщо ви не зробили цього, вам буде надано пробну ліцензію, щоб ви могли вирішити, чи відповідає Breezy Desktop вашим потребам.\n" +" \n" +"Після отримання ліцензії, пробної або іншої, ви можете використовувати Breezy Desktop в автономному режимі, поки функції не закінчаться (або нескінченно, якщо ви обрали довічний доступ).\n" +" " + +#: src/gtk/no-license.ui:27 +msgid "Try Again" +msgstr "Спробуйте ще раз" + +#: src/gtk/shortcut-dialog.ui:5 +msgid "Assign Keyboard Shortcut" +msgstr "Призначити комбінацію клавіш" + +#: src/gtk/shortcut-dialog.ui:20 +msgid "Press your keyboard shortcut or 'Backspace' to disable..." +msgstr "Натисніть комбінацію клавіш або 'Backspace', щоб відключити..." + +#: src/gtk/window.ui:10 +msgid "Breezy Desktop" +msgstr "Breezy Desktop" + +#: src/gtk/window.ui:23 +msgid "Menu" +msgstr "Меню" + +#: src/gtk/window.ui:35 +msgid "Some features expire soon" +msgstr "Деякі функції закінчуються незабаром" + +#: src/gtk/window.ui:36 src/gtk/window.ui:43 +msgid "View details" +msgstr "Переглянути деталі" + +#: src/gtk/window.ui:42 +msgid "Productivity features are disabled" +msgstr "Функції продуктивності відключені" + +#: src/gtk/window.ui:59 +msgid "Force Reset" +msgstr "Скинути" + +#: src/gtk/window.ui:63 +msgid "About BreezyDesktop" +msgstr "Про BreezyDesktop" diff --git a/ui/po/uk_UA/LC_MESSAGES/breezydesktop.mo b/ui/po/uk_UA/LC_MESSAGES/breezydesktop.mo new file mode 100644 index 0000000000000000000000000000000000000000..a0a8a2a22679dcbeae49965aab05eefa878aa063 GIT binary patch literal 13485 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 Date: Mon, 19 Aug 2024 22:41:39 -0700 Subject: [PATCH 15/30] Finalize Russian/Ukrainian localizations (#50) * Improve Russian translation * Improve Ukrainian translation --- ui/po/ru.po | 54 +++++++++++++++---------------- ui/po/uk_UA.po | 86 +++++++++++++++++++++++++++----------------------- 2 files changed, 73 insertions(+), 67 deletions(-) diff --git a/ui/po/ru.po b/ui/po/ru.po index d706e0b..83efc79 100644 --- a/ui/po/ru.po +++ b/ui/po/ru.po @@ -35,7 +35,7 @@ msgstr "Статус платного уровня" #: src/licensedialog.py:57 msgid "Feature Availability" -msgstr "Доступность функций" +msgstr "Статус функций" #: src/licensefeaturerow.py:15 src/shortcutdialog.py:107 msgid "Disabled" @@ -56,23 +56,23 @@ msgstr " ({time_remaining} осталось)" #: src/licensefeaturerow.py:32 msgid "Side-by-side mode (gaming)" -msgstr "Режим «сторона к стороне» (игры)" +msgstr "Режим «бок о бок» (игровой режим)" #: src/licensefeaturerow.py:33 msgid "Smooth Follow (gaming)" -msgstr "Плавное следование (игры)" +msgstr "Плавное следование (игровой режим)" #: src/licensefeaturerow.py:34 msgid "Breezy Desktop (productivity)" -msgstr "Breezy Desktop (продуктивность)" +msgstr "Breezy Desktop (продуктивный режим)" #: src/licensetierrow.py:24 msgid "Active" -msgstr "Активно" +msgstr "Активный" #: src/licensetierrow.py:24 msgid "Inactive" -msgstr "Неактивно" +msgstr "Неактивный" #: src/licensetierrow.py:41 #, python-brace-format @@ -81,7 +81,7 @@ msgstr "${amount} USD" #: src/licensetierrow.py:43 msgid " to renew" -msgstr " для продления" +msgstr " для обновления" #: src/licensetierrow.py:45 msgid " to upgrade" @@ -89,23 +89,23 @@ msgstr " для апгрейда" #: src/licensetierrow.py:47 msgid "Paid through next renewal period" -msgstr "Оплачено до следующего периода продления" +msgstr "Оплачено до следующего периода" #: src/licensetierrow.py:56 msgid "Gaming" -msgstr "Игры" +msgstr "Игровой режим" #: src/licensetierrow.py:57 msgid "Productivity" -msgstr "Продуктивность" +msgstr "Продуктивный режим" #: src/licensetierrow.py:63 msgid " - renewing monthly" -msgstr " - ежемесячное продление" +msgstr " - ежемесячное обновление" #: src/licensetierrow.py:64 msgid " - renewing yearly" -msgstr " - ежегодное продление" +msgstr " - ежегодное обновление" #: src/licensetierrow.py:65 msgid "with lifetime access" @@ -175,7 +175,7 @@ msgstr "Режим следования" #: src/gtk/connected-device.ui:67 msgid "Keep the virtual display near the center of your view." -msgstr "Поддерживайте виртуальный дисплей вблизи центра вашего зрения." +msgstr "Поддерживает виртуальный дисплей вблизи центра вашего зрения." #: src/gtk/connected-device.ui:77 msgid "Curved display" @@ -183,7 +183,7 @@ msgstr "Изогнутый дисплей" #: src/gtk/connected-device.ui:78 msgid "Switch between flat and curved displays." -msgstr "Переключаться между плоскими и изогнутыми дисплеями." +msgstr "Переключается между плоскими и изогнутыми дисплеями." #: src/gtk/connected-device.ui:91 msgid "Adjustments" @@ -198,7 +198,7 @@ msgid "" "Closer appears larger, further appears smaller. Controls depth when in " "widescreen mode." msgstr "" -"Чем ближе, тем больше, чем дальше, тем меньше. Управляет глубиной при " +"Чем ближе, тем больше. Чем дальше, тем меньше. Управляет глубиной при " "использовании режима широкого экрана." #: src/gtk/connected-device.ui:123 @@ -215,7 +215,7 @@ msgstr "" #: src/gtk/connected-device.ui:152 msgid "Display toggle distances" -msgstr "Расстояние переключения дисплея" +msgstr "Переключения расстояние дисплея" #: src/gtk/connected-device.ui:153 msgid "" @@ -232,7 +232,7 @@ msgstr "Порог следования" #: src/gtk/connected-device.ui:179 msgid "How far away you can look before the display follows." msgstr "" -"На каком расстоянии вы можете посмотреть, прежде чем дисплей последует за " +"Как далеко вы можете отвернуть взгляд, прежде чем дисплей последует за " "вами." #: src/gtk/connected-device.ui:209 src/gtk/connected-device.ui:215 @@ -313,7 +313,7 @@ msgid "" "Switches glasses to SBS mode immediately when plugged in, if widescreen mode " "is on. May cause instability." msgstr "" -"Переключает очки в режим SBS немедленно при подключении, если режим широкого " +"Переключает очки в режим SBS сразу при подключении, если режим широкого " "экрана включен. Может вызвать нестабильность." #: src/gtk/connected-device.ui:365 @@ -329,7 +329,7 @@ msgstr "" "Компенсирует задержку ввода, прогнозируя положение отслеживания головы до " "времени рендеринга. Оставайтесь на уровне по умолчанию, если только " "виртуальный дисплей не отстает от движений вашей головы, не опережает или не " -"очень трясется." +"очень трясётся." #: src/gtk/connected-device.ui:384 msgid "Default" @@ -346,7 +346,7 @@ msgid "" msgstr "" "Ваша настройка Breezy GNOME недействительна или неполна. Пожалуйста, " "перезапустите скрипт настройки. Сообщите об этой проблеме, если она " -"сохранится." +"сохраняется." #: src/gtk/license-dialog.ui:5 src/gtk/window.ui:55 msgid "License Details" @@ -354,7 +354,7 @@ msgstr "Подробности лицензии" #: src/gtk/license-dialog.ui:27 msgid "Donate" -msgstr "Сделать пожертвование" +msgstr "Донатить" #: src/gtk/license-dialog.ui:44 msgid "Request a token" @@ -392,7 +392,7 @@ msgstr "" "рекомендуемую команду пост-установки:\n" " systemctl --user enable --now xr-driver.service\n" "\n" -" В противном случае, пожалуйста, создайте проблему на GitHub или " +" В противном случае, пожалуйста, создайте запрос на GitHub или " "новый тред в канале #troubleshooting на Discord.\n" " " @@ -406,7 +406,7 @@ msgid "" "use it. Otherwise, please follow the Breezy GNOME setup instructions." msgstr "" "Если вы только что запустили настройку, вам может потребоваться выйти и " -"снова войти, чтобы использовать ее. В противном случае, пожалуйста, следуйте " +"снова войти, чтобы использовать её. В противном случае, пожалуйста, следуйте " "инструкциям по настройке Breezy GNOME." #: src/gtk/no-license.ui:13 @@ -432,12 +432,12 @@ msgstr "" " При первом использовании Breezy Desktop требуется интернет-" "соединение для получения лицензии вашего устройства.\n" " \n" -" Не волнуйтесь, вы не обязаны делать пожертвование в этот " -"момент. Если вы не сделали этого, вам будет предоставлена пробная " +" Не волнуйтесь, на данный момент нет обязательства донатить. " +"Если вы не сделали этого, вам будет предоставлена пробная " "лицензия, чтобы вы могли решить, подходит ли вам Breezy Desktop.\n" " \n" " После получения лицензии, пробной или иной, вы можете " -"использовать Breezy Desktop в автономном режиме до истечения срока " +"использовать Breezy Desktop офлайн до истечения срока " "действия функций (или бессрочно, если вы выбрали пожизненный доступ).\n" " " @@ -475,7 +475,7 @@ msgstr "Функции повышения производительности #: src/gtk/window.ui:59 msgid "Force Reset" -msgstr "Силовой сброс" +msgstr "Сброс" #: src/gtk/window.ui:63 msgid "About BreezyDesktop" diff --git a/ui/po/uk_UA.po b/ui/po/uk_UA.po index 3a27bdf..9cbecff 100644 --- a/ui/po/uk_UA.po +++ b/ui/po/uk_UA.po @@ -34,7 +34,7 @@ msgstr "Статус платного рівня" #: src/licensedialog.py:57 msgid "Feature Availability" -msgstr "Доступність функцій" +msgstr "Статус функцій" #: src/licensefeaturerow.py:15 src/shortcutdialog.py:107 msgid "Disabled" @@ -55,15 +55,15 @@ msgstr "({time_remaining} залишилося)" #: src/licensefeaturerow.py:32 msgid "Side-by-side mode (gaming)" -msgstr "Режим «бок о бок» (ігровий)" +msgstr "Режим «бок о бок» (ігровий режим)" #: src/licensefeaturerow.py:33 msgid "Smooth Follow (gaming)" -msgstr "Плавне слідування (ігровий)" +msgstr "Плавне слідування (ігровий режим)" #: src/licensefeaturerow.py:34 msgid "Breezy Desktop (productivity)" -msgstr "Breezy Desktop (продуктивність)" +msgstr "Breezy Desktop (продуктивний прежим)" #: src/licensetierrow.py:24 msgid "Active" @@ -80,31 +80,31 @@ msgstr "${amount} USD" #: src/licensetierrow.py:43 msgid " to renew" -msgstr " для продовження" +msgstr " для оновлення" #: src/licensetierrow.py:45 msgid " to upgrade" -msgstr " для оновлення" +msgstr " для удосконалювання" #: src/licensetierrow.py:47 msgid "Paid through next renewal period" -msgstr "Оплата до наступного періоду продовження" +msgstr "Оплата до наступного періоду" #: src/licensetierrow.py:56 msgid "Gaming" -msgstr "Ігровий" +msgstr "Ігровий режим" #: src/licensetierrow.py:57 msgid "Productivity" -msgstr "Продуктивність" +msgstr "Продуктивний режим" #: src/licensetierrow.py:63 msgid " - renewing monthly" -msgstr " - продовжується щомісяця" +msgstr " - щомісячне продовження" #: src/licensetierrow.py:64 msgid " - renewing yearly" -msgstr " - продовжується щорічно" +msgstr " - щорічне продовження" #: src/licensetierrow.py:65 msgid "with lifetime access" @@ -120,7 +120,7 @@ msgstr "Щорічно" #: src/licensetierrow.py:74 msgid "Lifetime" -msgstr "Довічний" +msgstr "Довічно" #: src/time.py:14 msgid "less than an hour" @@ -146,7 +146,7 @@ msgstr "{time_remaining} днів" #: src/gtk/connected-device.ui:21 msgid "connected" -msgstr "з'єднано" +msgstr "підключено" #: src/gtk/connected-device.ui:31 msgid "General Settings" @@ -162,11 +162,11 @@ msgstr "Ефект XR" #: src/gtk/connected-device.ui:45 msgid "Enables the Breezy Desktop XR effect." -msgstr "Уможливлює ефект Breezy Desktop XR." +msgstr "Включає ефект Breezy Desktop XR." #: src/gtk/connected-device.ui:55 msgid "Widescreen mode" -msgstr "Режим широкого екрана" +msgstr "Режим широкого екрану" #: src/gtk/connected-device.ui:66 msgid "Follow mode" @@ -174,7 +174,7 @@ msgstr "Режим слідування" #: src/gtk/connected-device.ui:67 msgid "Keep the virtual display near the center of your view." -msgstr "Зберігайте віртуальний дисплей поблизу центру вашого зору." +msgstr "Зберігае віртуальний дисплей поблизу центру вашого зору." #: src/gtk/connected-device.ui:77 msgid "Curved display" @@ -182,7 +182,7 @@ msgstr "Викривлений дисплей" #: src/gtk/connected-device.ui:78 msgid "Switch between flat and curved displays." -msgstr "Переключайтеся між плоскими і викривленими дисплеями." +msgstr "Переключается між плоскими і викривленими дисплеями." #: src/gtk/connected-device.ui:91 msgid "Adjustments" @@ -196,7 +196,8 @@ msgstr "Відстань дисплея" msgid "" "Closer appears larger, further appears smaller. Controls depth when in " "widescreen mode." -msgstr "Чим ближче, тим більший, чим далі, тим менший. Керує глибиною при використанні режиму широкого екрана." +msgstr "Чим ближче, тим більший. Чим далі, тим менший. Керує глибиною при " +"використанні режиму широкого екрана." #: src/gtk/connected-device.ui:123 msgid "Display size" @@ -210,13 +211,14 @@ msgstr "Поєднуйте з відстанню дисплея, щоб дося #: src/gtk/connected-device.ui:152 msgid "Display toggle distances" -msgstr "Відстані перемикання дисплея" +msgstr "Перемикання відстані дисплея" #: src/gtk/connected-device.ui:153 msgid "" "Use the buttons to capture the current display distance for use with the " "keyboard shortcut." -msgstr "Використовуйте кнопки, щоб зафіксувати поточну відстань дисплея для використання з клавіатурним скороченням." +msgstr "Використовуйте кнопки, щоб зафіксувати поточну відстань дисплея для використання " +"з сполученням клавіш." #: src/gtk/connected-device.ui:178 msgid "Follow threshold" @@ -224,19 +226,19 @@ msgstr "Поріг слідування" #: src/gtk/connected-device.ui:179 msgid "How far away you can look before the display follows." -msgstr "На яку відстань ви можете подивитися, перш ніж дисплей почне слідувати." +msgstr "Як далеко ви можете відвернути ваш взор, перш ніж дисплей почне слідувати за вами." #: src/gtk/connected-device.ui:209 src/gtk/connected-device.ui:215 msgid "Keyboard Shortcuts" -msgstr "Клавіатурні скорочення" +msgstr "Сполучення клавіш" #: src/gtk/connected-device.ui:218 msgid "Re-center display shortcut" -msgstr "Клавіатурне скорочення для центрування дисплея" +msgstr "Сполучення клавіш для центрування дисплея" #: src/gtk/connected-device.ui:219 msgid "Pin the virtual display to the current position." -msgstr "Фіксує віртуальний дисплей у поточній позиції." +msgstr "Фіксувати віртуальний дисплей у поточній позиції." #: src/gtk/connected-device.ui:238 src/gtk/connected-device.ui:267 #: src/gtk/connected-device.ui:296 @@ -245,7 +247,7 @@ msgstr "Змінити" #: src/gtk/connected-device.ui:247 msgid "Display distance shortcut" -msgstr "Клавіатурне скорочення для відстані дисплея" +msgstr "Сполучення клавіш для відстані дисплея" #: src/gtk/connected-device.ui:248 msgid "Quickly toggle between two predefined distances." @@ -253,7 +255,7 @@ msgstr "Швидко перемикатися між двома попередн #: src/gtk/connected-device.ui:276 msgid "Toggle follow mode shortcut" -msgstr "Клавіатурне скорочення для перемикання режиму слідування" +msgstr "Сполучення клавіш для перемикання режиму слідування" #: src/gtk/connected-device.ui:277 msgid "Quickly toggle follow mode." @@ -261,7 +263,7 @@ msgstr "Швидко перемикати режим слідування." #: src/gtk/connected-device.ui:312 src/gtk/connected-device.ui:318 msgid "Advanced Settings" -msgstr "Додаткова налаштування" +msgstr "Додаткові налаштування" #: src/gtk/connected-device.ui:321 msgid "Find optimal display config" @@ -271,7 +273,8 @@ msgstr "Знайти оптимальну конфігурацію диспле msgid "" "Automatically modify the glasses display configuration for maximum " "resolution and best scaling when plugged in." -msgstr "Автоматично змінює конфігурацію дисплея окулярів для максимальної роздільної здатності і найкращого масштабування при підключенні." +msgstr "Автоматично змінює конфігурацію дисплея окулярів для максимальної " +"роздільної здатності і найкращого масштабування при підключенні." #: src/gtk/connected-device.ui:332 msgid "Use highest refresh rate" @@ -279,7 +282,8 @@ msgstr "Використовувати найвищу частоту оновл #: src/gtk/connected-device.ui:333 msgid "Refresh rate may affect performance, disable this to set it manually." -msgstr "Частота оновлення може вплинути на продуктивність, вимкніть це, щоб встановити її вручну." +msgstr "Частота оновлення може вплинути на продуктивність, вимкніть це, " +"щоб встановити її вручну." #: src/gtk/connected-device.ui:343 msgid "Always primary display" @@ -297,7 +301,8 @@ msgstr "Швидке перемикання режиму SBS" msgid "" "Switches glasses to SBS mode immediately when plugged in, if widescreen mode " "is on. May cause instability." -msgstr "Переключає окуляри в режим SBS відразу ж після підключення, якщо режим широкого екрана увімкнено. Може викликати нестабільність." +msgstr "Переключає окуляри в режим SBS відразу після підключення, якщо режим " +"широкого екрана увімкнено. Може викликати нестабільність." #: src/gtk/connected-device.ui:365 msgid "Movement look-ahead" @@ -310,7 +315,8 @@ msgid "" "movements, jumps ahead, or is very shaky." msgstr "" "Компенсує затримку введення, передбачаючи позицію відстеження голови перед часом рендерингу. " -"Залишайтеся при налаштуваннях за замовчуванням, якщо віртуальний дисплей відстає від рухів вашої голови, випереджає або дуже тремтить." +"Залишайтеся при налаштуваннях за замовчуванням, якщо віртуальний дисплей відстає від рухів вашої голови, " +"випереджає або дуже тремтить." #: src/gtk/connected-device.ui:384 msgid "Default" @@ -326,7 +332,7 @@ msgid "" "script. Report this issue if it persists." msgstr "" "Ваша настройка Breezy GNOME є невірною або неповною. Будь ласка, запустіть скрипт настройки повторно. " -"Повідомте про цю проблему, якщо вона зберігається." +"Повідомте про цю проблему, якщо вона не зникає." #: src/gtk/license-dialog.ui:5 src/gtk/window.ui:55 msgid "License Details" @@ -334,7 +340,7 @@ msgstr "Деталі ліцензії" #: src/gtk/license-dialog.ui:27 msgid "Donate" -msgstr "Зробити пожертву" +msgstr "Донатити" #: src/gtk/license-dialog.ui:44 msgid "Request a token" @@ -354,7 +360,7 @@ msgstr "Breezy Desktop не зміг виявити жодного підтри #: src/gtk/no-driver.ui:13 msgid "No driver running" -msgstr "Жоден драйвер не працює" +msgstr "Жоден драйвер не запущений" #: src/gtk/no-driver.ui:14 msgid "" @@ -371,7 +377,7 @@ msgstr "" " Якщо ви встановили через AUR, переконайтеся, що ви запустили рекомендовану команду після встановлення:\n" " systemctl --user enable --now xr-driver.service\n" "\n" -"В іншому випадку, будь ласка, створіть проблему на GitHub або новий тред у каналі #troubleshooting на Discord.\n" +"В іншому випадку, будь ласка, створіть запит на GitHub або новий тред у каналі #troubleshooting на Discord.\n" " " #: src/gtk/no-extension.ui:13 @@ -408,9 +414,9 @@ msgstr "" "\n" "Під час першого запуску програми Breezy Desktop потрібне підключення до Інтернету для отримання ліцензії на пристрій.\n" " \n" -"Не хвилюйтеся, наразі немає обов'язкового внеску. Якщо ви не зробили цього, вам буде надано пробну ліцензію, щоб ви могли вирішити, чи відповідає Breezy Desktop вашим потребам.\n" +"Не хвилюйтеся, наразі немає обов'язку донатити. Якщо ви не зробили цього, вам буде надана пробна ліцензія, щоб ви могли вирішити, чи відповідає Breezy Desktop вашим потребам.\n" " \n" -"Після отримання ліцензії, пробної або іншої, ви можете використовувати Breezy Desktop в автономному режимі, поки функції не закінчаться (або нескінченно, якщо ви обрали довічний доступ).\n" +"Після отримання ліцензії, пробної або іншої, ви можете використовувати Breezy Desktop офлайн до закінчення терміну дії функції (або безстроково, якщо ви обрали довічний доступ).\n" " " #: src/gtk/no-license.ui:27 @@ -419,11 +425,11 @@ msgstr "Спробуйте ще раз" #: src/gtk/shortcut-dialog.ui:5 msgid "Assign Keyboard Shortcut" -msgstr "Призначити комбінацію клавіш" +msgstr "Призначити сполучення клавіш" #: src/gtk/shortcut-dialog.ui:20 msgid "Press your keyboard shortcut or 'Backspace' to disable..." -msgstr "Натисніть комбінацію клавіш або 'Backspace', щоб відключити..." +msgstr "Натисніть сполучення клавіш або 'Backspace', щоб відключити..." #: src/gtk/window.ui:10 msgid "Breezy Desktop" @@ -443,7 +449,7 @@ msgstr "Переглянути деталі" #: src/gtk/window.ui:42 msgid "Productivity features are disabled" -msgstr "Функції продуктивності відключені" +msgstr "Функції продуктивного режиму відключені" #: src/gtk/window.ui:59 msgid "Force Reset" From 65e1a688feb6abbd673c2d26d08d6a863c4306ee Mon Sep 17 00:00:00 2001 From: wheaney <42350981+wheaney@users.noreply.github.com> Date: Mon, 19 Aug 2024 22:42:28 -0700 Subject: [PATCH 16/30] Update ru.po and uk_UA.po based on latest translations --- ui/po/ru/LC_MESSAGES/breezydesktop.mo | Bin 13638 -> 13576 bytes ui/po/uk_UA/LC_MESSAGES/breezydesktop.mo | Bin 13485 -> 13433 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/ui/po/ru/LC_MESSAGES/breezydesktop.mo b/ui/po/ru/LC_MESSAGES/breezydesktop.mo index 307ff5f888ba5a28c3ce5d007fa5aa8d85ebb994..17b4db3d44442317e026f1f6edfcbd4748ce9f69 100644 GIT binary patch delta 1316 zcmZ|NSx8h-7{KvwoMEhlG__L8>1yVhV~fyAy+l+5SyE9^U_pdXQTbHlq_&c@9fRnl zg`%JywCiL#&TS8ZsB_woUNRzRqo9W#qyL#1DyU%Y{LVS|EZ_H?`=Ie)V`r{E;`&5l zqeXW4MYiUPl!(Zuu_9s2Dio>2xyX<-VjdpAVR#mY;1$fpZp^}mDPLhW{ZCkfKX4+3 zLn2dfO-Lg0mc|hV6mB0UG8}`BNG*=US-1!n;C^hvCuk3vS0r*5m*aWNFBa({p?+jY zwvY|E$uYEnT*mPj!$tVIBqB0~M&$&N**G8V#%(D(a1#BCI2~W2ou65n473Ut(w~XM zE_+j6KwF`ENKxeplDvGt!o|9^I*LnmyVxEpASJgRd^GJ00E4Xk5q5VcqNKe(mu@>9#tIMlGK1GDkIwO)GC= zrrosAx|Uq)G0VQVVOmYQ`>3GFm*JVcI>x5GI<7X1{XCTQO!D+KwW6@N^jD8LoTG2( zsMsK4=4j%m)YQ|3jR6~y8w@Q;%S;4Ew_JrLT=ZKS7O`B;^^`%#fx{|dJeM-BwNlqR`_6XYft^UW~q%&eTEl=tOMNuY+Qt!aTT7$K75CIQO`7y`xwGY7_1c;A|Z=R z$pG1qn_NK+B!hKmuoJ)6hef6^=x7jGj2m$VoYHrmCJ8%!KLp|^@vP3?jmbkPze_#XZ z{~&5vOXW~QTBVYOH!fGbB;C9@J;in9$87!qSJ-89~V-lBR8-3`;J$MHn zp=Q$0Z42={>cubl(N>Kk8ogizzQ(I~7>`oM2o}%geZoPc3t{=jU^Nqyc_SX;7Ss!x z=H`2~67?kvVF|jZt+|YalrVu>iFCWj1hl9bzejCB>AZZ4n~~)*mao1OTqB#rD<1o! ztYpL?SNNO+3VX7x5pimF-b=s*{Hc?VkV<=304i8n2p#Ijv3+UO_Q{T zY{bMF$90uS>9)9IPcoae5yzx?lxAPXM!dUKeZIQ5!@{^eX1PAg{W=7ad2(+o)SP^Ygz-mbI+&yZhSe#x=1yAMs#tmY=|Fu-iS+QsK^T-BC`AyhnU#POhNT Zz`N1TjgUz+DDK+kiSFt4zTf%{O~iYn3pB*I5+k}`p~i)e|M^;ijU-*Pzqzk- z&pG!yxA)H%)0LrQ+7tPDjmTpmk-;jFsEB-CBhrl5u@S?yB5UypY`|T3Ck|l=j$kF8 zUUUje8GniQ;`i8uf1t*Vghd{}tzk*Z@BBE-L?8C8TL}0U>W0<6$VS|ZI!@v~yoh>n zq)ucS+wnO5f@dixd7sF7#?g8aLdnyp3B9~H?!zY;pR7-cRP*C16M8|2Q@ZgXEXQut zjC-&X-$LF0F=_%=@F~28deH{jqi#c8e*6m5&Q%<;E&jbHF1i-El4OCLS3K09rzRO!DJT?qXEug zH#+RaTFTypW4Hys!!sCbS?Ite)Tj9wAI64+NEhzLUHB1R#o|`FfWP5xeCd9XooJC) zPf9!KKEuSbIFI9~E!^3@kXS!z1s`BBUcwT*g16DaYp9*O-XX$wEJeH%uPI^F)^A3A zvKNr;QpBI`{COdphW=3yLX>G3GY8c93@~EA#X>+3X%@uCc)P;9cvO3S|j7!~2Idd$W z^UCa$onGid)?Q>Vo7w7Ddn*&ZJ)7BI_h`r;|Nlv!tF$8%yLlLr>o+SKK3(P0mBnn#7Y)s& z=WSk#r81_e(v(FjBN}y*I<@Nsj`F6ymhFxxIc=ADF#5>q;JJboYI{9;%JZ_OwJB;g z#X6U-?fqD@H)p!zXcb&ZSJe`I}{P%QUuxy(O)BJkhaa+?#kllyw8<+l0yNZ|(Dz54onT t+l$=lTd}iC-~3qnz7;N&`KP_yE9Y6Y#|28u)Bcf!n6~&mW@G1T{{mZEhMNEY delta 1796 zcmb7@UufG^6vt1jcEfF5H#@qnZT9P${!i1{&IujpHk~L_#EP@v&>_O6>s}nPPNnG@ zX{mIn?v@k=Lx&SVETsK4X__XjKBx~)sdn?kHRC^Z@`z}XYd!;+(i>`8_v2v z22aBqkf}$d|6Y+N**FKU!!MyqY0zCe^PzU|J=_ANrzmX&+>C_va4XyG%!hj{y^!%r zALKsEIj9A{3vrin9`z%fJTHDl`IdXOuDD^lY-jC~P1&4_`JtM#fogW6pV)R;ZNhpK2syPeglsad;;`{#oT0W;LO(LdzX2JWQ7G5@_>K5<^8~2i|S)08(U3NThDru z(CNC847P>KGIr5?*fzaMFQlp+cT?tx_RCCW=Vp72%CaP5@WgL14ITHdJ0CO9@r;hg z*pBA%LZ=C{A^h!nwcKVr{%SZFFri3~c`@=_siRLLCXn`@>KYFGpFqFuJsRj@Jpa8I ud@<|lU~}e$?g8$g|8@8FKxl#K>%bFyyvbWPJ|cFZ#Z55=uB8d=8~g_`nA8ja From 9c7490a24732af2f7b02c0d6ac5f22a139f5f6c9 Mon Sep 17 00:00:00 2001 From: wheaney <42350981+wheaney@users.noreply.github.com> Date: Tue, 20 Aug 2024 15:10:09 -0700 Subject: [PATCH 17/30] Pull in driver with non-root systemd setup Bump to v0.11.0 --- modules/XRLinuxDriver | 2 +- ui/meson.build | 2 +- ui/src/main.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/XRLinuxDriver b/modules/XRLinuxDriver index 2e07ebe..22cc32e 160000 --- a/modules/XRLinuxDriver +++ b/modules/XRLinuxDriver @@ -1 +1 @@ -Subproject commit 2e07ebe241afc9582065f974e19f3d0d6dec5c0c +Subproject commit 22cc32e41f440653eb718a3cf579d609918527b3 diff --git a/ui/meson.build b/ui/meson.build index e0beda9..c4bd796 100644 --- a/ui/meson.build +++ b/ui/meson.build @@ -1,5 +1,5 @@ project('breezydesktop', - version: '0.1.1', + version: '0.11.0', meson_version: '>= 0.62.0', default_options: [ 'warning_level=2', 'werror=false', ], ) diff --git a/ui/src/main.py b/ui/src/main.py index 08c8890..dccac4f 100644 --- a/ui/src/main.py +++ b/ui/src/main.py @@ -106,7 +106,7 @@ class BreezydesktopApplication(Adw.Application): modal=True, program_name='Breezy Desktop', logo_icon_name='com.xronlinux.BreezyDesktop', - version='0.1.1', + version='0.11.0', authors=['Wayne Heaney'], copyright='© 2024 Wayne Heaney') about.present() From 1825e0dadbdae8bb86c9828d96b5f33f91d8d01c Mon Sep 17 00:00:00 2001 From: Wayne Heaney <42350981+wheaney@users.noreply.github.com> Date: Tue, 20 Aug 2024 16:04:04 -0700 Subject: [PATCH 18/30] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d9b754d..7c42f00 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ This repo contains a collection of tools to enable virtual desktop environments for gaming and productivity on Linux using [supported XR glasses](https://github.com/wheaney/XRLinuxDriver#supported-devices). -There are two installations at the moment. **Note: Only install one of these at a time, as they invalidate each other's installations. This is only temporary.** +There are two installations at the moment. **Note: Don't manually install either of these if you're running the Decky plugin on the same machine, as they invalidate each other's installations. This is only temporary.** * [Breezy GNOME](#breezy-gnome) for desktop support, primarily in GNOME Linux desktop environments * [Breezy Vulkan](#breezy-vulkan) primarily for gaming but would work with pretty much any application that uses Vulkan rendering. From 0bc93c6e9ebed5faff190a445505a8cc45d7ff83 Mon Sep 17 00:00:00 2001 From: wheaney <42350981+wheaney@users.noreply.github.com> Date: Wed, 21 Aug 2024 08:07:13 -0700 Subject: [PATCH 19/30] Pull in driver with latest Rokid integration --- modules/XRLinuxDriver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/XRLinuxDriver b/modules/XRLinuxDriver index 22cc32e..000d215 160000 --- a/modules/XRLinuxDriver +++ b/modules/XRLinuxDriver @@ -1 +1 @@ -Subproject commit 22cc32e41f440653eb718a3cf579d609918527b3 +Subproject commit 000d215dfc74f51794a910f8caae8b43393e1397 From 8a0ee28dfb123c809c7b915c4d0ece18436edea2 Mon Sep 17 00:00:00 2001 From: wheaney <42350981+wheaney@users.noreply.github.com> Date: Wed, 21 Aug 2024 11:46:17 -0700 Subject: [PATCH 20/30] Pull in driver curl timeouts --- modules/XRLinuxDriver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/XRLinuxDriver b/modules/XRLinuxDriver index 000d215..f97f9bf 160000 --- a/modules/XRLinuxDriver +++ b/modules/XRLinuxDriver @@ -1 +1 @@ -Subproject commit 000d215dfc74f51794a910f8caae8b43393e1397 +Subproject commit f97f9bf0c2aa06d88024b54957e157423b3d223f From bd0012db335007b1b846ddb004ed3144b95f07ab Mon Sep 17 00:00:00 2001 From: wheaney <42350981+wheaney@users.noreply.github.com> Date: Wed, 21 Aug 2024 12:06:46 -0700 Subject: [PATCH 21/30] Pull in driver fix for modprobe setup --- modules/XRLinuxDriver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/XRLinuxDriver b/modules/XRLinuxDriver index f97f9bf..06d6969 160000 --- a/modules/XRLinuxDriver +++ b/modules/XRLinuxDriver @@ -1 +1 @@ -Subproject commit f97f9bf0c2aa06d88024b54957e157423b3d223f +Subproject commit 06d6969ee79f0dff3305c20ee206ab6303701c95 From df26de47d5b19a4232098331ac90f04ef1e0867d Mon Sep 17 00:00:00 2001 From: wheaney <42350981+wheaney@users.noreply.github.com> Date: Mon, 19 Aug 2024 09:51:37 -0700 Subject: [PATCH 22/30] LLM-generated pt_BR translations --- ui/po/LINGUAS | 2 +- ui/po/pt_BR.po | 478 +++++++++++++++++++++++ ui/po/pt_BR/LC_MESSAGES/breezydesktop.mo | Bin 0 -> 8704 bytes 3 files changed, 479 insertions(+), 1 deletion(-) create mode 100644 ui/po/pt_BR.po create mode 100644 ui/po/pt_BR/LC_MESSAGES/breezydesktop.mo diff --git a/ui/po/LINGUAS b/ui/po/LINGUAS index 67b7f56..25b3c08 100644 --- a/ui/po/LINGUAS +++ b/ui/po/LINGUAS @@ -1 +1 @@ -de es fr it ja pl ru sv zh_CN \ No newline at end of file +de es fr it ja pl pt_BR ru sv uk_UA zh_CN diff --git a/ui/po/pt_BR.po b/ui/po/pt_BR.po new file mode 100644 index 0000000..66230b6 --- /dev/null +++ b/ui/po/pt_BR.po @@ -0,0 +1,478 @@ +# Portuguese translations for PACKAGE package. +# Copyright (C) 2024 THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# , 2024. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-08-19 09:50-0700\n" +"PO-Revision-Date: 2024-08-19 09:39-0700\n" +"Last-Translator: \n" +"Language-Team: Brazilian Portuguese \n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#: src/connecteddevice.py:16 +msgid "" +"Switches your glasses into side-by-side mode and doubles the width of the " +"display." +msgstr "" +"Altera o modo dos óculos para lado a lado e dobra a largura da exibição." + +#: src/connecteddevice.py:17 +msgid "This feature is not currently supported for your device." +msgstr "Este recurso não é atualmente suportado para o seu dispositivo." + +#: src/licensedialog.py:49 +msgid "Paid Tier Status" +msgstr "Status do Nível Pago" + +#: src/licensedialog.py:57 +msgid "Feature Availability" +msgstr "Disponibilidade de Recursos" + +#: src/licensefeaturerow.py:15 src/shortcutdialog.py:107 +msgid "Disabled" +msgstr "Desativado" + +#: src/licensefeaturerow.py:18 +msgid "In trial" +msgstr "Em teste" + +#: src/licensefeaturerow.py:18 +msgid "Enabled" +msgstr "Habilitado" + +#: src/licensefeaturerow.py:24 src/licensetierrow.py:30 +#, python-brace-format +msgid " ({time_remaining} remaining)" +msgstr " ({time_remaining} restantes)" + +#: src/licensefeaturerow.py:32 +msgid "Side-by-side mode (gaming)" +msgstr "Modo lado a lado (jogando)" + +#: src/licensefeaturerow.py:33 +msgid "Smooth Follow (gaming)" +msgstr "Seguir Suave (jogando)" + +#: src/licensefeaturerow.py:34 +msgid "Breezy Desktop (productivity)" +msgstr "Breezy Desktop (produtividade)" + +#: src/licensetierrow.py:24 +msgid "Active" +msgstr "Ativo" + +#: src/licensetierrow.py:24 +msgid "Inactive" +msgstr "Inativo" + +#: src/licensetierrow.py:41 +#, fuzzy, python-brace-format +msgid "${amount} USD" +msgstr "${amount} USD" + +#: src/licensetierrow.py:43 +msgid " to renew" +msgstr " para renovar" + +#: src/licensetierrow.py:45 +msgid " to upgrade" +msgstr " para atualizar" + +#: src/licensetierrow.py:47 +msgid "Paid through next renewal period" +msgstr "Pago até o próximo período de renovação" + +#: src/licensetierrow.py:56 +msgid "Gaming" +msgstr "Jogando" + +#: src/licensetierrow.py:57 +msgid "Productivity" +msgstr "Produtividade" + +#: src/licensetierrow.py:63 +msgid " - renewing monthly" +msgstr " - renovando mensalmente" + +#: src/licensetierrow.py:64 +msgid " - renewing yearly" +msgstr " - renovando anualmente" + +#: src/licensetierrow.py:65 +msgid "with lifetime access" +msgstr "com acesso vitalício" + +#: src/licensetierrow.py:72 +msgid "Monthly" +msgstr "Mensal" + +#: src/licensetierrow.py:73 +msgid "Yearly" +msgstr "Anual" + +#: src/licensetierrow.py:74 +msgid "Lifetime" +msgstr "Vitalício" + +#: src/time.py:14 +msgid "less than an hour" +msgstr "menos de uma hora" + +#: src/time.py:17 +msgid "1 hour" +msgstr "1 hora" + +#: src/time.py:17 +#, python-brace-format +msgid "{time_remaining} hours" +msgstr "{time_remaining} horas" + +#: src/time.py:20 +msgid "1 day" +msgstr "1 dia" + +#: src/time.py:20 +#, python-brace-format +msgid "{time_remaining} days" +msgstr "{time_remaining} dias" + +#: src/gtk/connected-device.ui:21 +msgid "connected" +msgstr "conectado" + +#: src/gtk/connected-device.ui:31 +msgid "General Settings" +msgstr "Configurações Gerais" + +#: src/gtk/connected-device.ui:41 +msgid "Features" +msgstr "Recursos" + +#: src/gtk/connected-device.ui:44 +msgid "XR effect" +msgstr "Efeito XR" + +#: src/gtk/connected-device.ui:45 +msgid "Enables the Breezy Desktop XR effect." +msgstr "Habilita o efeito XR do Breezy Desktop." + +#: src/gtk/connected-device.ui:55 +msgid "Widescreen mode" +msgstr "Modo de tela larga" + +#: src/gtk/connected-device.ui:66 +msgid "Follow mode" +msgstr "Modo de acompanhamento" + +#: src/gtk/connected-device.ui:67 +msgid "Keep the virtual display near the center of your view." +msgstr "Mantenha a exibição virtual perto do centro da sua visão." + +#: src/gtk/connected-device.ui:77 +msgid "Curved display" +msgstr "Exibição curvada" + +#: src/gtk/connected-device.ui:78 +msgid "Switch between flat and curved displays." +msgstr "Alterne entre exibições planas e curvas." + +#: src/gtk/connected-device.ui:91 +msgid "Adjustments" +msgstr "Ajustes" + +#: src/gtk/connected-device.ui:94 +msgid "Display distance" +msgstr "Distância da exibição" + +#: src/gtk/connected-device.ui:95 +msgid "" +"Closer appears larger, further appears smaller. Controls depth when in " +"widescreen mode." +msgstr "" +"Mais perto parece maior, mais longe parece menor. Controla a profundidade " +"quando no modo de tela larga." + +#: src/gtk/connected-device.ui:123 +msgid "Display size" +msgstr "Tamanho da exibição" + +#: src/gtk/connected-device.ui:124 +msgid "" +"Combine with display distance to achieve a comfortable level of depth and " +"size." +msgstr "" +"Combine com a distância da exibição para alcançar um nível confortável de " +"profundidade e tamanho." + +#: src/gtk/connected-device.ui:152 +msgid "Display toggle distances" +msgstr "Distâncias de alternância da exibição" + +#: src/gtk/connected-device.ui:153 +msgid "" +"Use the buttons to capture the current display distance for use with the " +"keyboard shortcut." +msgstr "" +"Use os botões para capturar a distância atual da exibição para uso com o " +"atalho de teclado." + +#: src/gtk/connected-device.ui:178 +msgid "Follow threshold" +msgstr "Limiar de acompanhamento" + +#: src/gtk/connected-device.ui:179 +msgid "How far away you can look before the display follows." +msgstr "Quão longe você pode olhar antes que a exibição acompanhe." + +#: src/gtk/connected-device.ui:209 src/gtk/connected-device.ui:215 +msgid "Keyboard Shortcuts" +msgstr "Atalhos de teclado" + +#: src/gtk/connected-device.ui:218 +msgid "Re-center display shortcut" +msgstr "Atalho para recentrar a exibição" + +#: src/gtk/connected-device.ui:219 +msgid "Pin the virtual display to the current position." +msgstr "Fixe a exibição virtual na posição atual." + +#: src/gtk/connected-device.ui:238 src/gtk/connected-device.ui:267 +#: src/gtk/connected-device.ui:296 +msgid "Change" +msgstr "Mudar" + +#: src/gtk/connected-device.ui:247 +msgid "Display distance shortcut" +msgstr "Atalho de distância de exibição" + +#: src/gtk/connected-device.ui:248 +msgid "Quickly toggle between two predefined distances." +msgstr "Alterne rapidamente entre duas distâncias predefinidas." + +#: src/gtk/connected-device.ui:276 +msgid "Toggle follow mode shortcut" +msgstr "Atalho para alternar o modo de acompanhamento" + +#: src/gtk/connected-device.ui:277 +msgid "Quickly toggle follow mode." +msgstr "Alterne rapidamente o modo de acompanhamento." + +#: src/gtk/connected-device.ui:312 src/gtk/connected-device.ui:318 +msgid "Advanced Settings" +msgstr "Configurações Avançadas" + +#: src/gtk/connected-device.ui:321 +msgid "Find optimal display config" +msgstr "Encontre a configuração de exibição ideal" + +#: src/gtk/connected-device.ui:322 +msgid "" +"Automatically modify the glasses display configuration for maximum " +"resolution and best scaling when plugged in." +msgstr "" +"Modifique automaticamente a configuração de exibição dos óculos para máxima " +"resolução e melhor escalonamento quando conectado." + +#: src/gtk/connected-device.ui:332 +msgid "Use highest refresh rate" +msgstr "Use a taxa de atualização mais alta" + +#: src/gtk/connected-device.ui:333 +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 +msgid "Always primary display" +msgstr "Sempre exibição primária" + +#: src/gtk/connected-device.ui:344 +msgid "Automatically set the glasses as the primary display when plugged in." +msgstr "" +"Defina automaticamente os óculos como a exibição primária quando conectados." + +#: src/gtk/connected-device.ui:354 +msgid "Fast SBS mode switching" +msgstr "Alternância rápida de modo SBS" + +#: src/gtk/connected-device.ui:355 +msgid "" +"Switches glasses to SBS mode immediately when plugged in, if widescreen mode " +"is on. May cause instability." +msgstr "" +"Altera os óculos para o modo SBS imediatamente quando conectados, se o modo " +"de tela larga estiver ativado. Pode causar instabilidade." + +#: src/gtk/connected-device.ui:365 +msgid "Movement look-ahead" +msgstr "Antecipação de movimento" + +#: src/gtk/connected-device.ui:366 +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 "" +"Compensa o atraso de entrada prevendo a posição de rastreamento de cabeça " +"antes do tempo de renderização. Mantenha o padrão, a menos que a exibição " +"virtual fique para trás dos movimentos da cabeça, avance ou seja muito " +"instável." + +#: src/gtk/connected-device.ui:384 +msgid "Default" +msgstr "Padrão" + +#: src/gtk/failed-verification.ui:13 +msgid "Breezy Desktop GNOME invalid setup" +msgstr "Configuração inválida do Breezy Desktop GNOME" + +#: src/gtk/failed-verification.ui:14 +msgid "" +"Your Breezy GNOME setup is invalid or incomplete. Please re-run the setup " +"script. Report this issue if it persists." +msgstr "" +"Sua configuração do Breezy GNOME é inválida ou incompleta. Por favor, " +"execute novamente o script de configuração. Relate este problema se " +"persistir." + +#: src/gtk/license-dialog.ui:5 src/gtk/window.ui:55 +msgid "License Details" +msgstr "Detalhes da Licença" + +#: src/gtk/license-dialog.ui:27 +msgid "Donate" +msgstr "Doar" + +#: src/gtk/license-dialog.ui:44 +msgid "Request a token" +msgstr "Solicitar um token" + +#: src/gtk/license-dialog.ui:52 +msgid "Verify token" +msgstr "Verificar token" + +#: src/gtk/no-device.ui:13 +msgid "No device connected" +msgstr "Nenhum dispositivo conectado" + +#: src/gtk/no-device.ui:14 +msgid "Breezy Desktop was unable to detect any supported XR devices." +msgstr "" +"O Breezy Desktop não conseguiu detectar nenhum dispositivo XR suportado." + +#: src/gtk/no-driver.ui:13 +msgid "No driver running" +msgstr "Nenhum driver em execução" + +#: src/gtk/no-driver.ui:14 +#, fuzzy +msgid "" +"\n" +" If you installed via AUR, make sure you ran the recommended post-" +"install command:\n" +" systemctl --user enable --now xr-driver.service\n" +"\n" +" Otherwise, please file an issue on GitHub, or create a new thread " +"in the #troubleshooting channel on Discord.\n" +" " +msgstr "" +" Se você instalou via AUR, certifique-se de ter executado o comando de pós-" +"instalação recomendado:\n" +" systemctl --user enable --now xr-driver.service\n" +"\n" +" Caso contrário, por favor, crie um problema no GitHub ou um novo tópico no " +"canal #troubleshooting no Discord." + +#: src/gtk/no-extension.ui:13 +msgid "Breezy Desktop GNOME extension not ready" +msgstr "Extensão do Breezy Desktop GNOME não está pronta" + +#: src/gtk/no-extension.ui:14 +msgid "" +"If you have just run the setup, then you may need to log out and back in to " +"use it. Otherwise, please follow the Breezy GNOME setup instructions." +msgstr "" +"Se você acabou de executar a configuração, pode ser necessário fazer login e " +"logout novamente para usá-la. Caso contrário, siga as instruções de " +"configuração do Breezy GNOME." + +#: src/gtk/no-license.ui:13 +msgid "No license file was found" +msgstr "Nenhum arquivo de licença foi encontrado" + +#: src/gtk/no-license.ui:14 +#, fuzzy +msgid "" +"\n" +" The first time you use Breezy Desktop, an internet connection is " +"required to retrieve your device's license.\n" +" \n" +" Don't worry, there's no obligation to donate at this time. If you " +"haven't, you'll be given a trial license so you can decide if Breezy Desktop " +"fits your needs. \n" +" \n" +" Once you obtain a license, trial or otherwise, you can use Breezy " +"Desktop offline until features expire (or indefinitely, if you've chosen " +"lifetime access).\n" +" " +msgstr "" +" A primeira vez que você usar o Breezy Desktop, uma conexão com a internet " +"será necessária para obter a licença do seu dispositivo.\n" +" \n" +" Não se preocupe, não há nenhuma obrigação de doar neste momento. Se você " +"ainda não o fez, será fornecida uma licença de teste para que você possa " +"decidir se o Breezy Desktop atende às suas necessidades.\n" +" \n" +" Uma vez que você obtenha uma licença, de teste ou não, você poderá usar o " +"Breezy Desktop offline até que os recursos expirem (ou indefinidamente, se " +"você escolheu o acesso vitalício)." + +#: src/gtk/no-license.ui:27 +msgid "Try Again" +msgstr "Tentar Novamente" + +#: src/gtk/shortcut-dialog.ui:5 +msgid "Assign Keyboard Shortcut" +msgstr "Atribuir Atalho de Teclado" + +#: src/gtk/shortcut-dialog.ui:20 +msgid "Press your keyboard shortcut or 'Backspace' to disable..." +msgstr "Pressione seu atalho de teclado ou 'Backspace' para desativar..." + +#: src/gtk/window.ui:10 +msgid "Breezy Desktop" +msgstr "Breezy Desktop" + +#: src/gtk/window.ui:23 +msgid "Menu" +msgstr "Menu" + +#: src/gtk/window.ui:35 +msgid "Some features expire soon" +msgstr "Algumas funcionalidades expirarão em breve" + +#: src/gtk/window.ui:36 src/gtk/window.ui:43 +msgid "View details" +msgstr "Ver detalhes" + +#: src/gtk/window.ui:42 +msgid "Productivity features are disabled" +msgstr "As funcionalidades de produtividade estão desabilitadas" + +#: src/gtk/window.ui:59 +msgid "Force Reset" +msgstr "Redefinir forçado" + +#: src/gtk/window.ui:63 +msgid "About BreezyDesktop" +msgstr "Sobre o BreezyDesktop" diff --git a/ui/po/pt_BR/LC_MESSAGES/breezydesktop.mo b/ui/po/pt_BR/LC_MESSAGES/breezydesktop.mo new file mode 100644 index 0000000000000000000000000000000000000000..bed4ce061a9eebfafcd5fec7223e2b40e399c25d GIT binary patch literal 8704 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 literal 0 HcmV?d00001 From 36e849ca313286ebb84bafa6997567b185ad70a6 Mon Sep 17 00:00:00 2001 From: vnmarcel <65928380+vnmarcel@users.noreply.github.com> Date: Tue, 20 Aug 2024 08:15:27 -0300 Subject: [PATCH 23/30] Update pt_BR.po The automatic translation was already quite good in my opinion. I just made some adjustments to try to make clearer to native readers. --- ui/po/pt_BR.po | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/ui/po/pt_BR.po b/ui/po/pt_BR.po index 66230b6..09b1694 100644 --- a/ui/po/pt_BR.po +++ b/ui/po/pt_BR.po @@ -56,11 +56,11 @@ msgstr " ({time_remaining} restantes)" #: src/licensefeaturerow.py:32 msgid "Side-by-side mode (gaming)" -msgstr "Modo lado a lado (jogando)" +msgstr "Modo lado a lado (Jogos)" #: src/licensefeaturerow.py:33 msgid "Smooth Follow (gaming)" -msgstr "Seguir Suave (jogando)" +msgstr "Seguir Suave (Jogos)" #: src/licensefeaturerow.py:34 msgid "Breezy Desktop (productivity)" @@ -93,7 +93,7 @@ msgstr "Pago até o próximo período de renovação" #: src/licensetierrow.py:56 msgid "Gaming" -msgstr "Jogando" +msgstr "Jogos" #: src/licensetierrow.py:57 msgid "Productivity" @@ -215,7 +215,7 @@ msgstr "" #: src/gtk/connected-device.ui:152 msgid "Display toggle distances" -msgstr "Distâncias de alternância da exibição" +msgstr "Alternância entre distâncias de exibição" #: src/gtk/connected-device.ui:153 msgid "" @@ -227,11 +227,11 @@ msgstr "" #: src/gtk/connected-device.ui:178 msgid "Follow threshold" -msgstr "Limiar de acompanhamento" +msgstr "Sensibilidade de acompanhamento" #: src/gtk/connected-device.ui:179 msgid "How far away you can look before the display follows." -msgstr "Quão longe você pode olhar antes que a exibição acompanhe." +msgstr "Quanto você pode mover a cabeça antes que a exibição acompanhe." #: src/gtk/connected-device.ui:209 src/gtk/connected-device.ui:215 msgid "Keyboard Shortcuts" @@ -280,7 +280,7 @@ msgid "" "resolution and best scaling when plugged in." msgstr "" "Modifique automaticamente a configuração de exibição dos óculos para máxima " -"resolução e melhor escalonamento quando conectado." +"resolução e melhor dimensionamento quando conectado." #: src/gtk/connected-device.ui:332 msgid "Use highest refresh rate" @@ -294,12 +294,12 @@ msgstr "" #: src/gtk/connected-device.ui:343 msgid "Always primary display" -msgstr "Sempre exibição primária" +msgstr "Sempre vídeo principal" #: src/gtk/connected-device.ui:344 msgid "Automatically set the glasses as the primary display when plugged in." msgstr "" -"Defina automaticamente os óculos como a exibição primária quando conectados." +"Defina automaticamente os óculos como vídeo principal quando conectados." #: src/gtk/connected-device.ui:354 msgid "Fast SBS mode switching" @@ -325,8 +325,7 @@ msgid "" msgstr "" "Compensa o atraso de entrada prevendo a posição de rastreamento de cabeça " "antes do tempo de renderização. Mantenha o padrão, a menos que a exibição " -"virtual fique para trás dos movimentos da cabeça, avance ou seja muito " -"instável." +"virtual tenha atrasos, avance ou seja muito instável em relação aos movimentos da cabeça " #: src/gtk/connected-device.ui:384 msgid "Default" @@ -471,7 +470,7 @@ msgstr "As funcionalidades de produtividade estão desabilitadas" #: src/gtk/window.ui:59 msgid "Force Reset" -msgstr "Redefinir forçado" +msgstr "Forçar redefinição" #: src/gtk/window.ui:63 msgid "About BreezyDesktop" From 3c9e96a02f74ca276a922b60c5ad04f0a9cb2f36 Mon Sep 17 00:00:00 2001 From: wheaney <42350981+wheaney@users.noreply.github.com> Date: Wed, 21 Aug 2024 21:19:25 -0700 Subject: [PATCH 24/30] Update pt_BR.mo for latest translations --- ui/po/pt_BR/LC_MESSAGES/breezydesktop.mo | Bin 8704 -> 8718 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/ui/po/pt_BR/LC_MESSAGES/breezydesktop.mo b/ui/po/pt_BR/LC_MESSAGES/breezydesktop.mo index bed4ce061a9eebfafcd5fec7223e2b40e399c25d..d9fb231069a06f7b687be9c2782e1b73c020403c 100644 GIT binary patch delta 973 zcmZY6OGs2v9LMp$uY8b>h1xik9SiYQ5VQ#@@P(2>5C*vj;yCv>UYeOZ-8(ZFLANNR zMYx$wL{Q{H3ZiHTY*)=nB-})+41y3^N((Vs^gW}{BAB_KbI&>RKfm*z+an7juP;@F z2Sg;&DiXtPypKaTj;q*&ZEYeQ*oCKX1W)1|p2z1{gTF9=+q-ItZ}Yx_`>_-isl_kY zfZw7L3S;@n<0w|Pi*TlN;c+~J)i{gx2Py2vIaK%*58?-`!*x7?8%PFe;Z{emA8p+U zv_Uo6^+YTb8D?;ciDmqVw$M$g+NAgJEIvScgB5JSuV@2pq7C>5_h7}Lole#vA34T@ zB^kh8yn;5!JlYFB4jI_QD>#5#*odbO^Tp9!L$v#r(ROMBr?8&?#Ri*3nkYH60T-|z z7qJi5a2|i-1m2-7gBX5dU<*f-NHdF z{|fivJG3`m-Ss=#)^A~jNO7%ZEYh4Wy>yJHGQOLRyBVD<^tIltb=;Im2X5g_>(GB2 ziVbboDjTyVJ*$<@`a1A}!jq`#Q6{B)lhmc9(xRud7pRn%w{@}%9j)Se+LV^GD!h;0 z=p0ODjh`+(<4mpC;v40-L3U???WSu84!M(Mbh%4kk5mz7b^r=riX zj+t@OZuw{#_Yz(p!(MvEP2_x==dB6UnDMn6$i gQN@R`^{QC8T(3-;M9%fqWKQRe>M2ha3mvJdza)dh_y7O^ delta 948 zcmZwEPe>GD7{~EvHSG`8W~i-J+gp*PrUi8n8_s|aT0$1Tj?7%NbFA`-co8N-A zfn#VJ7(n~{LUU2%D8&d1&v6oMkRjD>^zjIep$(YAdVGVnq0eX={DrkRk3`4T6LHaMb0HsC(ogUl-Z7DNSa8yqFTIKz)9H^uhsH`_?vW}alOlpX|BPRh8(S1HdY zHt9*Pm)0(x^xTw57kte)&zwN@IKDQ4oGsYlGM<}u)ToyTAFG_lsa|GS`<466KdR%G ZmjYU4&`B3a9xUilN9|c&u9V~1>VHRTy9EFM From 10a951fb509b23e8c7f0cf91b232aacee566b60a Mon Sep 17 00:00:00 2001 From: wheaney <42350981+wheaney@users.noreply.github.com> Date: Thu, 22 Aug 2024 09:27:27 -0700 Subject: [PATCH 25/30] Pull in driver with updated udev rules --- modules/XRLinuxDriver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/XRLinuxDriver b/modules/XRLinuxDriver index 06d6969..36db133 160000 --- a/modules/XRLinuxDriver +++ b/modules/XRLinuxDriver @@ -1 +1 @@ -Subproject commit 06d6969ee79f0dff3305c20ee206ab6303701c95 +Subproject commit 36db133a93e63fc4356902792fc5dfea1f18fb13 From 57ced2168a0e203468ada3d99050acadd133e436 Mon Sep 17 00:00:00 2001 From: wheaney <42350981+wheaney@users.noreply.github.com> Date: Thu, 29 Aug 2024 20:55:13 -0700 Subject: [PATCH 26/30] Fix issues with setup and uninstall scripts from the move to XDG files --- vulkan/bin/breezy_vulkan_uninstall | 31 ++---------------------------- vulkan/bin/setup | 4 ++++ 2 files changed, 6 insertions(+), 29 deletions(-) diff --git a/vulkan/bin/breezy_vulkan_uninstall b/vulkan/bin/breezy_vulkan_uninstall index 2871771..adc84a7 100755 --- a/vulkan/bin/breezy_vulkan_uninstall +++ b/vulkan/bin/breezy_vulkan_uninstall @@ -24,47 +24,20 @@ USER_HOME=$(getent passwd $USER | cut -d: -f6) if [ -z "$XDG_DATA_HOME" ]; then XDG_DATA_HOME="$USER_HOME/.local/share" fi -DATA_DIR="$XDG_DATA_HOME/breezy_vulkan" -if [ ! -d "$DATA_DIR" ]; then - mkdir -p $DATA_DIR -fi VULKAN_DATA_DIR="$XDG_DATA_HOME/vulkan" -XR_DRIVER_DATA_DIR="$XDG_DATA_HOME/breezy_vulkan" if [ -z "$XDG_CONFIG_HOME" ]; then XDG_CONFIG_HOME="$USER_HOME/.config" fi -CONFIG_DIR="$XDG_CONFIG_HOME/breezy_vulkan" -if [ ! -d "$CONFIG_DIR" ]; then - mkdir -p $CONFIG_DIR -fi if [ -z "$XDG_BIN_HOME" ]; then XDG_BIN_HOME="$USER_HOME/.local/bin" fi OLD_BIN_DIR="$USER_HOME/bin" BIN_DIR="$XDG_BIN_HOME" -if [ ! -d "$BIN_DIR" ]; then - mkdir -p $BIN_DIR -fi - -if [ -z "$XDG_STATE_HOME" ]; then - XDG_STATE_HOME="$USER_HOME/.local/state" -fi -STATE_DIR="$XDG_STATE_HOME/breezy_vulkan" -if [ ! -d "$STATE_DIR" ]; then - mkdir -p $STATE_DIR -fi LIB_DIR="$USER_HOME/.local/lib" -if [ ! -d "$LIB_DIR" ]; then - mkdir -p "$LIB_DIR" -fi - LIB32_DIR="$USER_HOME/.local/lib32" -if [ ! -d "$LIB32_DIR" ]; then - mkdir -p "$LIB32_DIR" -fi if [ "$for_install" -eq 0 ]; then UA_EVENT_NAME="breezy_uninstall" @@ -81,8 +54,8 @@ rm $VULKAN_DATA_DIR/implicit_layer.d/vkBasalt.json rm $VULKAN_DATA_DIR/implicit_layer.d/vkBasalt.x86.json [ "$for_install" -eq 0 ] && echo "Removing vkBasalt and reshade directories at $CONFIG_DIR/" -rm -rf $CONFIG_DIR/vkBasalt -rm -rf $CONFIG_DIR/reshade +rm -rf $XDG_CONFIG_HOME/vkBasalt +rm -rf $XDG_CONFIG_HOME/reshade [ "$for_install" -eq 0 ] && echo "Removing scripts at $BIN_DIR" rm -f $BIN_DIR/breezy_vulkan_verify diff --git a/vulkan/bin/setup b/vulkan/bin/setup index ab5bac4..116c03f 100755 --- a/vulkan/bin/setup +++ b/vulkan/bin/setup @@ -99,6 +99,9 @@ cp bin/breezy_vulkan_verify $BIN_DIR cp manifest $DATA_DIR # keep putting this in the old location in case an older version of the script tries to find it +if [ ! -d "$OLD_BIN_DIR" ]; then + mkdir -p $OLD_BIN_DIR +fi cp bin/breezy_vulkan_uninstall $OLD_BIN_DIR echo "Installing vkBasalt; copying binaries, configs, and shader files" @@ -137,6 +140,7 @@ chown -R $USER:$GROUP $RESHADE_CONFIG_DIR chown -R $USER:$GROUP $VKBASALT_CONFIG_DIR chown -R $USER:$GROUP $STATE_DIR chown -R $USER:$GROUP $BIN_DIR/breezy_vulkan_* +chown -R $USER:$GROUP $OLD_BIN_DIR # clear bash's cache of executable locations, so it can find the newly installed scripts hash -r From bd91e49a707261dce581225d25c1c64fa090d116 Mon Sep 17 00:00:00 2001 From: wheaney <42350981+wheaney@users.noreply.github.com> Date: Fri, 6 Sep 2024 10:31:45 -0700 Subject: [PATCH 27/30] Pull in driver with improved Rokid integration --- modules/XRLinuxDriver | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/XRLinuxDriver b/modules/XRLinuxDriver index 36db133..920ef89 160000 --- a/modules/XRLinuxDriver +++ b/modules/XRLinuxDriver @@ -1 +1 @@ -Subproject commit 36db133a93e63fc4356902792fc5dfea1f18fb13 +Subproject commit 920ef8967d328e80d9c5020a798f0f7afad97903 From 0af7dde11834f54155b31d0753980bdcc83c74aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Cruz=20Mendes?= Date: Fri, 6 Sep 2024 14:31:04 -0300 Subject: [PATCH 28/30] Refactor (i18n): improve Brazilian Portuguese translations for better clarity (#52) * refactor(i18n): improve Brazilian Portuguese translations for better clarity * refactor(i18n): Brazilian Portuguese translations revised with `vnmarcel` --- ui/po/pt_BR.po | 68 +++++++++++++++++++++++++------------------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/ui/po/pt_BR.po b/ui/po/pt_BR.po index 09b1694..543d965 100644 --- a/ui/po/pt_BR.po +++ b/ui/po/pt_BR.po @@ -23,7 +23,7 @@ msgid "" "Switches your glasses into side-by-side mode and doubles the width of the " "display." msgstr "" -"Altera o modo dos óculos para lado a lado e dobra a largura da exibição." +"Altera o modo dos óculos para lado a lado (SBS) e dobra a largura da tela (ultrawide)." #: src/connecteddevice.py:17 msgid "This feature is not currently supported for your device." @@ -39,7 +39,7 @@ msgstr "Disponibilidade de Recursos" #: src/licensefeaturerow.py:15 src/shortcutdialog.py:107 msgid "Disabled" -msgstr "Desativado" +msgstr "Desabilitado" #: src/licensefeaturerow.py:18 msgid "In trial" @@ -60,7 +60,7 @@ msgstr "Modo lado a lado (Jogos)" #: src/licensefeaturerow.py:33 msgid "Smooth Follow (gaming)" -msgstr "Seguir Suave (Jogos)" +msgstr "Acompanhar Suavemente (Jogos)" #: src/licensefeaturerow.py:34 msgid "Breezy Desktop (productivity)" @@ -167,7 +167,7 @@ msgstr "Habilita o efeito XR do Breezy Desktop." #: src/gtk/connected-device.ui:55 msgid "Widescreen mode" -msgstr "Modo de tela larga" +msgstr "Modo Ultrawide" #: src/gtk/connected-device.ui:66 msgid "Follow mode" @@ -175,15 +175,15 @@ msgstr "Modo de acompanhamento" #: src/gtk/connected-device.ui:67 msgid "Keep the virtual display near the center of your view." -msgstr "Mantenha a exibição virtual perto do centro da sua visão." +msgstr "Mantenha a tela virtual próxima ao centro da sua visão." #: src/gtk/connected-device.ui:77 msgid "Curved display" -msgstr "Exibição curvada" +msgstr "Tela curva" #: src/gtk/connected-device.ui:78 msgid "Switch between flat and curved displays." -msgstr "Alterne entre exibições planas e curvas." +msgstr "Alterne entre tela plana e tela curva." #: src/gtk/connected-device.ui:91 msgid "Adjustments" @@ -191,7 +191,7 @@ msgstr "Ajustes" #: src/gtk/connected-device.ui:94 msgid "Display distance" -msgstr "Distância da exibição" +msgstr "Distância da tela" #: src/gtk/connected-device.ui:95 msgid "" @@ -199,39 +199,39 @@ msgid "" "widescreen mode." msgstr "" "Mais perto parece maior, mais longe parece menor. Controla a profundidade " -"quando no modo de tela larga." +"no modo ultrawide." #: src/gtk/connected-device.ui:123 msgid "Display size" -msgstr "Tamanho da exibição" +msgstr "Tamanho da tela" #: src/gtk/connected-device.ui:124 msgid "" "Combine with display distance to achieve a comfortable level of depth and " "size." msgstr "" -"Combine com a distância da exibição para alcançar um nível confortável de " +"Combine com a distância da tela para alcançar um nível confortável de " "profundidade e tamanho." #: src/gtk/connected-device.ui:152 msgid "Display toggle distances" -msgstr "Alternância entre distâncias de exibição" +msgstr "Alternância das distâncias de tela" #: src/gtk/connected-device.ui:153 msgid "" "Use the buttons to capture the current display distance for use with the " "keyboard shortcut." msgstr "" -"Use os botões para capturar a distância atual da exibição para uso com o " +"Use os botões para obter a distância atual da tela para depois usar com o " "atalho de teclado." #: src/gtk/connected-device.ui:178 msgid "Follow threshold" -msgstr "Sensibilidade de acompanhamento" +msgstr "Sensibilidade do modo de acompanhamento" #: src/gtk/connected-device.ui:179 msgid "How far away you can look before the display follows." -msgstr "Quanto você pode mover a cabeça antes que a exibição acompanhe." +msgstr "Quanto você pode mover a cabeça antes que a tela te acompanhe." #: src/gtk/connected-device.ui:209 src/gtk/connected-device.ui:215 msgid "Keyboard Shortcuts" @@ -239,24 +239,24 @@ msgstr "Atalhos de teclado" #: src/gtk/connected-device.ui:218 msgid "Re-center display shortcut" -msgstr "Atalho para recentrar a exibição" +msgstr "Atalho para recentralizar a tela" #: src/gtk/connected-device.ui:219 msgid "Pin the virtual display to the current position." -msgstr "Fixe a exibição virtual na posição atual." +msgstr "Traga a tela virtual para onde você está olhando." #: src/gtk/connected-device.ui:238 src/gtk/connected-device.ui:267 #: src/gtk/connected-device.ui:296 msgid "Change" -msgstr "Mudar" +msgstr "Alterar" #: src/gtk/connected-device.ui:247 msgid "Display distance shortcut" -msgstr "Atalho de distância de exibição" +msgstr "Atalho de distância da tela" #: src/gtk/connected-device.ui:248 msgid "Quickly toggle between two predefined distances." -msgstr "Alterne rapidamente entre duas distâncias predefinidas." +msgstr "Alterne rapidamente entre as duas distâncias predefinidas." #: src/gtk/connected-device.ui:276 msgid "Toggle follow mode shortcut" @@ -272,7 +272,7 @@ msgstr "Configurações Avançadas" #: src/gtk/connected-device.ui:321 msgid "Find optimal display config" -msgstr "Encontre a configuração de exibição ideal" +msgstr "Encontre a configuração de tela ideal" #: src/gtk/connected-device.ui:322 msgid "" @@ -294,16 +294,16 @@ msgstr "" #: src/gtk/connected-device.ui:343 msgid "Always primary display" -msgstr "Sempre vídeo principal" +msgstr "Sempre tela principal" #: src/gtk/connected-device.ui:344 msgid "Automatically set the glasses as the primary display when plugged in." msgstr "" -"Defina automaticamente os óculos como vídeo principal quando conectados." +"Defina automaticamente os óculos como a tela primária quando conectados." #: src/gtk/connected-device.ui:354 msgid "Fast SBS mode switching" -msgstr "Alternância rápida de modo SBS" +msgstr "Alternância rápida do modo SBS" #: src/gtk/connected-device.ui:355 msgid "" @@ -311,7 +311,7 @@ msgid "" "is on. May cause instability." msgstr "" "Altera os óculos para o modo SBS imediatamente quando conectados, se o modo " -"de tela larga estiver ativado. Pode causar instabilidade." +"ultrawide estiver ativado. Pode causar instabilidade." #: src/gtk/connected-device.ui:365 msgid "Movement look-ahead" @@ -387,9 +387,9 @@ msgid "" msgstr "" " Se você instalou via AUR, certifique-se de ter executado o comando de pós-" "instalação recomendado:\n" -" systemctl --user enable --now xr-driver.service\n" +" systemctl --user enable --now xr-driver.service\n" "\n" -" Caso contrário, por favor, crie um problema no GitHub ou um novo tópico no " +" Caso contrário, por favor, crie uma issue no GitHub ou um novo tópico no " "canal #troubleshooting no Discord." #: src/gtk/no-extension.ui:13 @@ -401,8 +401,8 @@ msgid "" "If you have just run the setup, then you may need to log out and back in to " "use it. Otherwise, please follow the Breezy GNOME setup instructions." msgstr "" -"Se você acabou de executar a configuração, pode ser necessário fazer login e " -"logout novamente para usá-la. Caso contrário, siga as instruções de " +"Se você acabou de executar a configuração, pode ser necessário fazer logout e " +"login novamente para usá-la. Caso contrário, siga as instruções de " "configuração do Breezy GNOME." #: src/gtk/no-license.ui:13 @@ -425,14 +425,14 @@ msgid "" "lifetime access).\n" " " msgstr "" -" A primeira vez que você usar o Breezy Desktop, uma conexão com a internet " +" A primeira vez que você usar o Breezy Desktop, uma conexão com a internet " "será necessária para obter a licença do seu dispositivo.\n" -" \n" -" Não se preocupe, não há nenhuma obrigação de doar neste momento. Se você " +" \n" +" Não se preocupe, não há nenhuma obrigação de doar neste momento. Se você " "ainda não o fez, será fornecida uma licença de teste para que você possa " "decidir se o Breezy Desktop atende às suas necessidades.\n" -" \n" -" Uma vez que você obtenha uma licença, de teste ou não, você poderá usar o " +" \n" +" Uma vez que você obtenha uma licença, de teste ou não, você poderá usar o " "Breezy Desktop offline até que os recursos expirem (ou indefinidamente, se " "você escolheu o acesso vitalício)." From 88ff0af4a9ee3e125d616f517efdc9b787b38908 Mon Sep 17 00:00:00 2001 From: wheaney <42350981+wheaney@users.noreply.github.com> Date: Fri, 6 Sep 2024 10:34:21 -0700 Subject: [PATCH 29/30] Update pt_BR mo file based on latest translations --- ui/po/pt_BR/LC_MESSAGES/breezydesktop.mo | Bin 8718 -> 8680 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/ui/po/pt_BR/LC_MESSAGES/breezydesktop.mo b/ui/po/pt_BR/LC_MESSAGES/breezydesktop.mo index d9fb231069a06f7b687be9c2782e1b73c020403c..1794ccbd1e824116ffa5d6394aaf108df7c2d3bf 100644 GIT binary patch delta 1167 zcmYMyPiRy}9Ki9}{Ao<1jY^XJlg(zt`X{7;VhbwfU^EbvN@BBWkfNQqfnW>0NP8=I3J6x(TfeirNnzQ~Z|2R+`~80N zE=<1JdpFx&?H5Ay@|VI*coui#etdx+Vc&od8Qh4U;U4@HE4UADVHdu|ukc?~csNds z5AZ|0muRkgjH?+xO^B*kPw*=fY5WU&u`MaY$G9Fla68%q#&HWyp+t>?cnMeGo!0aF zNDktU*7zM#i%3&tCvHRgd`GHEwFJ{lJitq658B76wxTa_Cmuzc=w^xju5}0Eoce(i5>Ua~p(MhX!rMH(NeJ+xk}+6QZ`*In~<{xxO;#{@>RsX+v2I zy+ZwZ=qb}S@V0ZpkKE9_A2_fs(6XQ%Ez5oss&72UHOJ$b#_rm8@$uNUtld0c4l7E` zC?~9cuf?QWQaR7}BIPjfN>TkrFz+epG+$+6$@s2jD6*=cf)jfAk!ZX(SXp0^&dPRT zw~?yJC#PfD{G9xvS;U&um{}M~nEk0-SEH23H9w{1dUQFGuJm=@3ruqGbiDDb;)PLJ z`IK9)o%9Mys@ji(3Cajno95ZM7QPSZQmMevL{gY86os!3wR76+fy%1$z)=+AMJ)*^QgsP*4nl z77x;ca}n_%RuBbID1sh5Xh0|;y@-OSAWGF^5tNDt|I<`WKq1-R?9S{v&%FD&Z#;hQ zNJV~?5F*kbL<~Fe0`9_n_zY{Yu~CRN?7*!U$IUp3d+`=l;a5!J+=7bYbKFniN-Q)9 zu>@b@GJMx0@`ADW!etFEiVDG=q652d2Ug+!e?ne_;p_xy{@=ASb#g(Fgk6}S^S@E{&XA0zkzm*Yn?8_wcVtXy4e zX)Rviz8=l_{lax>FjUeS zwTJD(&BBB`nOoHz%J2SjFGm6|rxHpWRtb-J5x26+w|T_yKQ%ZdI?bh=g5dS!3u*R5mWK`R;9o*WERPWx@~=HCVHTUnV&DMw|=HQ(8+o^Cr- zQ}(HJXZuh)=XQrZMQQW-0!C$>(zn|mZ5dG+pBb}%NuTG#m9Lf=MS&pe>dUgbe6z{7 HG93B^;)6Ne From 9e084ad7a4b3d60fe29ac7707ba5a194581636a8 Mon Sep 17 00:00:00 2001 From: Wayne Heaney <42350981+wheaney@users.noreply.github.com> Date: Mon, 9 Sep 2024 20:43:59 -0700 Subject: [PATCH 30/30] Accommodate sombrero unified shader and driver changes (#54) * Unify FX and GLSL shader, working for both Breezy Vulkan and GNOME --- bin/package_vulkan | 6 +++--- gnome/src/IMUAdjust.frag | 1 - gnome/src/Sombrero.frag | 1 + gnome/src/xrEffect.js | 25 +++++++++++++------------ modules/XRLinuxDriver | 2 +- modules/sombrero | 2 +- vulkan/bin/breezy_vulkan_verify | 3 +-- vulkan/bin/setup | 4 ++-- vulkan/config/vkBasalt.conf | 5 ++--- 9 files changed, 24 insertions(+), 25 deletions(-) delete mode 120000 gnome/src/IMUAdjust.frag create mode 120000 gnome/src/Sombrero.frag diff --git a/bin/package_vulkan b/bin/package_vulkan index 9b32988..72f8f3b 100755 --- a/bin/package_vulkan +++ b/bin/package_vulkan @@ -41,8 +41,8 @@ cp $VKBASALT_BUILD_DIR/builddir/src/libvkbasalt.so $PACKAGE_DIR/vkBasalt.64/ cp $VKBASALT_BUILD_DIR/builddir/config/vkBasalt.json $PACKAGE_DIR/vkBasalt.64/ cp $VKBASALT_BUILD_DIR/builddir.32/src/libvkbasalt.so $PACKAGE_DIR/vkBasalt.32/ -# copy Sombrero FX, get ReShade headers -cp modules/sombrero/*.fx $PACKAGE_DIR +# copy Sombrero shader, get ReShade headers +cp modules/sombrero/*.frag $PACKAGE_DIR cp modules/sombrero/*.png $PACKAGE_DIR wget -P $PACKAGE_DIR https://raw.githubusercontent.com/crosire/reshade-shaders/384465d0287999caa6190b5ebea506200b4f4a0a/Shaders/ReShade.fxh wget -P $PACKAGE_DIR https://raw.githubusercontent.com/crosire/reshade-shaders/384465d0287999caa6190b5ebea506200b4f4a0a/Shaders/ReShadeUI.fxh @@ -93,7 +93,7 @@ cp $XR_DRIVER_DIR/bin/xr_driver_setup $PACKAGE_DIR/bin # include any file that doesn't get modified during setup (e.g. vkBasalt.json files) pushd $PACKAGE_DIR echo $XR_DRIVER_MANIFEST_LINE > manifest -sha256sum bin/breezy_vulkan_uninstall vkBasalt.64/libvkbasalt.so vkBasalt.32/libvkbasalt.so *.fx* *.png >> manifest +sha256sum bin/breezy_vulkan_uninstall vkBasalt.64/libvkbasalt.so vkBasalt.32/libvkbasalt.so *.frag *.fx* *.png >> manifest popd # bundle everything up diff --git a/gnome/src/IMUAdjust.frag b/gnome/src/IMUAdjust.frag deleted file mode 120000 index ffacb50..0000000 --- a/gnome/src/IMUAdjust.frag +++ /dev/null @@ -1 +0,0 @@ -../../modules/sombrero/IMUAdjust.frag \ No newline at end of file diff --git a/gnome/src/Sombrero.frag b/gnome/src/Sombrero.frag new file mode 120000 index 0000000..40e9a22 --- /dev/null +++ b/gnome/src/Sombrero.frag @@ -0,0 +1 @@ +../../modules/sombrero/Sombrero.frag \ No newline at end of file diff --git a/gnome/src/xrEffect.js b/gnome/src/xrEffect.js index 2680cae..aab805c 100644 --- a/gnome/src/xrEffect.js +++ b/gnome/src/xrEffect.js @@ -52,8 +52,7 @@ const shaderUniformLocations = { 'imu_quat_data': null, 'look_ahead_cfg': null, 'look_ahead_ms': null, - 'trim_width_percent': null, - 'trim_height_percent': null, + 'trim_percent': null, 'display_size': null, 'display_north_offset': null, 'lens_vector': null, @@ -141,9 +140,12 @@ function setIntermittentUniformVariables() { const halfFovYRads = halfFovZRads * displayAspectRatio; const fovHalfWidths = [Math.tan(halfFovYRads), Math.tan(halfFovZRads)]; const fovWidths = [fovHalfWidths[0] * 2, fovHalfWidths[1] * 2]; + const lensDistanceRatio = dataViewFloat(dataView, LENS_DISTANCE_RATIO); + let lensFromCenter = 0.0; let texcoordXLimits = [0.0, 1.0]; let texcoordXLimitsRight = [0.0, 1.0]; if (sbsEnabled) { + lensFromCenter = lensDistanceRatio / 3.0; if (sbsContent) { texcoordXLimits[1] = 0.5; texcoordXLimitsRight[0] = 0.5; @@ -154,10 +156,10 @@ function setIntermittentUniformVariables() { } else if (!sbsModeStretched) { texcoordXLimits[0] = 0.25; texcoordXLimits[1] = 0.75; + texcoordXLimitsRight[0] = 0.25; + texcoordXLimitsRight[1] = 0.75; } } - const lensDistanceRatio = dataViewFloat(dataView, LENS_DISTANCE_RATIO); - const lensFromCenter = lensDistanceRatio / 3.0; const lensVector = [lensDistanceRatio, lensFromCenter, 0.0]; const lensVectorRight = [lensDistanceRatio, -lensFromCenter, 0.0]; @@ -171,8 +173,7 @@ function setIntermittentUniformVariables() { transferUniformFloat(this, 'lens_distance_ratio', dataView, LENS_DISTANCE_RATIO); // computed values with no dataViewInfo, so we set these manually - setSingleFloat(this, 'trim_width_percent', trimWidthPercent); - setSingleFloat(this, 'trim_height_percent', trimHeightPercent); + this.set_uniform_float(shaderUniformLocations['trim_percent'], 2, [trimWidthPercent, trimHeightPercent]); setSingleFloat(this, 'half_fov_z_rads', halfFovZRads); setSingleFloat(this, 'half_fov_y_rads', halfFovYRads); this.set_uniform_float(shaderUniformLocations['fov_half_widths'], 2, fovHalfWidths); @@ -191,7 +192,7 @@ function setIntermittentUniformVariables() { if (enabled && this.widescreen_mode_state !== sbsEnabled) this.widescreen_mode_state = sbsEnabled; // these variables are always in play, even if enabled is false - setSingleFloat(this, 'enabled', enabled ? 1.0 : 0.0); + setSingleFloat(this, 'virtual_display_enabled', enabled ? 1.0 : 0.0); setSingleFloat(this, 'show_banner', imuResetState ? 1.0 : 0.0); setSingleFloat(this, 'sbs_enabled', sbsEnabled ? 1.0 : 0.0); setSingleFloat(this, 'custom_banner_enabled', dataViewUint8(dataView, CUSTOM_BANNER_ENABLED) !== 0 ? 1.0 : 0.0); @@ -345,8 +346,8 @@ export const XREffect = GObject.registerClass({ } vfunc_build_pipeline() { - const code = getShaderSource(`${Globals.extension_dir}/IMUAdjust.frag`); - const main = 'PS_IMU_Transform(vec4(0, 0, 0, 0), cogl_tex_coord_in[0].xy, cogl_color_out);'; + const code = getShaderSource(`${Globals.extension_dir}/Sombrero.frag`); + const main = 'PS_Sombrero(true, false, source_to_display_ratio, show_banner, cogl_tex_coord_in[0].xy, cogl_color_out);'; this.add_glsl_snippet(Shell.SnippetHook.FRAGMENT, code, main, false); } @@ -358,12 +359,12 @@ export const XREffect = GObject.registerClass({ let buffer = new Uint8Array(data[1]).buffer; this._dataView = new DataView(buffer); if (!this._initialized) { - this.set_uniform_float(this.get_uniform_location('uDesktopTexture'), 1, [0]); + this.set_uniform_float(this.get_uniform_location('screenTexture'), 1, [0]); this.get_pipeline().set_layer_texture(1, calibratingImage.get_texture()); this.get_pipeline().set_layer_texture(2, customBannerImage.get_texture()); - this.get_pipeline().set_uniform_1i(this.get_uniform_location('uCalibratingTexture'), 1); - this.get_pipeline().set_uniform_1i(this.get_uniform_location('uCustomBannerTexture'), 2); + this.get_pipeline().set_uniform_1i(this.get_uniform_location('calibratingTexture'), 1); + this.get_pipeline().set_uniform_1i(this.get_uniform_location('customBannerTexture'), 2); for (let key in shaderUniformLocations) { shaderUniformLocations[key] = this.get_uniform_location(key); diff --git a/modules/XRLinuxDriver b/modules/XRLinuxDriver index 920ef89..d7415dc 160000 --- a/modules/XRLinuxDriver +++ b/modules/XRLinuxDriver @@ -1 +1 @@ -Subproject commit 920ef8967d328e80d9c5020a798f0f7afad97903 +Subproject commit d7415dc00a29afb5db844fd5867de4f0cc09d85d diff --git a/modules/sombrero b/modules/sombrero index ec3f82a..46b9988 160000 --- a/modules/sombrero +++ b/modules/sombrero @@ -1 +1 @@ -Subproject commit ec3f82aa4834847adf1f0c640eba4b87b6f3ff65 +Subproject commit 46b99881e066fdc8a90b36dd9f83cc9894ecffa0 diff --git a/vulkan/bin/breezy_vulkan_verify b/vulkan/bin/breezy_vulkan_verify index be901e2..1f3f039 100755 --- a/vulkan/bin/breezy_vulkan_verify +++ b/vulkan/bin/breezy_vulkan_verify @@ -8,10 +8,9 @@ file_paths=( ["bin/breezy_vulkan_uninstall"]="{bin_dir}/breezy_vulkan_uninstall" ["vkBasalt.64/libvkbasalt.so"]="{lib_dir}/libvkbasalt.so" ["vkBasalt.32/libvkbasalt.so"]="{lib32_dir}/libvkbasalt.so" - ["IMUAdjust.fx"]="{reshade_config_dir}/Shaders/IMUAdjust.fx" + ["Sombrero.frag"]="{reshade_config_dir}/Shaders/Sombrero.frag" ["ReShade.fxh"]="{reshade_config_dir}/Shaders/ReShade.fxh" ["ReShadeUI.fxh"]="{reshade_config_dir}/Shaders/ReShadeUI.fxh" - ["Sideview.fx"]="{reshade_config_dir}/Shaders/Sideview.fx" ["calibrating.png"]="{reshade_config_dir}/Textures/calibrating.png" ["custom_banner.png"]="{reshade_config_dir}/Textures/custom_banner.png" ["xr_driver/manifest"]="{xr_driver_data_dir}/manifest" diff --git a/vulkan/bin/setup b/vulkan/bin/setup index 116c03f..5d47841 100755 --- a/vulkan/bin/setup +++ b/vulkan/bin/setup @@ -124,11 +124,11 @@ fi # copy the vkBasalt.conf file and make replacements sed -e "s|/path/to/reshade-shaders|${RESHADE_CONFIG_DIR}|" \ - -e "s|/path/to/virtual_display|${RESHADE_CONFIG_DIR}/Shaders/IMUAdjust.fx|" \ - -e "s|/path/to/sideview|${RESHADE_CONFIG_DIR}/Shaders/Sideview.fx|" \ + -e "s|/path/to/sombrero|${RESHADE_CONFIG_DIR}/Shaders/Sombrero.frag|" \ config/vkBasalt.conf > $VKBASALT_CONFIG_DIR/vkBasalt.conf echo "Installing the Sombrero shaders and texture files to ${RESHADE_CONFIG_DIR}/{Shaders,Textures}" +cp *.frag $RESHADE_CONFIG_DIR/Shaders cp *.fx* $RESHADE_CONFIG_DIR/Shaders cp *.png $RESHADE_CONFIG_DIR/Textures diff --git a/vulkan/config/vkBasalt.conf b/vulkan/config/vkBasalt.conf index 46756a0..1402899 100644 --- a/vulkan/config/vkBasalt.conf +++ b/vulkan/config/vkBasalt.conf @@ -1,7 +1,6 @@ -effects = sideview:virtual_display +effects = sombrero -virtual_display = /path/to/virtual_display -sideview = /path/to/sideview +sombrero = /path/to/sombrero reshadeTexturePath = "/path/to/reshade-shaders/Textures" reshadeIncludePath = "/path/to/reshade-shaders/Shaders" depthCapture = off