Compare commits

...

8 commits

Author SHA1 Message Date
Bluey Enjoyer
23108cb04f Merge branch 'brute_scaling' into 'master'
linux: Attempt to apply Avalonia scaling factor via environment pre-launch.

See merge request ryubing/ryujinx!1
2025-04-15 09:39:59 -05:00
WilliamWsyHK
e0181d3410 Update translations of zh-tw
See merge request ryubing/ryujinx!9
2025-04-14 15:33:07 -05:00
TheToid
4c7c5ea323 MACOS build fixes
See merge request ryubing/ryujinx!12
2025-04-14 15:21:37 -05:00
yeager
4a6d9c2b3f Swedish update in locales.json (again)
See merge request ryubing/ryujinx!11
2025-04-14 15:17:46 -05:00
Bluey Enjoyer
35f5188e75 Merge branch ryujinx:master into brute_scaling 2025-04-05 18:48:22 -05:00
Piplup
42518f2304
Github feedback 2025-03-13 17:55:48 +00:00
Piplup
4e61c3369b
Janky GNOME workaround and added a fallback kscreen-doctor implementation if needed. 2025-03-13 17:52:57 +00:00
Piplup
13c4aca5ac
Attempt to get desktop scaling factor from the environment directly. 2025-03-13 17:52:32 +00:00
5 changed files with 79 additions and 31 deletions

4
.gitignore vendored
View file

@ -178,3 +178,7 @@ PublishProfiles/
# Ignore MacOS Attribute Files
._*
# Ignore distribution build files
distribution/macos/temp/
distribution/macos/output/

View file

