Matoking / protontricks

A wrapper that does winetricks things for Proton enabled games, requires Winetricks.
GNU General Public License v3.0
1.64k stars 36 forks source link

protontricks not working #241

Closed kalash222222 closed 9 months ago

kalash222222 commented 1 year ago

Describe the bug protontricks doesen't work as it should cant use gui or use protontricks to tinker with proton prefixes

System (please complete the following information):

Additional context

Screenshot_2023-07-21_22-28-42

tried reinstalling arch did nothing to it cant play il 2 cuz of it need help please

Matoking commented 1 year ago

You seem to have a custom compatibility tool for Steam that has a weird compatibilitytool.vdf file that Protontricks can't parse correctly. It could be broken for some reason, or a valid VDF that Protontricks can't parse yet.

Since you've installed Protontricks from AUR, could you try running the following command:

$ python -m pdb -c continue /usr/bin/protontricks --gui

When the crash occurs, enter command locals(), which should print a list of variables related to the VDF file that was being parsed. You can then copy the output into a reply.


For example, here's an example of the command-line session where I've deliberately modified the VDF file for SteamTinkerLaunch to cause a similar error (compatibilitytools changed to scompatibilitytools):

❯ python -m pdb -c continue /usr/bin/protontricks --gui
Traceback (most recent call last):
  File "/usr/lib/python3.11/pdb.py", line 1765, in main
    pdb._run(target)
  File "/usr/lib/python3.11/pdb.py", line 1643, in _run
    self.run(target.code)
  File "/usr/lib/python3.11/bdb.py", line 598, in run
    exec(cmd, globals, locals)
  File "<string>", line 1, in <module>
  File "/usr/bin/protontricks", line 8, in <module>
    sys.exit(cli())
             ^^^^^
  File "/usr/lib/python3.11/site-packages/protontricks/cli/main.py", line 32, in cli
    main(args)
  File "/usr/lib/python3.11/site-packages/protontricks/cli/util.py", line 149, in wrapper
    return cli_func(self, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/protontricks/cli/main.py", line 241, in main
    steam_apps = get_steam_apps(
                 ^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/protontricks/steam.py", line 1264, in get_steam_apps
    steam_apps += get_custom_compat_tool_installations(steam_root=steam_root)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/protontricks/steam.py", line 1028, in get_custom_compat_tool_installations
    for tool_app in get_custom_compat_tool_installations_in_dir(dir_):
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.11/site-packages/protontricks/steam.py", line 973, in get_custom_compat_tool_installations_in_dir
    compat_tools = compat_tools["compatibilitytools"]
                   ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
KeyError: 'compatibilitytools'
Uncaught exception. Entering post mortem debugging
Running 'cont' or 'step' will restart the program
> /usr/lib/python3.11/site-packages/protontricks/steam.py(973)get_custom_compat_tool_installations_in_dir()
-> compat_tools = compat_tools["compatibilitytools"]
(Pdb) locals()
{'compat_tool_dir': PosixPath('/home/matoking/.local/share/Steam/compatibilitytools.d'), 'comptool_files': [PosixPath('/home/matoking/.local/share/Steam/compatibilitytools.d/GE-Proton7-55/compatibilitytool.vdf'), PosixPath('/home/matoking/.local/share/Steam/compatibilitytools.d/Proton-6.8-GE-2/compatibilitytool.vdf'), PosixPath('/home/matoking/.local/share/Steam/compatibilitytools.d/Proton-5.9-GE-3-ST/compatibilitytool.vdf'), PosixPath('/home/matoking/.local/share/Steam/compatibilitytools.d/Proton-6.12-GE-1/compatibilitytool.vdf'), PosixPath('/home/matoking/.local/share/Steam/compatibilitytools.d/GE-Proton7-25/compatibilitytool.vdf'), PosixPath('/home/matoking/.local/share/Steam/compatibilitytools.d/GE-Proton7-53/compatibilitytool.vdf'), PosixPath('/home/matoking/.local/share/Steam/compatibilitytools.d/Proton-6.16-GE-1/compatibilitytool.vdf'), PosixPath('/home/matoking/.local/share/Steam/compatibilitytools.d/Proton-4.21-GE-1/compatibilitytool.vdf'), PosixPath('/home/matoking/.local/share/Steam/compatibilitytools.d/Proton-4.15-GE-1/compatibilitytool.vdf'), PosixPath('/home/matoking/.local/share/Steam/compatibilitytools.d/Proton-6.10-GE-1/compatibilitytool.vdf'), PosixPath('/home/matoking/.local/share/Steam/compatibilitytools.d/GE-Proton7-38/compatibilitytool.vdf'), PosixPath('/home/matoking/.local/share/Steam/compatibilitytools.d/Proton Mega Version/compatibilitytool.vdf'), PosixPath('/home/matoking/.local/share/Steam/compatibilitytools.d/SteamTinkerLaunch/compatibilitytool.vdf')], 'custom_tool_apps': [<protontricks.steam.SteamApp object at 0x7fa31cff41d0>, <protontricks.steam.SteamApp object at 0x7fa31c4b4450>, <protontricks.steam.SteamApp object at 0x7fa31c4b4bd0>, <protontricks.steam.SteamApp object at 0x7fa31c4b4c20>, <protontricks.steam.SteamApp object at 0x7fa31c4b4a90>, <protontricks.steam.SteamApp object at 0x7fa31c4b4ef0>, <protontricks.steam.SteamApp object at 0x7fa31c4b4fe0>, <protontricks.steam.SteamApp object at 0x7fa31c4b5260>, <protontricks.steam.SteamApp object at 0x7fa31c4b5210>, <protontricks.steam.SteamApp object at 0x7fa31c4b5030>, <protontricks.steam.SteamApp object at 0x7fa31c4b5490>, <protontricks.steam.SteamApp object at 0x7fa31c4b5670>], 'vdf_path': PosixPath('/home/matoking/.local/share/Steam/compatibilitytools.d/SteamTinkerLaunch/compatibilitytool.vdf'), 'content': '"scompatibilitytools"\n{\n  "compat_tools"\n  {\n\t"Proton-stl" // Internal name of this tool\n\t{\n\t  "install_path" "."\n\t  "display_name" "Steam Tinker Launch"\n\n\t  "from_oslist"  "windows"\n\t  "to_oslist"    "linux"\n\t}\n  }\n}\n', 'vdf_data': {'scompatibilitytools': {'compat_tools': {'Proton-stl': {'install_path': '.', 'display_name': 'Steam Tinker Launch', 'from_oslist': 'windows', 'to_oslist': 'linux'}}}}, 'compat_tools': {'scompatibilitytools': {'compat_tools': {'Proton-stl': {'install_path': '.', 'display_name': 'Steam Tinker Launch', 'from_oslist': 'windows', 'to_oslist': 'linux'}}}}, 'internal_name': 'Proton Mega Version', 'tool_info': {'install_path': '.', 'display_name': 'Proton Mega Version Super', 'from_oslist': 'windows', 'to_oslist': 'linux'}, 'install_path_name': '.', 'from_oslist': 'windows', 'to_oslist': 'linux', 'install_path': PosixPath('/home/matoking/.local/share/Steam/compatibilitytools.d/Proton Mega Version'), 'required_tool_appid': None}
VergilGao commented 9 months ago

@Matoking here is myoutput: 3a9f0599-9423-40b5-b0cf-077861834ebc.jpg

It seems all my compatibilitytool.vdf file is empty

Matoking commented 9 months ago

Thanks, I've pushed a fix to master that should ignore empty compatibility tool manifest files since the Steam client also does the same thing. Since you're on Arch, you can install protontricks-git from AUR to get the fix working immediately.

Do you have any idea what might have caused the compatibilitytool.vdf files to become empty? I checked GE-Proton 7.55 myself and it has a valid compatibility tool manifest, so I'm guessing some third party tool might have emptied the file for some reason?