Compare commits

...

5 commits

Author SHA1 Message Date
Bluey Enjoyer
16b9d4ac18 Merge branch 'brute_scaling' into 'master'
linux: Attempt to apply Avalonia scaling factor via environment pre-launch. (656)

Closes #1

See merge request ryubing/ryujinx!3
2025-03-16 00:07:54 +00:00
GreemDev
fa5840927a compat: X-Out Resurfaced: playable 2025-03-15 18:25:41 -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
2 changed files with 38 additions and 1 deletions

View file

@ -20,4 +20,40 @@ if command -v gamemoderun > /dev/null 2>&1; then
COMMAND="$COMMAND gamemoderun"
fi
exec $COMMAND "$SCRIPT_DIR/$RYUJINX_BIN" "$@"
# 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

@ -3379,6 +3379,7 @@
010064200C324000,"Xenon Valkyrie+",,playable,2021-06-07 20:25:53
0100928005BD2000,"Xenoraid",,playable,2022-09-03 13:01:10
01005B5009364000,"Xeodrifter",,playable,2022-09-03 13:18:39
010048501F73E000,"X-Out: Resurfaced",,playable,2025-03-15 18:25:20
01006FB00DB02000,"Yaga",nvdec,playable,2022-09-16 23:17:17
010076B0101A0000,"YesterMorrow",crash,ingame,2020-12-17 17:15:25
010085500B29A000,"Yet Another Zombie Defense HD",,playable,2021-01-06 00:18:39

1 title_id game_name labels status last_updated
3379 010064200C324000 Xenon Valkyrie+ playable 2021-06-07 20:25:53
3380 0100928005BD2000 Xenoraid playable 2022-09-03 13:01:10
3381 01005B5009364000 Xeodrifter playable 2022-09-03 13:18:39
3382 010048501F73E000 X-Out: Resurfaced playable 2025-03-15 18:25:20
3383 01006FB00DB02000 Yaga nvdec playable 2022-09-16 23:17:17
3384 010076B0101A0000 YesterMorrow crash ingame 2020-12-17 17:15:25
3385 010085500B29A000 Yet Another Zombie Defense HD playable 2021-01-06 00:18:39