48 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/bash
 | |
| # Helper::Steam Compatibility Tools
 | |
| # Expects below formats (called directly from steam client, supports any ambiguous application through chainloading)
 | |
| # Launch current game while forcing native support (games steam doesn't list such feature for)
 | |
| # $this waitforexitandrun /full/path/to/steam/game/binary
 | |
| # Launch arbitrary EP process while emulating being a steam game in question (chainloading, may enable Remote Play Together etc.)
 | |
| # $this waitforexitandrun /full/path/to/steam/game/binary "ENTRYPOINTNAME" --cd "ACTUALWORKINGDIR" ..ALLENTRYPOINTARGUMENTS..
 | |
| _C_scriptName="$(basename -- "$(realpath -- "$0")")"
 | |
| _C_scriptDir="$(dirname -- "$(realpath -- "$0")")"
 | |
| 
 | |
| 
 | |
| # Support for generic native execution (no steam helpers support)
 | |
| [ "$1" = "waitforexitandrun" ] || exit 0
 | |
| args=("${@:2}")
 | |
| 
 | |
| # Support for routing arbitrary EP through current steam app (expects ep_* next to itself)
 | |
| argIndex=0
 | |
| for arg in "${args[@]}"; do
 | |
|   [[ "$arg" == "ep_"* ]] && break
 | |
|   ((argIndex++))
 | |
| done
 | |
| if [ "${#args[@]}" -ne "$argIndex" ]; then
 | |
|   # Set correct Entry Point
 | |
|   argSwap=("${args[@]}")
 | |
|   args=("$_C_scriptDir/${argSwap[$argIndex]}")
 | |
|   ((argIndex++))
 | |
|   
 | |
|   # Restore expected working directory (if any)
 | |
|   if [[ "${argSwap[$argIndex]}" == "--cd" ]]; then
 | |
|     ((argIndex++))
 | |
|     cd "${argSwap[$argIndex]}"
 | |
|     ((argIndex++))
 | |
|   fi
 | |
| 
 | |
|   # Set corrent args for Entry Point
 | |
|   args+=("${argSwap[@]:$argIndex}")
 | |
| fi
 | |
| 
 | |
| # for arg in "${args[@]}"; do
 | |
| #   echo "ARG: $arg"
 | |
| # done
 | |
| 
 | |
| # Execute requested command
 | |
| echo "Command routed as [steam://run/$STEAM_COMPAT_APP_ID]:"
 | |
| echo "cd $(pwd)"
 | |
| echo "exec ${args[@]}"
 | |
| exec "${args[@]}"
 |