Advertisement
Guest User

Untitled

a guest
Aug 23rd, 2019
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.00 KB | None | 0 0
  1. #!/bin/bash
  2. # draft, will be .git'd once finished.
  3.  
  4. echo "Users:"
  5. user=`grep PersonaName ~/.steam/steam/userdata/*/config/localconfig.vdf | \
  6. cut -d '"' -f4`
  7. echo $user
  8. echo
  9. usercfg=~/.steam/steam/userdata/*/config/localconfig.vdf
  10. steamapps=~/.steam/steam/steamapps
  11. folders=`grep BaseInstallFolder ~/.steam/steam/config/config.vdf | \
  12. cut -d '"' -f4`/steamapps
  13.  
  14. echo "========================="
  15. echo "> listing installed games"
  16. echo "========================="
  17. while true; do
  18. echo "[$steamapps]"
  19.  
  20. unset files i
  21.  
  22. # grab files
  23. while IFS= read -r -d $'\n' f; do
  24. files[i++]="$f";
  25. done < <(egrep \"name\" $steamapps/appmanifest_* | cut -d '"' -f4 | \
  26. egrep -v 'Proton|Steamworks' | sort)
  27.  
  28. # create select string
  29. shopt -s extglob # set shell extended globbing to use @(var1|var2)
  30. string="@(${files[0]}"
  31. for (( i=1 ; i < ${#files[@]}; i++ )); do
  32. string+="|${files[$i]}"
  33. done
  34. string+=")"
  35.  
  36. # create select menu
  37. PS3=$'\n'"> Select the game to trace: "
  38. select name in "${files[@]}"
  39. do
  40. case $name in
  41. $string) break ;;
  42. *) name=""; printf "\nShould be a number [1-$((${#files[@]}+1))]\n" ;;
  43. esac
  44. done
  45. manifest=`grep "$name" $steamapps/appmanifest_* | head -1 | cut -d ':' -f1`
  46. if [[ -z "$manifest" ]]; then
  47. manifest=`grep "$name" $folders/appmanifest_* | head -1 | cut -d ':' -f1`
  48. [ -z "$manifest" ] && echo "Bad paste, try again." || break;
  49. else
  50. break
  51. fi
  52. done
  53. dir=$steamapps/common/`grep \"installdir\" $manifest | cut -d '"' -f4`
  54. id=`grep \"appid\" $manifest | cut -d '"' -f4`
  55. echo "($id) $name: $dir"
  56. exit
  57. echo
  58. if [[ ! -d "$dir" ]]; then
  59. echo "[ERROR] Cannot find '$name' folder"
  60. read -p "> Do you want to validate '$name' files ?" yn
  61. case $yn in
  62. [Yy]*) xdg-open steam://validate/$id ;;
  63. [Nn]*) return 0 ;;
  64. esac
  65. exit
  66. fi
  67.  
  68. #echo "> config"
  69. #grep -A 6 $id $usercfg
  70. #echo
  71.  
  72. exes=`find "$dir" -iname *.exe | sed 's/\ /\\\ /g'`
  73. [ -z "$exes" ] && exit
  74. exes=`echo $exes | xargs file`
  75. if echo $exes | grep PE32+ >/dev/null; then
  76. arch=win64
  77. elif echo $exes | grep PE32 >/dev/null; then
  78. arch=win32
  79. else
  80. echo "Could not find ELF format"
  81. exit
  82. fi
  83.  
  84. cp $arch/* "$dir" && echo "> copied $arch DLLs to $dir"
  85. echo
  86. echo "NB: make sure the DLLs are in the same folder as the game .exe"
  87. find "$dir" -iname *.exe
  88.  
  89. echo
  90. echo "====================================="
  91. echo "> restarting Steam w/ logs + apitrace"
  92. echo "====================================="
  93. xdg-open steam://ExitSteam
  94. sleep 5
  95. export WINEDLLOVERRIDES="dxgi,dxgitrace,d3d11,d3d10,d3d9=n,b" PROTON_LOG=1
  96. echo "> run the game then close Steam to check the trace and log."
  97. steam >/dev/null 2>&1
  98.  
  99. echo
  100. echo "========================="
  101. echo "> digging out log + trace"
  102. echo "========================="
  103. echo
  104. echo "Once game exited, press a key to check logs/trace..." ; read -rsn1
  105.  
  106. trace="$steamapps/compatdata/$id/pfx/drive_c/users/steamuser/Desktop/*.trace"
  107. log=~/steam-$id*.log
  108. ls -l $trace
  109. ls -l $log
  110. less $log
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement