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$HKnI)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
zcmai(Ta0B{S;yBP%t$FSf;x;Ba0xim4Ry{`4+C`9Ob=b%UER|&UEM`hP0!6_vg(|5
z&e`4j?0sfms=68hc~B#X4_nI6{VK>5<_Dno>5cs1
z(zHRH=P^*{tH4F@W1#l?dGHkYZ=m#fFUmd+KG@(8)VLQw$>|mFDe%8R?Q0$7Xx$E|
zbA1?m7x;1To#2;2>Giwd<6!v<#;kyU0czgcZ1lJLLGi{Z@Hwyt%C7zjlzsmrsP(=9
z%6@+UO7G?u;X>ecQ2jSS+4W~Yo%c%({sXA}{X2LYDA`G#_tT!G>8JPFw1;StnSS!k
z@$c#8;u3h4_Am{xna60ezcbvd(N<}a+1qIk()3%VJxY5oO>)yua**yNuX|}fLep8!
z)AZ9hWfK=@E410)8@NG~!6wH28_k96?hZ%Z?138yFy)69>;~Ndekpm*PCOu>-P9N$m_zaZ0B`lPZ!?b*gNaX
zYgIlnE1fFY@n)rawJxinIE^9hY@{*KYc%VpV$5UAI@-QIQN?v1hwUIZBy!r7V+v
zW*_%^+qo+kKgf%!Q&(oCuJWO)l8#H$JvQAWAn`R
z^1=??^<-ENIZBzQb?A0k*KYf=vL*9L3cCZJ*-={e`)o4F+6UGveKoh3E5q%9-5;JM
z3dW8lGkk{S3WCslq|0}g6rKy8XW^!ac*$vh7j)o5N=
z$wst6*BK;!$6JRshp4a$J5T9KZQg69mk!J1MwqY8DqpxxRie8Q2AR6P-QL5xd^bV9
zD0qP6S`}li>28#lNi+oYYfk*3%bDafZM%t`U2C@Id#+9^q?h`#v^z;r)h?axx^Vpx
zQyL`fW)F`D3vtdJA1r^-Uag0t(mJiPXtBnGNjw%`4&1dpWKkD8NPleqXXA3_Y*OmX
zU0ujACgM5N!9<%Kx(!BiK45@YgzxpRl(sqN
z@RiNen?ZrLL~&>+>zi}lRdwO*%8pA?x1FRI^0>1!=OmPTgiL277X8zl%hNR94fBn!
zs{tN5$kQ$z1%|NUv1N1K4YksF_^M!<34uJy+dYRB!XuKr?YPXQd43ITU^3VdtUIV^D`D(rg^8500}bbOe}G`Gi_3^W
zXmsR@Box8EUXwUd7288iMAN)WK9T0UIU)uK7uE?y~%>%>u9%L3=IJ#Kd9C)EIhe&=K
zzSXF2Y@Fjwn+@NS2Uud4Cu;3k7u-)0!lH*_$Hnok5DH9!aIh(?kl`7;l)@+*{`p#=
z&GGb_&&($D+uGi1m0%VDuGU
zjBGoj@F_iSLHa9wvN7`nE;&g018J$4(Rp~FjcnId1vyB)9XARLJL>~u!vSN+)IKDa
z5KuMpkVCZ172HfIQ?Q9EFa{1DS>eg~_-rP;Z=Q~M;M0n0w<0oy+n9AIuw?{m2(Ti6
zu16j$d~1$hNwDPED7{*?>nmp-Upc>OudHrtUbuW|A?~rYR`!!_
z>vY{OTU+_EU0A=|+JG7LPU|c-ylfv>df>s<((%@@6L#su^1Dy8mfp9tv~ZD-+1e^x
zR^lXiv25+bM5@f6x?bcNIcI&njl3RVT-L8$-?z5B8!jVecY`p>QP+`B-N%)^eK_ro
zwhN^%VK$aNl?E}DoTj62*Z1wrSJT;+?WlV0^v1&4g|*e`5s$T(7L=qxq^+&J5qqy-
z;`<4aN%oNK49N0)b@GX=bFJgkaay$Ji`FXo?ZW!Y_V{*EEv%>H*lFt=#8fWZjNF;q
z^5g>#DUIgx<%X9J2W3YIiDXMxNWK#6*FDR#G__4R4x)4dYymO
z#&jstLr8G{CUV6r-JC9X2D|Lvq^NQK+Z5*V!I{IH2%+@-I;q8R5=TMGkqxK;MV%q{
z-^o?+K;^0~B(1f&i}kEI=pGhApxBis|Dk@)DS7}Zpq#R3@&E&z7Cp#Whv<>~g!7N(
zmtoU60zlEkI~R&5H!XqC056Kj_dl6+5-#V}Axn2DsVx=>#}93`|DviOPKehdIo&Y#
z+|n%N$Oi_T>I{@Dm%;}e^if8OqfEoTd5MZjUdJUuiRQ&*jH{?Lqg`>|aoe8t;a~hk
zs;KabFjK6W@VoG?LbS+bpyfucTcF=XCTAjyF8IT&t&KCi=qkaDt78AARwxnL4v8v;
z%`IhM+yRq??+9e$z0#;M1?
zJgbsfA2nN1wDXFZnNig*DkDG7ZlzLlmhT$o(U`qxFXKx@=6hbp!7dMZ3?C$Br$kJn
z;1(gH3#nD8`0|Y7%VF39|28~ADD#q>u(=S4qy1P~{~t_5N$`clQ4XOJv?WB^EXI
zcF1nVi&FV-QZIzJ92SC6@T$MgS>^HicrbfHsxwWkFB(uJDT8=Cr-r;i4<#P;hZm~S
zQ)rR(1!s5UR{J+wspAWWJSa#oyu3(;*~c%G2dSpR3v@PCnO}NFpMm+X(;-eo_)*mt
zqS3^2=KO!`B9W0$hDwJ5oj9n=Q7e^*58DW48y1G{LJU&Lmy%&>Xea|whq;o_x&LA(
zAx4D?FhpCk!a+O9C_1rrKXE>D=`d|_v>0I~4`Wg2hf(%{3dYY|@qA6N)uf?P6pi%q
z#QJE5vXEFHN<^0;x2?N=j@R}@S^Iw|Dk=6~A`Eiji~ScHn~d>4E_N=tE{mRtq+`Jm
z|EAOyl7yykB!`kM)T}Xf`9^dim)Y7e5EEap0(lgZ`f(iS_+-f!F}RyZ96c}S0YdKb
ztuY3}5ah6P%@RJ6gzO@EwCGm89L-JY#dT{;YRW+ROxk!BS;?3R=3ktKnX!9BXB`_y
z%qJAlME>%QskF=r0pmKc2O&0jRFG?Q7{@mQUI@E~_b~`ay^)7+Az#I)==bv^lyWFcoq~+T_DJ;f
z(K)arED+>4KBAnGBsXJ{@FihqB1IzAft0Heq>5Dnkjm6XH3t){67N@Tc{sdF-Qhb)
z6K|-8#5}59k%XusSbSa7$wf85DE6Fp6_-
z=T)G~U_i0XWik#mjm}~3^QVkkuLBPc5!)gEZAxAKr+|-TvD$^;RqTonCoyfBjhWSP
z+=U4#BMb)k{}8z3I!#U?j7jlJkf3lQs_ZChjKRpy#1mv5YG66re2`F8OsR(l^c1ILPuFlu@iDh1-6{PFd_QGb#dZuSr?P_ng0QJnqS)h
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