diff options
author | Paul Gofman <pgofman@codeweavers.com> | 2022-03-11 19:10:42 +0300 |
---|---|---|
committer | Arkadiusz Hiler <ahiler@codeweavers.com> | 2022-04-05 18:13:11 +0300 |
commit | a4824da779fe2ce8a0ebacefb93c45805a6368b5 (patch) | |
tree | 05e7f89dc165ea5ebf533fb3bd7e876c705df16e /proton | |
parent | b46a3bf712c54d6443174cc6dbc26a1bbe328ea1 (diff) |
proton: Optionally setup T: drive for native Steam directory.
CW-Bug-Id: #20285
Diffstat (limited to 'proton')
-rwxr-xr-x | proton | 44 |
1 files changed, 29 insertions, 15 deletions
@@ -211,23 +211,34 @@ def try_get_game_library_dir(): return None -def setup_game_dir_drive(): - gamedrive_path = g_compatdata.prefix_dir + "dosdevices/s:" - if "gamedrive" in g_session.compat_config: - library_dir = try_get_game_library_dir() - if not library_dir: - if file_exists(gamedrive_path, follow_symlinks=False): - os.remove(gamedrive_path) +def try_get_steam_dir(): + if not "STEAM_COMPAT_CLIENT_INSTALL_PATH" in g_session.env: + return None + + return g_session.env["STEAM_COMPAT_CLIENT_INSTALL_PATH"] + +def setup_dir_drive(compat_option, drive_name, dest_dir): + drive_path = g_compatdata.prefix_dir + "dosdevices/" + drive_name + if compat_option in g_session.compat_config: + if not dest_dir: + if file_exists(drive_path, follow_symlinks=False): + os.remove(drive_path) else: - if file_exists(gamedrive_path, follow_symlinks=False): - cur_tgt = os.readlink(gamedrive_path) - if cur_tgt != library_dir: - os.remove(gamedrive_path) - os.symlink(library_dir, gamedrive_path) + if file_exists(drive_path, follow_symlinks=False): + cur_tgt = os.readlink(drive_path) + if cur_tgt != dest_dir: + os.remove(drive_path) + os.symlink(dest_dir, drive_path) else: - os.symlink(library_dir, gamedrive_path) - elif file_exists(gamedrive_path, follow_symlinks=False): - os.remove(gamedrive_path) + os.symlink(dest_dir, drive_path) + elif file_exists(drive_path, follow_symlinks=False): + os.remove(drive_path) + +def setup_game_dir_drive(): + setup_dir_drive("gamedrive", "s:", try_get_game_library_dir()) + +def setup_steam_dir_drive(): + setup_dir_drive("steamdrive", "t:", try_get_steam_dir()) # Function to find the installed location of DLL files for use by Wine/Proton # from the NVIDIA Linux driver @@ -887,6 +898,7 @@ class CompatData: prefix=self.prefix_dir, track_file=tracked_files, link_debug=True) setup_game_dir_drive() + setup_steam_dir_drive() # add Steam ffmpeg libraries to path prepend_to_env_str(g_session.env, ld_path_var, steamdir + "/ubuntu12_64/video/:" + steamdir + "/ubuntu12_32/video/", ":") @@ -1088,6 +1100,7 @@ class Session: self.check_environment("PROTON_NO_WRITE_WATCH", "nowritewatch") self.check_environment("PROTON_HIDE_NVIDIA_GPU", "hidenvgpu") self.check_environment("PROTON_SET_GAME_DRIVE", "gamedrive") + self.check_environment("PROTON_SET_STEAM_DRIVE", "steamdrive") self.check_environment("PROTON_NO_XIM", "noxim") self.check_environment("PROTON_HEAP_DELAY_FREE", "heapdelayfree") self.check_environment("PROTON_ENABLE_NVAPI", "enablenvapi") @@ -1382,6 +1395,7 @@ if __name__ == "__main__": if sys.argv[1] == "run": #start target app setup_game_dir_drive() + setup_steam_dir_drive() rc = g_session.run() elif sys.argv[1] == "waitforexitandrun": #wait for wineserver to shut down |