diff --git a/steamtinkerlaunch b/steamtinkerlaunch
index b2239996..de53e789 100755
--- a/steamtinkerlaunch
+++ b/steamtinkerlaunch
@@ -7,7 +7,7 @@
PREFIX="/usr"
PROGNAME="SteamTinkerLaunch"
NICEPROGNAME="Steam Tinker Launch"
-PROGVERS="v14.0.20240316-3"
+PROGVERS="v14.0.20240317-1"
PROGCMD="${0##*/}"
PROGINTERNALPROTNAME="Proton-stl"
SHOSTL="stl"
@@ -2526,6 +2526,8 @@ function setCustomGameVars {
fi
}
+# TODO: This does not work on Wayland!
+# Add logging and update langfiles
function prepareGUI {
WINDECO="--undecorated"
if [ -n "$USEWINDECO" ]; then
@@ -4298,7 +4300,7 @@ function needNewProton {
writelog "INFO" "${FUNCNAME[0]} - No Proton Version was found - opening a requester to choose from one"
createProtonList
- PICKPROTON="$("$YAD" --f1-action="$F1ACTION" --window-icon="$STLICON" --center $WINDECO --form --scroll --separator="\n" --quoted-output \
+ PICKPROTON="$("$YAD" --f1-action="$F1ACTION" --window-icon="$STLICON" --center "$WINDECO" --form --scroll --separator="\n" --quoted-output \
--text="$(spanFont "$GUI_NEEDNEWPROTON" "H")" \
--field="$GUI_NEEDNEWPROTON2":CB "$(cleanDropDown "${USEPROTON/#-/ -}" "$PROTYADLIST")" \
--title="$TITLE" "$GEOM")"
@@ -4465,7 +4467,7 @@ function dlCustomProtonGUI {
DLPROTON="${ProtonDLDispList[0]}"
fi
- DLDISPCUSTPROT="$("$YAD" --f1-action="$F1ACTION" --window-icon="$STLICON" --form --center --on-top $WINDECO \
+ DLDISPCUSTPROT="$("$YAD" --f1-action="$F1ACTION" --window-icon="$STLICON" --form --center --on-top "$WINDECO" \
--title="$TITLE" \
--text="$(spanFont "$GUI_DLCUSTPROTTEXT" "H")" \
--field=" ":LBL " " --separator="" \
@@ -4780,7 +4782,7 @@ function addCustomProton {
TITLE="${PROGNAME}-AddCustomProton"
pollWinRes "$TITLE"
- NEWCUSTPROT="$("$YAD" --f1-action="$F1ACTION" --window-icon="$STLICON" --form --center --on-top $WINDECO \
+ NEWCUSTPROT="$("$YAD" --f1-action="$F1ACTION" --window-icon="$STLICON" --form --center --on-top "$WINDECO" \
--title="$TITLE" \
--text="$(spanFont "$GUI_ADDCUSTOMBINARY" "H")" \
--field=" ":LBL " " \
@@ -5163,7 +5165,7 @@ function EditorDialog {
setShowPic
EDFILES="$(while read -r f; do echo "FALSE"; echo "$f"; done <<< "$(printf "%s\n" "${CfgFiles[@]}" | sort -u)" | \
- "$YAD" --f1-action="$F1ACTION" --image "$SHOWPIC" --image-on-top --window-icon="$STLICON" --center $WINDECO --list --checklist --column=Edit --column=ConfigFile --separator="\n" --print-column="2" \
+ "$YAD" --f1-action="$F1ACTION" --image "$SHOWPIC" --image-on-top --window-icon="$STLICON" --center "$WINDECO" --list --checklist --column=Edit --column=ConfigFile --separator="\n" --print-column="2" \
--text="$(spanFont "$(strFix "$GUI_EDITORDIALOG" "$SGNAID")" "H")" --title="$TITLE" --button="$BUT_EDIT":0 --button="$BUT_HIDE":2 --button="$BUT_OD":4 --button="$BUT_DEL":6 --button="$BUT_CAN":8 "$GEOM")"
case $? in
0) {
@@ -5619,27 +5621,27 @@ function AllSettingsEntriesDummyFunction {
--field=" $GUI_SGDBSTYLES!$DESC_SGDBSTYLES ('SGDBHEROSTYLES')":CBE "$(cleanDropDown "${SGDBHEROSTYLES/#-/ -}" "${SGDBHEROSTYLEOPTS//,/\!}")" `#CAT_SteamGridDB` `#MENU_GLOBAL` \
--field=" $GUI_SGDBNSFW!$DESC_SGDBNSFW ('SGDBHERONSFW')":CBE "$(cleanDropDown "${SGDBHERONSFW/#-/ -}" "${SGDBTAGOPTS}")" `#CAT_SteamGridDB` `#MENU_GLOBAL` \
--field=" $GUI_SGDBHUMOR!$DESC_SGDBHUMOR ('SGDBHEROHUMOR')":CBE "$(cleanDropDown "${SGDBHEROHUMOR/#-/ -}" "${SGDBTAGOPTS}")" `#CAT_SteamGridDB` `#MENU_GLOBAL` \
---field=" $GUI_SGDBEPILEPSY!$DESC_SGDBEPILEPSY ('SGDBHEROEPILEPSY')":CBE "$(cleanDropDown ${SGDBHEROEPILEPSY/#-/ -} "$SGDBTAGOPTS")" `#CAT_SteamGridDB` `#MENU_GLOBAL` \
+--field=" $GUI_SGDBEPILEPSY!$DESC_SGDBEPILEPSY ('SGDBHEROEPILEPSY')":CBE "$(cleanDropDown "${SGDBHEROEPILEPSY/#-/ -}" "$SGDBTAGOPTS")" `#CAT_SteamGridDB` `#MENU_GLOBAL` \
--field=" $GUI_SGDBDLLOGO!$DESC_SGDBDLLOGO ('SGDBDLLOGO')":CHK "${SGDBDLLOGO/#-/ -}" `#CAT_SteamGridDB` `#MENU_GLOBAL` \
--field=" $GUI_SGDBTYPES!$DESC_SGDBTYPES ('SGDBLOGOTYPES')":CBE "$(cleanDropDown "${SGDBLOGOTYPES/#-/ -}" "${SGDBTYPEOPTS}")" `#CAT_SteamGridDB` `#MENU_GLOBAL` \
--field=" $GUI_SGDBSTYLES!$DESC_SGDBSTYLES ('SGDBLOGOSTYLES')":CBE "$(cleanDropDown "${SGDBLOGOSTYLES/#-/ -}" "${SGDBLOGOSTYLEOPTS//,/\!}")" `#CAT_SteamGridDB` `#MENU_GLOBAL` \
--field=" $GUI_SGDBNSFW!$DESC_SGDBNSFW ('SGDBLOGONSFW')":CBE "$(cleanDropDown "${SGDBLOGONSFW/#-/ -}" "${SGDBTAGOPTS}")" `#CAT_SteamGridDB` `#MENU_GLOBAL` \
--field=" $GUI_SGDBHUMOR!$DESC_SGDBHUMOR ('SGDBLOGOHUMOR')":CBE "$(cleanDropDown "${SGDBLOGOHUMOR/#-/ -}" "${SGDBTAGOPTS}")" `#CAT_SteamGridDB` `#MENU_GLOBAL` \
---field=" $GUI_SGDBEPILEPSY!$DESC_SGDBEPILEPSY ('SGDBLOGOEPILEPSY')":CBE "$(cleanDropDown ${SGDBLOGOEPILEPSY/#-/ -} "$SGDBTAGOPTS")" `#CAT_SteamGridDB` `#MENU_GLOBAL` \
+--field=" $GUI_SGDBEPILEPSY!$DESC_SGDBEPILEPSY ('SGDBLOGOEPILEPSY')":CBE "$(cleanDropDown "${SGDBLOGOEPILEPSY/#-/ -}" "$SGDBTAGOPTS")" `#CAT_SteamGridDB` `#MENU_GLOBAL` \
--field=" $GUI_SGDBDLBOXART!$DESC_SGDBDLBOXART ('SGDBDLBOXART')":CHK "${SGDBDLBOXART/#-/ -}" `#CAT_SteamGridDB` `#MENU_GLOBAL` \
--field=" $GUI_SGDBDIMS!$DESC_SGDBDIMS ('SGDBBOXARTDIMS')":CBE "$(cleanDropDown "${SGDBBOXARTDIMS/#-/ -}" "${DEFSGDBBOXARTDIMS//,/\!}")" `#CAT_SteamGridDB` `#MENU_GLOBAL` \
--field=" $GUI_SGDBTYPES!$DESC_SGDBTYPES ('SGDBBOXARTTYPES')":CBE "$(cleanDropDown "${SGDBBOXARTTYPES/#-/ -}" "${SGDBTYPEOPTS}")" `#CAT_SteamGridDB` `#MENU_GLOBAL` \
--field=" $GUI_SGDBSTYLES!$DESC_SGDBSTYLES ('SGDBBOXARTSTYLES')":CBE "$(cleanDropDown "${SGDBBOXARTSTYLES/#-/ -}" "${SGDBGRIDSTYLEOPTS//,/\!}")" `#CAT_SteamGridDB` `#MENU_GLOBAL` \
--field=" $GUI_SGDBNSFW!$DESC_SGDBNSFW ('SGDBBOXARTNSFW')":CBE "$(cleanDropDown "${SGDBBOXARTNSFW/#-/ -}" "${SGDBTAGOPTS}")" `#CAT_SteamGridDB` `#MENU_GLOBAL` \
--field=" $GUI_SGDBHUMOR!$DESC_SGDBHUMOR ('SGDBBOXARTHUMOR')":CBE "$(cleanDropDown "${SGDBBOXARTHUMOR/#-/ -}" "${SGDBTAGOPTS}")" `#CAT_SteamGridDB` `#MENU_GLOBAL` \
---field=" $GUI_SGDBEPILEPSY!$DESC_SGDBEPILEPSY ('SGDBBOXARTEPILEPSY')":CBE "$(cleanDropDown ${SGDBBOXARTEPILEPSY/#-/ -} "$SGDBTAGOPTS")" `#CAT_SteamGridDB` `#MENU_GLOBAL` \
+--field=" $GUI_SGDBEPILEPSY!$DESC_SGDBEPILEPSY ('SGDBBOXARTEPILEPSY')":CBE "$(cleanDropDown "${SGDBBOXARTEPILEPSY/#-/ -}" "$SGDBTAGOPTS")" `#CAT_SteamGridDB` `#MENU_GLOBAL` \
--field=" $GUI_SGDBDLTENFOOT!$DESC_SGDBDLTENFOOT ('SGDBDLTENFOOT')":CHK "${SGDBDLTENFOOT/#-/ -}" `#CAT_SteamGridDB` `#MENU_GLOBAL` \
--field=" $GUI_SGDBDIMS!$DESC_SGDBDIMS ('SGDBTENFOOTDIMS')":CBE "$(cleanDropDown "${SGDBTENFOOTDIMS/#-/ -}" "${DEFSGDBTENFOOTDIMS//,/\!}")" `#CAT_SteamGridDB` `#MENU_GLOBAL` \
--field=" $GUI_SGDBTYPES!$DESC_SGDBTYPES ('SGDBTENFOOTTYPES')":CBE "$(cleanDropDown "${SGDBTENFOOTTYPES/#-/ -}" "${SGDBTYPEOPTS}")" `#CAT_SteamGridDB` `#MENU_GLOBAL` \
--field=" $GUI_SGDBSTYLES!$DESC_SGDBSTYLES ('SGDBTENFOOTSTYLES')":CBE "$(cleanDropDown "${SGDBTENFOOTSTYLES/#-/ -}" "${SGDBTNFTSTYLEOPTS//,/\!}")" `#CAT_SteamGridDB` `#MENU_GLOBAL` \
--field=" $GUI_SGDBNSFW!$DESC_SGDBNSFW ('SGDBTENFOOTNSFW')":CBE "$(cleanDropDown "${SGDBTENFOOTNSFW/#-/ -}" "${SGDBTAGOPTS}")" `#CAT_SteamGridDB` `#MENU_GLOBAL` \
--field=" $GUI_SGDBHUMOR!$DESC_SGDBHUMOR ('SGDBTENFOOTHUMOR')":CBE "$(cleanDropDown "${SGDBTENFOOTHUMOR/#-/ -}" "${SGDBTAGOPTS}")" `#CAT_SteamGridDB` `#MENU_GLOBAL` \
---field=" $GUI_SGDBEPILEPSY!$DESC_SGDBEPILEPSY ('SGDBTENFOOTEPILEPSY')":CBE "$(cleanDropDown ${SGDBTENFOOTEPILEPSY/#-/ -} "$SGDBTAGOPTS")" `#CAT_SteamGridDB` `#MENU_GLOBAL` \
+--field=" $GUI_SGDBEPILEPSY!$DESC_SGDBEPILEPSY ('SGDBTENFOOTEPILEPSY')":CBE "$(cleanDropDown "${SGDBTENFOOTEPILEPSY/#-/ -}" "$SGDBTAGOPTS")" `#CAT_SteamGridDB` `#MENU_GLOBAL` \
--field="$(spanFont "$GUI_OPTSHMM" "H")":LBL "SKIP" `#CAT_HMM` `#HEAD_HMM` `#MENU_GLOBAL` \
--field=" $GUI_HMMDLVER!$DESC_HMMDLVER ('HMMDLVER')":CB "$(cleanDropDown "${HMMDLVER/#-/ -}" "$HMMSTABLE!$HMMDEV")" `#CAT_HMM` `#MENU_GLOBAL` \
--field=" $GUI_HMMCOMPDATA!$DESC_HMMCOMPDATA ('HMMCOMPDATA')":DIR "${HMMCOMPDATA/#-/ -}" `#CAT_HMM` `#SUB_Directories` `#MENU_GLOBAL` \
@@ -6067,7 +6069,7 @@ function openCustMenu {
{
echo "function $MYFUNC {"
echo "\"$YAD\" --columns=\"$COLCOUNT\" --f1-action=\"$F1ACTIONCG\" --text=\"$(spanFont "$MYTEXT" "H")\" \\"
- echo "--title=\"$TITLE\" --image \"$FAVPIC\" --image-on-top --window-icon=\"$STLICON\" --center $WINDECO --form --separator=\"\\n\" --quoted-output \\"
+ echo "--title=\"$TITLE\" --image \"$FAVPIC\" --image-on-top --window-icon=\"$STLICON\" --center \"$WINDECO\" --form --separator=\"\\n\" --quoted-output \\"
echo "--button=\"$BUT0\":0 --button=\"$BUT2\":2 --button=\"$BUT4\":4 --button=\"$BUT6\":6 --button=\"$BUT8\":8 --button=\"$BUT10\":10 $GEOM \\"
cat "$MYTMPL"
echo "--scroll"
@@ -6147,7 +6149,7 @@ function setGuiSortOrder {
NEWSORT="$("$YAD" --f1-action="$F1ACTION" --window-icon="$STLICON" --center --on-top "$WINDECO" \
--list --editable --column "Category" --separator="" --print-all \
- --title="$TITLE" --text="$(spanFont "$GUI_SORTCAT" "H")" $GEOM < "$STLMENUSORTCFG")"
+ --title="$TITLE" --text="$(spanFont "$GUI_SORTCAT" "H")" "$GEOM" < "$STLMENUSORTCFG")"
case $? in
0) {
writelog "INFO" "${FUNCNAME[0]} - Clicked OK - Saving new sortorder into '$STLMENUSORTCFG'"
@@ -6169,7 +6171,7 @@ function setGuiFavoritesSelection {
setShowPic
FAVENTRIES="$(favoritesMenuEntries | \
- "$YAD" --f1-action="$F1ACTION" --image "$SHOWPIC" --image-on-top --window-icon="$STLICON" --center $WINDECO --list --checklist \
+ "$YAD" --f1-action="$F1ACTION" --image "$SHOWPIC" --image-on-top --window-icon="$STLICON" --center "$WINDECO" --list --checklist \
--column="$GUI_ADD" --column="$GUI_DESC" --column="$GUI_VAR" --column="LongDesc" --separator="\n" --print-column="3" --tooltip-column 4 --hide-column 4 \
--text="$(spanFont "$GUI_FAVORITESSEL" "H")" --title="$TITLE" "$GEOM")"
case $? in
@@ -6252,7 +6254,7 @@ function setGuiCategoryMenuSel {
CATDD="$(cleanDropDown "${GCD}" "$(getCatsFromCode | tr '\n' '!' | sed "s:^!::" | sed "s:!$::")")"
- SELECTCAT="$("$YAD" --f1-action="$F1ACTION" --image "$SHOWPIC" --image-on-top --window-icon="$STLICON" --center $WINDECO --form --separator="\n" \
+ SELECTCAT="$("$YAD" --f1-action="$F1ACTION" --image "$SHOWPIC" --image-on-top --window-icon="$STLICON" --center "$WINDECO" --form --separator="\n" \
--text="$(spanFont "$(strFix "$GUI_CATSEL" "$PROGNAME")" "H")" \
--title="$TITLE" --field=" $GUI_CAT!$(strFix "$GUI_CATSEL" "$PROGNAME")":CB "$CATDD" "$GEOM")"
case $? in
@@ -7784,10 +7786,10 @@ function listSteamGames {
# Only display game dir if the game is installed, i.e. if getGameDir does not return 1
# This means we won't return an error if we're returning OWNED games, as some owned games may not have paths
- if [ $GAMDIREXISTS -eq 1 ]; then
+ if [ "$GAMDIREXISTS" -eq 1 ]; then
GAMNAM="$( getTitleFromID "$AID" )"
GAMNAMEXISTS=$?
- if [ $GAMNAMEXISTS -eq 1 ]; then
+ if [ "$GAMNAMEXISTS" -eq 1 ]; then
echo "$AID" # Game name unknown, probably never installed before? Just return AppID in this case
else
echo "$GAMNAM ($AID)"
@@ -9701,7 +9703,7 @@ function removeReShadeSpecialKInstallation {
# INI file
if [ "$KEEPRESHADEINI" -eq 1 ]; then
- rmFileIfExists ""$INSTDESTDIR/$RSINI""
+ rmFileIfExists "$INSTDESTDIR/$RSINI"
fi
}
@@ -9778,11 +9780,13 @@ function createReShadeINI {
writelog "INFO" "${FUNCNAME[0]} - Re-enabling previously disabled '$FRSOINI'"
mv "$FRSOINI" "$FRSINI"
else
+ # This used to use echo but was changed to use printf to address ShellCheck SC2028
+ # In testing using both echo and printf produced the same string result, but if this causes issues we can re-evaluate
writelog "INFO" "${FUNCNAME[0]} - Creating initial '$FRSINI' with default paths pointing to '$RSSUB'"
{
echo "[GENERAL]"
- echo "EffectSearchPaths=.\\$RSSUB\Shaders"
- echo "TextureSearchPaths=.\\$RSSUB\Textures"
+ printf "EffectSearchPaths=.\\%s\Shaders\n" "$RSSUB"
+ printf "TextureSearchPaths=.\\%s\Textures\n" "$RSSUB"
echo "PreprocessorDefinitions=RESHADE_DEPTH_LINEARIZATION_FAR_PLANE=1000.0,RESHADE_DEPTH_INPUT_IS_UPSIDE_DOWN=0,RESHADE_DEPTH_INPUT_IS_REVERSED=1,RESHADE_DEPTH_INPUT_IS_LOGARITHMIC=0"
} > "$FRSINI"
fi
@@ -11423,7 +11427,7 @@ function GameScopeGui {
setGameScopeVars # Get values for UI elements below
# GameScope Yad options form
- GASCOS="$("$YAD" --f1-action="$F1ACTION" --image "$SHOWPIC" --image-on-top --scroll --window-icon="$STLICON" --form --center --on-top $WINDECO \
+ GASCOS="$("$YAD" --f1-action="$F1ACTION" --image "$SHOWPIC" --image-on-top --scroll --window-icon="$STLICON" --form --center --on-top "$WINDECO" \
--title="$TITLE" --separator="|" \
--text="$(spanFont "$(strFix "$GUI_GASCOSET" "$SGNAID")" "H")" \
--field="$(spanFont "$GUI_GSGENERALSET" "H")":LBL "SKIP" \
@@ -11804,7 +11808,7 @@ function StandaloneProtonGame {
IN_SAP_COMPAT_DATA_PATH="$SAP_COMPAT_DATA_PATH"
fi
- PROTPARTS="$("$YAD" --f1-action="$F1ACTION" --window-icon="$STLICON" --form --center --on-top $WINDECO \
+ PROTPARTS="$("$YAD" --f1-action="$F1ACTION" --window-icon="$STLICON" --form --center --on-top "$WINDECO" \
--title="$TITLE" \
--text="$(spanFont "$GUI_SAPTEXT" "H")" \
--field=" ":LBL " " --separator="|" \
@@ -12292,7 +12296,7 @@ function OneTimeRunGui {
fi
# TODO GUI looks weird because of uneven number of checkboxes, but this will be fixed once we add a checkbox for Steam Linux Runtime as well
- OTCMDS="$("$YAD" --f1-action="$F1ACTION" --image "$SHOWPIC" --image-on-top --window-icon="$STLICON" --form --center --on-top $WINDECO \
+ OTCMDS="$("$YAD" --f1-action="$F1ACTION" --image "$SHOWPIC" --image-on-top --window-icon="$STLICON" --form --center --on-top "$WINDECO" \
--title="$TITLE" --separator="|" \
--columns="2" \
--text="$(spanFont "$GUI_ONETIMERUN" "H")" \
@@ -12885,7 +12889,7 @@ function GameFilesMenu {
setShowPic
OPFILES="$(for i in "${!GamFiles[@]}"; do printf "FALSE\n%s\n%s\n" "${GamDesc[$i]}" "${GamFiles[$i]}"; done | \
- "$YAD" --f1-action="$F1ACTION" --image "$SHOWPIC" --image-on-top --window-icon="$STLICON" --center $WINDECO --list --checklist --column=Open --column=Description --column=Path --separator="\n" --print-column="3" \
+ "$YAD" --f1-action="$F1ACTION" --image "$SHOWPIC" --image-on-top --window-icon="$STLICON" --center "$WINDECO" --list --checklist --column=Open --column=Description --column=Path --separator="\n" --print-column="3" \
--text="$(spanFont "$(strFix "$GUI_GAFIDIALOG" "$SGNAID")" "H")" --title="$TITLE" --button="$BUT_CAN:0" --button="$BUT_SELECT:2" "$GEOM")"
case $? in
0) writelog "INFO" "${FUNCNAME[0]} - Selected '$BUT_CAN' - Cancelling selection"
@@ -14207,7 +14211,7 @@ function chooseWinetricksPrefix {
WTPROTON="$USEPROTON"
fi
- WTCATPFX="$("$YAD" --f1-action="$F1ACTION" --image "$SHOWPIC" --image-on-top --window-icon="$STLICON" --form --center --on-top $WINDECO \
+ WTCATPFX="$("$YAD" --f1-action="$F1ACTION" --image "$SHOWPIC" --image-on-top --window-icon="$STLICON" --form --center --on-top "$WINDECO" \
--title="$TITLE" --separator=";" \
--text="$(spanFont "$GUI_CHOOSEWTCATPFX" "H")" \
--field=" ":LBL " " \
@@ -14870,7 +14874,7 @@ function setModGameSyms {
writelog "INFO" "${FUNCNAME[0]} - Game Dir is '$MEFD' - adding the windows variant into the registry, because it is required for this game"
grep -i -B2 "^\"installed path\"=" "$MSREG" | grep -v "^#\|LastKey\|CurrentVersion\|^--" | head -n1 | sed "s:^\[Software:\[HKEY_LOCAL_MACHINE\\\Software:" | sed "s:\\\\Wow6432Node::" >> "$MODGREG"
# the path could be grepped as well, but at least two games had the Steamworks Shared path in the reg value instead here
- echo "\"installed path\"=\"Z:${MEFD//\//\\\\}\\\\\"" >> "$MODGREG"
+ printf "\"installed path\"=\"Z:%s\\\\\"\n" "${MEFD//\//\\\\}" >> "$MODGREG"
else
writelog "SKIP" "${FUNCNAME[0]} - Game Dir '$MEFD' not found"
fi
@@ -15408,7 +15412,7 @@ function prepareHMMGames {
writelog "INFO" "${FUNCNAME[0]} - Checking if we need to apply any game-specific tweaks to improve mod compatibility"
prepareHMMGameWinetricks "$HMMGAID" "$HMMGPFX"
- done <$HMMGAMES
+ done <"$HMMGAMES"
echo "Finished configuring installed HedgeModManager games"
}
@@ -16919,7 +16923,7 @@ function installVortexGui {
GUI_VTXINST="$(printf '%s\n%s\n' "${GUI_VTXINST}" "Newest setup online: ${VSO}")"
fi
- VTXINSTARGS="$("$YAD" --f1-action="$F1ACTION" --image "$SHOWPIC" --image-on-top --window-icon="$STLICON" --form --center --on-top $WINDECO \
+ VTXINSTARGS="$("$YAD" --f1-action="$F1ACTION" --image "$SHOWPIC" --image-on-top --window-icon="$STLICON" --form --center --on-top "$WINDECO" \
--title="$TITLE" --separator="|" \
--text="$(spanFont "$GUI_VTXINST" "H")" \
--field="$GUI_USEVORTEXPROTON!$DESC_USEVORTEXPROTON ('USEVORTEXPROTON')":CB "$(cleanDropDown "$USEVORTEXPROTON" "$PROTYADLIST")" \
@@ -17311,7 +17315,7 @@ function listMO2Games {
MO2GAMAID="$( echo "$MO2GAM" | cut -d ";" -f 2 | cut -d '"' -f 2 )"
printf "%s (%s)\n" "$MO2GAMNAM" "$MO2GAMAID"
- done <$MO2GAMES
+ done <"$MO2GAMES"
}
function manageMO2GInstance {
@@ -17363,17 +17367,21 @@ function manageMO2GInstance {
MO2GAZDI="Z:${MO2GADI//\//\\\\}"
mkProjDir "$MOIN"
touch "$MOININI"
+ # This used to use `echo` but was changed because of ShellCheck SC2028
+ # The behaviour was different too, echo was returning '\\\\' but printf was returning '\\'
+ # Based on the rest of the paths, I think printf's '\\' is actually correct, but if this breaks anything,
+ # we can re-evaluate.
{
echo "[General]"
echo "gameName=$MO2GAMINI"
echo "selected_profile=@ByteArray(Default)"
echo "gamePath=@ByteArray($MO2GAZDI)"
echo "[Settings]"
- echo "download_directory=${GLOBZMOIN}\\\\downloads"
- echo "cache_directory=${GLOBZMOIN}\\\\webcache"
- echo "mod_directory=${GLOBZMOIN}\\\mods"
- echo "overwrite_directory=${GLOBZMOIN}\\\\overwrite"
- echo "profiles_directory=${GLOBZMOIN}\\\\profiles"
+ printf "download_directory=%s\\\\downloads\n" "${GLOBZMOIN}"
+ printf "cache_directory=%s\\\\webcache\n" "${GLOBZMOIN}"
+ printf "mod_directory=%s\\\mods\n" "${GLOBZMOIN}"
+ printf "overwrite_directory=%s\\\\overwrite\n" "${GLOBZMOIN}"
+ printf "profiles_directory=%s\\\\profiles\n" "${GLOBZMOIN}"
} >> "$MOININI"
MOINEW=1
else
@@ -19377,12 +19385,12 @@ function logPlayTime {
((m=(${1}%3600)/60))
((s=${1}%60))
- if [ $h -gt 0 ]; then
- printf "%02d hrs, %02d mins, %02d secs" $h $m $s
- elif [ $m -gt 0 ]; then
- printf "%02d mins, %02d secs" $m $s
+ if [ "$h" -gt 0 ]; then
+ printf "%02d hrs, %02d mins, %02d secs" "$h" "$m" "$s"
+ elif [ "$m" -gt 0 ]; then
+ printf "%02d mins, %02d secs" "$m" "$s"
else
- printf "%02d secs" $s
+ printf "%02d secs" "$s"
fi
}
@@ -20014,8 +20022,8 @@ function gameScopeArgs { # This implementation could be VASTLY improved!
INSERTARG=$((0)) # Which path arg to insert from the `GAMESCOPE_ARGPATHS` array
GAMESCOPEARGSARR_COPY=("${GAMESCOPEARGSARR[@]}")
for i in "${!GAMESCOPEARGSARR_COPY[@]}"; do
- if [[ "${GAMESCOPEARGSARR_COPY[$i]}" == *"'"* ]]; then
- GAMESCOPEARGSARR_COPY[$i]="${GAMESCOPE_ARGPATHS[${INSERTARG}]}"
+ if [[ "${GAMESCOPEARGSARR_COPY[i]}" == *"'"* ]]; then
+ GAMESCOPEARGSARR_COPY[i]="${GAMESCOPE_ARGPATHS[${INSERTARG}]}"
INSERTARG=$((INSERTARG + 1))
fi
done
@@ -20710,7 +20718,7 @@ function dlWineGUI {
DLWINE="${WineDLDispList[0]}"
fi
- DLDISPWINE="$("$YAD" --f1-action="$F1ACTION" --window-icon="$STLICON" --form --center --on-top $WINDECO \
+ DLDISPWINE="$("$YAD" --f1-action="$F1ACTION" --window-icon="$STLICON" --form --center --on-top "$WINDECO" \
--title="$TITLE" \
--text="$(spanFont "$GUI_DLWINETEXT" "H")" \
--field=" ":LBL " " \
@@ -20736,7 +20744,7 @@ function PickSpecificWine {
TITLE="${PROGNAME}-${FUNCNAME[0]}"
pollWinRes "$TITLE"
- SPECWINE="$("$YAD" --f1-action="$F1ACTION" --window-icon="$STLICON" --form --center --on-top $WINDECO \
+ SPECWINE="$("$YAD" --f1-action="$F1ACTION" --window-icon="$STLICON" --form --center --on-top "$WINDECO" \
--title="$TITLE" --separator="|" \
--text="$(spanFont "GUI_DLSPECWINE" "H")" \
--field=" ":LBL " " \
@@ -20878,7 +20886,7 @@ function WineSelection {
export CURWIKI="$PPW/Wine-Support"
TITLE="${PROGNAME}-SelectedWine"
pollWinRes "$TITLE"
- WINSEL="$("$YAD" --f1-action="$F1ACTION" --window-icon="$STLICON" --form --center --on-top $WINDECO \
+ WINSEL="$("$YAD" --f1-action="$F1ACTION" --window-icon="$STLICON" --form --center --on-top "$WINDECO" \
--title="$TITLE" \
--text="$(spanFont "$GUI_SELIWINE" "H")" \
--field=" ":LBL " " \
@@ -21640,7 +21648,7 @@ function launchSteamGame {
writelog "INFO" "${FUNCNAME[0]} - WAITFORCUSTOMCMD is enabled, so replacing $WFEAR with 'run' in'${FINALSTARTCMD[*]}'"
for i in "${!FINALSTARTCMD[@]}"; do
if [[ ${FINALSTARTCMD[$i]} == "$WFEAR" ]]; then
- FINALSTARTCMD[$i]="run"
+ FINALSTARTCMD[i]="run"
fi
done
fi
@@ -22374,6 +22382,11 @@ function commandline {
elif [ "$1" == "debug" ]; then
## Why are you looking here? :-)
+ # Don't let the user run the internal debug command
+ writelog "WARN" "${FUNCNAME[0]} - No debug for you!"
+ echo "No debug for you!"
+ return
+
# DEBUGNOSTAID="-222353304"
DEBUGTESTT="$( findSteamShortcutByAppID "3581081989" )"
@@ -23121,7 +23134,7 @@ function restoreSteamUser {
"$YAD" --f1-action="$F1ACTION" --image "$SHOWPIC" --image-on-top --window-icon="$STLICON" --center --on-top "$WINDECO" \
--title="$TITLE" \
- --text="$(spanFont "$(strFix "$GUI_AR" "$BACKUPSRC" "$SteamUserDir")" "H")\n$1" $GEOM
+ --text="$(spanFont "$(strFix "$GUI_AR" "$BACKUPSRC" "$SteamUserDir")" "H")\n$1" "$GEOM"
case $? in
0) {
writelog "INFO" "${FUNCNAME[0]} - Restoring '$SteamUserDir' from '$BACKUPSRC' confirmed"
@@ -23871,7 +23884,7 @@ function SteamCatSelect {
unset VALTAGS
mapfile -d "\n" -t -O "${#VALTAGS[@]}" VALTAGS <<< "$(getActiveSteamCollections | grep -v "^rt[A-Z]")"
SCATSELOUT="$(while read -r f; do if [[ ! "${SCATSEL[*]}" =~ $f ]]; then echo FALSE ; echo "$f"; else echo TRUE ; echo "$f" ;fi ; done <<< "$(printf "%s\n" "${VALTAGS[@]}")" | \
- "$YAD" --f1-action="$F1ACTION" --image "$SHOWPIC" --image-on-top --window-icon="$STLICON" --center $WINDECO --list --checklist --column="" --column="Steam Collection" --separator="\n" --print-column="2" \
+ "$YAD" --f1-action="$F1ACTION" --image "$SHOWPIC" --image-on-top --window-icon="$STLICON" --center "$WINDECO" --list --checklist --column="" --column="Steam Collection" --separator="\n" --print-column="2" \
--text="$(spanFont "$GUI_STEAMCATSEL" "H")" --title="$TITLE" --button="$BUT_SEL":0 --button="$BUT_CAN":2 "$GEOM")"
case $? in