@ -3844,7 +3844,7 @@
"tr_TR": "",
"uk_UA": "Показати оригінальний UI (Потрібен перезапуск)",
"zh_CN": "显示原始 UI 样式 (需要重启)",
"zh_TW": ""
"zh_TW": "顯示原始 UI 樣式 (需要重新啟動 Ryujinx)"
}
},
{
@ -3869,7 +3869,7 @@
"tr_TR": "",
"uk_UA": "Показати старий інтерфейс Avalonia Ryujinx, який був у Ryujinx 1.1.1403. Ця опція активна за замовчуванням на всіх інших, окрім Windows платформах.\nПовернеться класична панель заголовка, а всі суттєві зміни інтерфейсу будуть скасовані, зокрема горизонтальне розміщення навігації в налаштуваннях.",
"zh_CN": "显示旧的类似 Ryujinx 1.1.1403 的 Avalonia Ryujinx UI。在非 Windows 平台上默认启用此选项。\n经典样式的标题栏已回归并且恢复了对窗口布局的重大重构;例如在工具提示上方放置设置导航。",
"zh_TW": ""
"zh_TW": "顯示舊版 Ryujinx 1.1.1403 的 Avalonia UI 樣式。在非 Windows 平台預設啟用。\n經典樣式的標題欄已回歸並且還原了對設定視窗佈局的大型重構例如在工具提示上方設置導覽列。"
}
},
{
@ -4944,7 +4944,7 @@
"tr_TR": "",
"uk_UA": "Множник Турборежиму:",
"zh_CN": "涡轮模式倍数:",
"zh_TW": ""
"zh_TW": "加速模式倍數:"
}
},
{
@ -4969,7 +4969,7 @@
"tr_TR": "",
"uk_UA": "Цільове значення коефіцієнта Турборежиму.\n\nЗалиште 200, якщо не впевнені",
"zh_CN": "涡轮模式倍数的目标值。\n\n如果不确定请保留为 200。",
"zh_TW": ""
"zh_TW": "加速模式倍數的數值。\n\n如果不確定請保持數值為 200。"
}
},
{
@ -4994,7 +4994,7 @@
"tr_TR": "",
"uk_UA": "Турборежим це функція емулятора, яка ефективно прискорює або сповільнює гру, якщо та не чутлива до частоти кадрів. Цю функцію можна ввімкнути/вимкнути безпосередньо під час гри за допомогою гарячої клавіші, яку можна налаштувати в меню Гарячі клавіші в налаштуваннях.",
"zh_CN": "涡轮模式是一种模拟器功能当游戏对帧率不敏感时它可以有效地导致加速或降速。\n您可以在游戏中使用热键切换此功能,它可以在 Ryujinx 的键盘热键设置进行设置。\n\n如果不确定则保留为 200。",
"zh_TW": ""
"zh_TW": "加速模式是一種模擬器功能,其目的為加速或減速對不是以影格速率為速度 (frame-rate sensitive) 的遊戲。\n你可以在遊戲中以快捷鍵切換此功能而快捷鍵可於 Ryujinx 鍵盤快捷鍵中設置。\n\n如果不確定請保持數值為 200。"
}
},
{
@ -18269,7 +18269,7 @@
"tr_TR": "",
"uk_UA": "{0} FPS ({1}ms), Турбо ({2}%)",
"zh_CN": "{0} FPS ({1}ms), 涡轮 ({2}%)",
"zh_TW": ""
"zh_TW": "{0} FPS ({1}ms), 加速 ({2}%)"
}
},
{
@ -19914,7 +19914,7 @@
"pl_PL": "Skróty Klawiszowe Klawiatury",
"pt_BR": "Atalhos do Teclado",
"ru_RU": "Горячие клавиши",
"sv_SE": "Snabbtangenter för tangentbord",
"sv_SE": "Snabbtangenter",
"th_TH": "ปุ่มลัดของคีย์บอร์ด",
"tr_TR": "Klavye Kısayolları",
"uk_UA": "Гарячі клавіші",
@ -24019,7 +24019,7 @@
"tr_TR": "",
"uk_UA": "Турбомод:",
"zh_CN": "涡轮模式: ",
"zh_TW": ""
"zh_TW": "加速模式:"
}
},
{
@ -24044,7 +24044,7 @@
"tr_TR": "",
"uk_UA": "Гаряча клавіша Турборежиму.\nКонфігурація поведінки турборежиму в налаштуваннях Процесору Ryujinx.\n\nНе прив'язуйте, якщо не впевнені.",
"zh_CN": "涡轮模式热键。\n可以在 Ryujinx CPU 设置中配置涡轮模式的行为。\n\n如果不确定请保留为未绑定。",
"zh_TW": ""
"zh_TW": "加速模式快捷鍵。\n可以在 Ryujinx CPU 設定中設定加速模式的倍數。\n\n如果不確定請保持為「未分配」。"
}
},
{
@ -24069,7 +24069,7 @@
"tr_TR": "",
"uk_UA": "Тільки під час натискання",
"zh_CN": "仅在按下时",
"zh_TW": ""
"zh_TW": "只在按下時"
}
},
{
@ -24119,7 +24119,7 @@
"tr_TR": "",
"uk_UA": "Список сумісності — {0} ігор",
"zh_CN": "兼容性列表 - {0} 条",
"zh_TW": ""
"zh_TW": "相容性列表 - {0} 則紀錄"
}
},
{
@ -24194,7 +24194,7 @@
"tr_TR": "",
"uk_UA": "Шукати серед {0} перевірених ігор...",
"zh_CN": "搜索 {0} 兼容性条目...",
"zh_TW": ""
"zh_TW": "從相容性列表的 {0} 則紀錄中搜尋..."
}
},
{

View file

@ -20,4 +20,40 @@ if command -v gamemoderun > /dev/null 2>&1; then
COMMAND="$COMMAND gamemoderun"
fi
# Check if user already has a manual Avalonia scaling override or session type is x11.
if [ -n "${AVALONIA_GLOBAL_SCALE_FACTOR-}" ] || [ "$XDG_SESSION_TYPE" = "x11" ]; then
echo "Scaling: Performed by environment, skipping." >&2
else
# Query monitor config directly (GNOME), default display only.
if [[ "$(echo "$XDG_CURRENT_DESKTOP")" == "GNOME" && -f ~/.config/monitors.xml ]] then
echo -n 'Scaling: Monitor config located, querying scale...' >&2
SCALING="$(grep '<scale' ~/.config/monitors.xml -m 1 | cut -f2 -d">"|cut -f1 -d"<")"
SCALING="${SCALING##* }"
echo "found! Factor: ${SCALING}" >&2
# Fallback to X DPI query for others.
# Plasma handles this fine, GNOME will always round up e.g. 1.25 -> 2.00.
elif command -v xrdb >/dev/null; then
echo -n 'Scaling: Attempting to get scaling from X DPI value...' >&2
dpi="$(xrdb -get Xft.dpi)"
if [[ -n "${dpi}" ]]; then
SCALING=$(awk -vdpi="$dpi" 'BEGIN{print dpi/96}')
fi
echo "found! Factor: ${SCALING}"
# Query kscreen-doctor for Plasma as a fallback.
elif [[ "$(echo "$XDG_CURRENT_DESKTOP")" == "KDE" ]] && command -v kscreen-doctor >/dev/null; then
# gsub strips ANSI color codes from ksd output
SCALING=$(kscreen-doctor --outputs | awk '/Scale:/{gsub(/\x1b\[[0-9;]*m/,""); print $2; exit}')
echo "found! Factor: ${SCALING}"
fi
if [[ -z "${SCALING-}" || "${SCALING-}" == "0" ]]; then
echo 'Unset invalid scaling value' >&2
SCALING="1"
fi
COMMAND="$COMMAND AVALONIA_GLOBAL_SCALE_FACTOR=$SCALING"
fi
exec $COMMAND "$SCRIPT_DIR/$RYUJINX_BIN" "$@"

View file

@ -562,26 +562,29 @@ search_path = [
for path in content_directory.rglob("**/*.dylib"):
current_search_path = [path.parent]
current_search_path.extend(search_path)
if not path.name.startswith("._"):
current_search_path = [path.parent]
current_search_path.extend(search_path)
fixup_dylib(
path,
get_path_related_to_target_exec(content_directory, path),
current_search_path,
content_directory,
)
print(f"Fixing path '{path}' using search path of '{current_search_path}' for context of '{content_directory}'.")
fixup_dylib(
path,
get_path_related_to_target_exec(content_directory, path),
current_search_path,
content_directory,
)
for path in content_directory.rglob("**/*.so"):
current_search_path = [path.parent]
current_search_path.extend(search_path)
if not path.name.startswith("._"):
current_search_path = [path.parent]
current_search_path.extend(search_path)
fixup_dylib(
path,
get_path_related_to_target_exec(content_directory, path),
current_search_path,
content_directory,
)
fixup_dylib(
path,
get_path_related_to_target_exec(content_directory, path),
current_search_path,
content_directory,
)
with open(executable_path, "rb") as input:

View file

@ -30,9 +30,14 @@ cp -r "$PUBLISH_DIRECTORY/THIRDPARTY.md" "$APP_BUNDLE_DIRECTORY/Contents/Resourc
echo -n "APPL????" > "$APP_BUNDLE_DIRECTORY/Contents/PkgInfo"
# Fixup libraries and executable
echo "Running bundle fix up python script"
python3 bundle_fix_up.py "$APP_BUNDLE_DIRECTORY" MacOS/Ryujinx
# Resign all dyplib files as ad-hoc after changing them
find "$APP_BUNDLE_DIRECTORY/Contents/Frameworks" -type f -name "*.dylib" -exec codesign --force --sign - {} \;
# Now sign it
echo "Starting signing process"
if ! [ -x "$(command -v codesign)" ];
then
if ! [ -x "$(command -v rcodesign)" ];
@ -42,9 +47,9 @@ then
fi
# cargo install apple-codesign
echo "Usign rcodesign for ad-hoc signing"
echo "Using rcodesign for ad-hoc signing"
rcodesign sign --entitlements-xml-path "$ENTITLEMENTS_FILE_PATH" "$APP_BUNDLE_DIRECTORY"
else
echo "Usign codesign for ad-hoc signing"
echo "Using codesign for ad-hoc signing"
codesign --entitlements "$ENTITLEMENTS_FILE_PATH" -f -s - "$APP_BUNDLE_DIRECTORY"
fi