From bcb2cb4c935761867dedb45cccc459f7fa055c6b Mon Sep 17 00:00:00 2001 From: Eamonn Rea Date: Tue, 3 Sep 2024 22:57:23 +0100 Subject: [PATCH 1/3] GameScope: Add support for GameScope `--backend` option --- lang/english.txt | 2 ++ steamtinkerlaunch | 33 ++++++++++++++++++++------------- 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/lang/english.txt b/lang/english.txt index 1fc6023f..3433ea16 100644 --- a/lang/english.txt +++ b/lang/english.txt @@ -1290,3 +1290,5 @@ GUI_CUSTOMCMD_USESLR="Use Steam Linux Runtime with Custom Command" DESC_CUSTOMCMD_USESLR="runs Custom Commands in the Steam Linux Runtime container that games use to improve compatibility, particularly for commands running via Proton (but it works for native commands as well). This option might get in the way of inter-process communication (i.e. an app that looks for a game process) and may be unnecessary for Linux shell scripts" GUI_MO2SILENTMODEEXEOVERRIDE="Override ModOrganizer 2 Silent Mode Executable Configuration" DESC_MO2SILENTMODEEXEOVERRIDE="use a different executable configuration in Silent Mode (i.e. launch 'SKSE64' instead of 'Skyrim Special Edition') -- When 'none' by default, ModOrganizer 2 will launch the configuation matching the name of the INI (i.e. Skyrim Special Edition)" +GUI_GSBACKEND="Rendering Backend" +DESC_GSBACKEND="rendering backend for GameScope to use -- Defaults to 'auto' which selects based on environment (e.g., 'sdl' on X11, 'wayland' on Wayland)" diff --git a/steamtinkerlaunch b/steamtinkerlaunch index d2290226..d722d817 100755 --- a/steamtinkerlaunch +++ b/steamtinkerlaunch @@ -7,7 +7,7 @@ PREFIX="/usr" PROGNAME="SteamTinkerLaunch" NICEPROGNAME="Steam Tinker Launch" -PROGVERS="v14.0.20240903-1" +PROGVERS="v14.0.20240904-1 (gamescope-backend-flag)" PROGCMD="${0##*/}" PROGINTERNALPROTNAME="Proton-stl" SHOSTL="stl" @@ -11581,6 +11581,9 @@ function setGameScopeVars { GSSTATSPATH="$( getGameScopeArg "$GAMESCOPE_ARGS" "--stats-path" "$GSSTATSPATH" "" "" "path" )" if [ -n "$GSSTATSPATH" ]; then GSSTATSPATHENABLE="1"; fi + # Backend for GameScope to use (--backend) -- Dropdown + GSBACKEND="$( getGameScopeArg "$GAMESCOPE_ARGS" "--backend" "$GSBACKEND" "" "auto" "cb" )" + # Amount of time in milliseconds to wait before hiding the cursor (-C) -- Spinner GSHIDECURSORDELAY="$( getGameScopeArg "$GAMESCOPE_ARGS" "-C" "$GSHIDECURSORDELAY" "" "0" "num" )" @@ -11625,6 +11628,7 @@ function setGameScopeVars { GSTOUCHMODES="${GSDEF}!${GSHOVER}!${GSLEFTCLICK}!${GSRIGHTCLICK}!${GSMIDDLECLICK}!${GSPASSTHRU}" # Corresponds to 0,1,2,3,4 respectively internally by GameScope -- Default is ingored and the flag is not passed to GameScope GSDRMMODES="${GSDEF}!cvt!fixed" GSNEWFILTERMODE=0 # Whether gamescope uses -U/-Y/-n/-i (legacy) or -F/-S (new) + GSBACKENDOPTS="auto!sdl!wayland!drm!headless!openvr" # Get values for UI elements based on existing GameScope args getGameScopeGeneralOpts @@ -11708,6 +11712,7 @@ function GameScopeGui { --field="$GUI_GSPREFOUT!$DESC_GSPREFOUT ('GSPREFOUT')" "" \ --field="$GUI_GSDRMMODE!$DESC_GSDRMMODE ('GSDRMMODE')":CB "$(cleanDropDown "${GSDRMMODE}" "${GSDRMMODES}")" \ --field="$(spanFont "$GUI_GSADVOPTIONS" "H")":LBL "SKIP" \ + --field="$GUI_GSBACKEND!$DESC_GSBACKEND ('GSBACKEND')":CBE "$(cleanDropDown "${GSBACKEND}" "${GSBACKENDOPTS}")" \ --field="$GUI_GSSTATSPATHENABLE!$DESC_GSSTATSPATHENABLE ('GSSTATSPATHENABLE')":CHK "$GSSTATSPATHENABLE" \ --field="$GUI_GSSTATSPATH!$DESC_GSSTATSPATH ('GSSTATSPATH')":DIR "${GSSTATSPATH//\"}" \ --field="$GUI_GSHIDECURSORDELAY!$DESC_GSHIDECURSORDELAY ('GSHIDECURSORDELAY')":NUM "${GSHIDECURSORDELAY/#-/ -}" \ @@ -11810,18 +11815,19 @@ function GameScopeGui { GSPREFOUT="${GSARR[$GSEMBEDDEDHEADING + 4]}" GSDRMMODE="${GSARR[$GSEMBEDDEDHEADING + 5]}" # GSARR[49] is the Advanced heading - GSSTATSPATHENABLE="${GSARR[$GSADVANCEDHEADING + 1]}" - GSSTATSPATH="${GSARR[$GSADVANCEDHEADING + 2]}" - GSHIDECURSORDELAY="${GSARR[$GSADVANCEDHEADING + 3]}" - GSFORCECOMP="${GSARR[$GSADVANCEDHEADING + 4]}" - GSDEBUGHUD="${GSARR[$GSADVANCEDHEADING + 5]}" - GSFORCEHDRSUPPORT="${GSARR[$GSADVANCEDHEADING + 6]}" - GSFORCEHDROUTPUT="${GSARR[$GSADVANCEDHEADING + 7]}" - GSPREFERVKDEVICE="${GSARR[$GSADVANCEDHEADING + 8]}" - GSWAYLAND="${GSARR[$GSADVANCEDHEADING + 9]}" - GSRT="${GSARR[$GSADVANCEDHEADING + 10]}" - GSHDLS="${GSARR[$GSADVANCEDHEADING + 11]}" - USEGAMESCOPEWSI="${GSARR[$GSADVANCEDHEADING + 12]}" + GSBACKEND="${GSARR[$GSADVANCEDHEADING + 1]}" + GSSTATSPATHENABLE="${GSARR[$GSADVANCEDHEADING + 2]}" + GSSTATSPATH="${GSARR[$GSADVANCEDHEADING + 3]}" + GSHIDECURSORDELAY="${GSARR[$GSADVANCEDHEADING + 4]}" + GSFORCECOMP="${GSARR[$GSADVANCEDHEADING + 5]}" + GSDEBUGHUD="${GSARR[$GSADVANCEDHEADING + 6]}" + GSFORCEHDRSUPPORT="${GSARR[$GSADVANCEDHEADING + 7]}" + GSFORCEHDROUTPUT="${GSARR[$GSADVANCEDHEADING + 8]}" + GSPREFERVKDEVICE="${GSARR[$GSADVANCEDHEADING + 9]}" + GSWAYLAND="${GSARR[$GSADVANCEDHEADING + 10]}" + GSRT="${GSARR[$GSADVANCEDHEADING + 11]}" + GSHDLS="${GSARR[$GSADVANCEDHEADING + 12]}" + USEGAMESCOPEWSI="${GSARR[$GSADVANCEDHEADING + 13]}" # Build the GameScope arguments string unset GAMESCOPE_ARGS @@ -11972,6 +11978,7 @@ function GameScopeGui { # EMBEDDED OPTIONS END ## ADVANCED OPTIONS ### + if [ ! "$GSBACKEND" == "auto" ] ; then GAMESCOPE_ARGS="${GAMESCOPE_ARGS} --backend ${GSBACKEND}"; fi # Don't pass GameScope Backend if left at "auto"; GameScope defaults to this anyway if [ ! "$GSDRMMODE" == "${GSDEF}" ] && [ -n "$GSDRMMODE" ] ; then GAMESCOPE_ARGS="${GAMESCOPE_ARGS} --generate-drm-mode ${GSDRMMODE}"; fi # Don't pass DRM mode if "default" if [ -d "$GSSTATSPATH" ] && [ "$GSSTATSPATHENABLE" == "TRUE" ] ; then GAMESCOPE_ARGS="${GAMESCOPE_ARGS} --stats-path '${GSSTATSPATH}'"; fi if [ ! "$GSHIDECURSORDELAY" == "0" ] ; then GAMESCOPE_ARGS="${GAMESCOPE_ARGS} -C ${GSHIDECURSORDELAY}"; fi # Ignore cursor delay if it's 0 From 30b665d660cc50b136c4e38166fad33483ac1c6d Mon Sep 17 00:00:00 2001 From: Eamonn Rea Date: Tue, 3 Sep 2024 23:32:51 +0100 Subject: [PATCH 2/3] update langfiles --- lang/chinese.txt | 2 ++ lang/dutch.txt | 2 ++ lang/englishUK.txt | 2 ++ lang/french.txt | 2 ++ lang/german.txt | 2 ++ lang/italian.txt | 2 ++ lang/polish.txt | 2 ++ lang/russian.txt | 2 ++ steamtinkerlaunch | 2 +- 9 files changed, 17 insertions(+), 1 deletion(-) diff --git a/lang/chinese.txt b/lang/chinese.txt index 18796d14..bbc7918d 100644 --- a/lang/chinese.txt +++ b/lang/chinese.txt @@ -1291,3 +1291,5 @@ GUI_CUSTOMCMD_USESLR="Use Steam Linux Runtime with Custom Command" DESC_CUSTOMCMD_USESLR="runs Custom Commands in the Steam Linux Runtime container that games use to improve compatibility, particularly for commands running via Proton (but it works for native commands as well). This option might get in the way of inter-process communication (i.e. an app that looks for a game process) and may be unnecessary for Linux shell scripts" GUI_MO2SILENTMODEEXEOVERRIDE="Override ModOrganizer 2 Silent Mode Executable Configuration" DESC_MO2SILENTMODEEXEOVERRIDE="use a different executable configuration in Silent Mode (i.e. launch 'SKSE64' instead of 'Skyrim Special Edition') -- When 'none' by default, ModOrganizer 2 will launch the configuation matching the name of the INI (i.e. Skyrim Special Edition)" +GUI_GSBACKEND="Rendering Backend" +DESC_GSBACKEND="rendering backend for GameScope to use -- Defaults to 'auto' which selects based on environment (e.g., 'sdl' on X11, 'wayland' on Wayland)" diff --git a/lang/dutch.txt b/lang/dutch.txt index e9a81e36..3f5d5c10 100644 --- a/lang/dutch.txt +++ b/lang/dutch.txt @@ -1288,3 +1288,5 @@ GUI_CUSTOMCMD_USESLR="Use Steam Linux Runtime with Custom Command" DESC_CUSTOMCMD_USESLR="runs Custom Commands in the Steam Linux Runtime container that games use to improve compatibility, particularly for commands running via Proton (but it works for native commands as well). This option might get in the way of inter-process communication (i.e. an app that looks for a game process) and may be unnecessary for Linux shell scripts" GUI_MO2SILENTMODEEXEOVERRIDE="Override ModOrganizer 2 Silent Mode Executable Configuration" DESC_MO2SILENTMODEEXEOVERRIDE="use a different executable configuration in Silent Mode (i.e. launch 'SKSE64' instead of 'Skyrim Special Edition') -- When 'none' by default, ModOrganizer 2 will launch the configuation matching the name of the INI (i.e. Skyrim Special Edition)" +GUI_GSBACKEND="Rendering Backend" +DESC_GSBACKEND="rendering backend for GameScope to use -- Defaults to 'auto' which selects based on environment (e.g., 'sdl' on X11, 'wayland' on Wayland)" diff --git a/lang/englishUK.txt b/lang/englishUK.txt index 96119ccf..4b5cf963 100644 --- a/lang/englishUK.txt +++ b/lang/englishUK.txt @@ -1292,3 +1292,5 @@ GUI_CUSTOMCMD_USESLR="Use Steam Linux Runtime with Custom Command" DESC_CUSTOMCMD_USESLR="runs Custom Commands in the Steam Linux Runtime container that games use to improve compatibility, particularly for commands running via Proton (but it works for native commands as well). This option might get in the way of inter-process communication (i.e. an app that looks for a game process) and may be unnecessary for Linux shell scripts" GUI_MO2SILENTMODEEXEOVERRIDE="Override ModOrganizer 2 Silent Mode Executable Configuration" DESC_MO2SILENTMODEEXEOVERRIDE="use a different executable configuration in Silent Mode (i.e. launch 'SKSE64' instead of 'Skyrim Special Edition') -- When 'none' by default, ModOrganizer 2 will launch the configuation matching the name of the INI (i.e. Skyrim Special Edition)" +GUI_GSBACKEND="Rendering Backend" +DESC_GSBACKEND="rendering backend for GameScope to use -- Defaults to 'auto' which selects based on environment (e.g., 'sdl' on X11, 'wayland' on Wayland)" diff --git a/lang/french.txt b/lang/french.txt index cb16b9db..6ad8f90f 100644 --- a/lang/french.txt +++ b/lang/french.txt @@ -1289,3 +1289,5 @@ GUI_CUSTOMCMD_USESLR="Use Steam Linux Runtime with Custom Command" DESC_CUSTOMCMD_USESLR="runs Custom Commands in the Steam Linux Runtime container that games use to improve compatibility, particularly for commands running via Proton (but it works for native commands as well). This option might get in the way of inter-process communication (i.e. an app that looks for a game process) and may be unnecessary for Linux shell scripts" GUI_MO2SILENTMODEEXEOVERRIDE="Override ModOrganizer 2 Silent Mode Executable Configuration" DESC_MO2SILENTMODEEXEOVERRIDE="use a different executable configuration in Silent Mode (i.e. launch 'SKSE64' instead of 'Skyrim Special Edition') -- When 'none' by default, ModOrganizer 2 will launch the configuation matching the name of the INI (i.e. Skyrim Special Edition)" +GUI_GSBACKEND="Rendering Backend" +DESC_GSBACKEND="rendering backend for GameScope to use -- Defaults to 'auto' which selects based on environment (e.g., 'sdl' on X11, 'wayland' on Wayland)" diff --git a/lang/german.txt b/lang/german.txt index 51b4b06b..41220d74 100644 --- a/lang/german.txt +++ b/lang/german.txt @@ -1292,3 +1292,5 @@ GUI_CUSTOMCMD_USESLR="Use Steam Linux Runtime with Custom Command" DESC_CUSTOMCMD_USESLR="runs Custom Commands in the Steam Linux Runtime container that games use to improve compatibility, particularly for commands running via Proton (but it works for native commands as well). This option might get in the way of inter-process communication (i.e. an app that looks for a game process) and may be unnecessary for Linux shell scripts" GUI_MO2SILENTMODEEXEOVERRIDE="Override ModOrganizer 2 Silent Mode Executable Configuration" DESC_MO2SILENTMODEEXEOVERRIDE="use a different executable configuration in Silent Mode (i.e. launch 'SKSE64' instead of 'Skyrim Special Edition') -- When 'none' by default, ModOrganizer 2 will launch the configuation matching the name of the INI (i.e. Skyrim Special Edition)" +GUI_GSBACKEND="Rendering Backend" +DESC_GSBACKEND="rendering backend for GameScope to use -- Defaults to 'auto' which selects based on environment (e.g., 'sdl' on X11, 'wayland' on Wayland)" diff --git a/lang/italian.txt b/lang/italian.txt index fec8eac3..0df9f33a 100644 --- a/lang/italian.txt +++ b/lang/italian.txt @@ -1290,3 +1290,5 @@ GUI_CUSTOMCMD_USESLR="Use Steam Linux Runtime with Custom Command" DESC_CUSTOMCMD_USESLR="runs Custom Commands in the Steam Linux Runtime container that games use to improve compatibility, particularly for commands running via Proton (but it works for native commands as well). This option might get in the way of inter-process communication (i.e. an app that looks for a game process) and may be unnecessary for Linux shell scripts" GUI_MO2SILENTMODEEXEOVERRIDE="Override ModOrganizer 2 Silent Mode Executable Configuration" DESC_MO2SILENTMODEEXEOVERRIDE="use a different executable configuration in Silent Mode (i.e. launch 'SKSE64' instead of 'Skyrim Special Edition') -- When 'none' by default, ModOrganizer 2 will launch the configuation matching the name of the INI (i.e. Skyrim Special Edition)" +GUI_GSBACKEND="Rendering Backend" +DESC_GSBACKEND="rendering backend for GameScope to use -- Defaults to 'auto' which selects based on environment (e.g., 'sdl' on X11, 'wayland' on Wayland)" diff --git a/lang/polish.txt b/lang/polish.txt index a87d34d0..8d09c1c6 100644 --- a/lang/polish.txt +++ b/lang/polish.txt @@ -1290,3 +1290,5 @@ GUI_CUSTOMCMD_USESLR="Use Steam Linux Runtime with Custom Command" DESC_CUSTOMCMD_USESLR="runs Custom Commands in the Steam Linux Runtime container that games use to improve compatibility, particularly for commands running via Proton (but it works for native commands as well). This option might get in the way of inter-process communication (i.e. an app that looks for a game process) and may be unnecessary for Linux shell scripts" GUI_MO2SILENTMODEEXEOVERRIDE="Override ModOrganizer 2 Silent Mode Executable Configuration" DESC_MO2SILENTMODEEXEOVERRIDE="use a different executable configuration in Silent Mode (i.e. launch 'SKSE64' instead of 'Skyrim Special Edition') -- When 'none' by default, ModOrganizer 2 will launch the configuation matching the name of the INI (i.e. Skyrim Special Edition)" +GUI_GSBACKEND="Rendering Backend" +DESC_GSBACKEND="rendering backend for GameScope to use -- Defaults to 'auto' which selects based on environment (e.g., 'sdl' on X11, 'wayland' on Wayland)" diff --git a/lang/russian.txt b/lang/russian.txt index a76ee999..c1114f35 100644 --- a/lang/russian.txt +++ b/lang/russian.txt @@ -1290,3 +1290,5 @@ GUI_CUSTOMCMD_USESLR="Use Steam Linux Runtime with Custom Command" DESC_CUSTOMCMD_USESLR="runs Custom Commands in the Steam Linux Runtime container that games use to improve compatibility, particularly for commands running via Proton (but it works for native commands as well). This option might get in the way of inter-process communication (i.e. an app that looks for a game process) and may be unnecessary for Linux shell scripts" GUI_MO2SILENTMODEEXEOVERRIDE="Override ModOrganizer 2 Silent Mode Executable Configuration" DESC_MO2SILENTMODEEXEOVERRIDE="use a different executable configuration in Silent Mode (i.e. launch 'SKSE64' instead of 'Skyrim Special Edition') -- When 'none' by default, ModOrganizer 2 will launch the configuation matching the name of the INI (i.e. Skyrim Special Edition)" +GUI_GSBACKEND="Rendering Backend" +DESC_GSBACKEND="rendering backend for GameScope to use -- Defaults to 'auto' which selects based on environment (e.g., 'sdl' on X11, 'wayland' on Wayland)" diff --git a/steamtinkerlaunch b/steamtinkerlaunch index d722d817..2ce2bddf 100755 --- a/steamtinkerlaunch +++ b/steamtinkerlaunch @@ -7,7 +7,7 @@ PREFIX="/usr" PROGNAME="SteamTinkerLaunch" NICEPROGNAME="Steam Tinker Launch" -PROGVERS="v14.0.20240904-1 (gamescope-backend-flag)" +PROGVERS="v14.0.20240904-2 (gamescope-backend-flag)" PROGCMD="${0##*/}" PROGINTERNALPROTNAME="Proton-stl" SHOSTL="stl" From 6bff160496e5bd981104c9798f64904d22974764 Mon Sep 17 00:00:00 2001 From: Eamonn Rea Date: Tue, 3 Sep 2024 23:41:24 +0100 Subject: [PATCH 3/3] version bump --- steamtinkerlaunch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/steamtinkerlaunch b/steamtinkerlaunch index 2ce2bddf..4a432e72 100755 --- a/steamtinkerlaunch +++ b/steamtinkerlaunch @@ -7,7 +7,7 @@ PREFIX="/usr" PROGNAME="SteamTinkerLaunch" NICEPROGNAME="Steam Tinker Launch" -PROGVERS="v14.0.20240904-2 (gamescope-backend-flag)" +PROGVERS="v14.0.20240903-2" PROGCMD="${0##*/}" PROGINTERNALPROTNAME="Proton-stl" SHOSTL="stl"