feat: added compatibility with ChimeraOS configuration and device-quirks

Signed-off-by: Boris Yumankulov <boria138@altlinux.org>
This commit is contained in:
2025-07-09 21:25:14 +05:00
parent cf0b11ea3e
commit 960b808457
2 changed files with 94 additions and 3 deletions

View File

@ -1,5 +1,18 @@
#!/usr/bin/env bash
gamescope_has_option() {
if (gamescope --help 2>&1 | grep -e "$1" > /dev/null); then
return 0
fi
return 1
}
# Source device quirks if exists
if [ -f /usr/share/gamescope-session-plus/device-quirks ]; then
. /usr/share/gamescope-session-plus/device-quirks
fi
# Source user configuration from ~/.config/environment.d
set -a
for i in "${HOME}"/.config/environment.d/*.conf; do
@ -8,12 +21,55 @@ done
set +a
# Gamescope parameters
GAMESCOPE_PARAMS=""
: "${OUTPUT_CONNECTOR:=*,eDP-1}"
GAMESCOPE_PARAMS="--prefer-output $OUTPUT_CONNECTOR"
# Check if NVK driver is in use
if vulkaninfo 2>/dev/null | grep -i "driverName" | grep -q "NVK"; then
# Workaround for https://gitlab.freedesktop.org/mesa/mesa/-/issues/13478
GAMESCOPE_PARAMS+=" --backend sdl -f"
BACKEND="sdl"
GAMESCOPE_PARAMS+=" -f"
fi
if [ -n "$SCREEN_WIDTH" ] && [ -n "$SCREEN_HEIGHT" ]; then
GAMESCOPE_PARAMS+=" -W $SCREEN_WIDTH -H $SCREEN_HEIGHT"
fi
if [ -n "$INTERNAL_WIDTH" ] && [ -n "$INTERNAL_HEIGHT" ] ; then
GAMESCOPE_PARAMS+=" -w $INTERNAL_WIDTH -h $INTERNAL_HEIGHT"
fi
if [ -n "$DRM_MODE" ] ; then
GAMESCOPE_PARAMS+=" --generate-drm-mode $DRM_MODE"
fi
if [ -n "$ORIENTATION" ] ; then
GAMESCOPE_PARAMS+=" --force-orientation $ORIENTATION"
fi
if [ -n "$ADAPTIVE_SYNC" ]; then
GAMESCOPE_PARAMS+=" --adaptive-sync"
fi
if [ -n "$PANEL_TYPE" ] && gamescope_has_option "--force-panel-type"; then
GAMESCOPE_PARAMS+=" --force-panel-type $PANEL_TYPE"
fi
if [ -n "$CUSTOM_REFRESH_RATES" ] && gamescope_has_option "--custom-refresh-rates"; then
GAMESCOPE_PARAMS+=" --custom-refresh-rates $CUSTOM_REFRESH_RATES"
fi
if [ -n "$USE_ROTATION_SHADER" ] && gamescope_has_option "--use-rotation-shader"; then
GAMESCOPE_PARAMS+=" --use-rotation-shader $USE_ROTATION_SHADER"
fi
if [ -n "$BACKEND" ] && gamescope_has_option "--backend"; then
GAMESCOPE_PARAMS+=" --backend $BACKEND"
fi
if [ -f "$CURSOR_FILE" ]; then
# Use specified cursor if file exists
GAMESCOPE_PARAMS+=" --cursor ${CURSOR_FILE}"
fi
# Prefer a specific Vulkan adapter if defined