-
-
Notifications
You must be signed in to change notification settings - Fork 41
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Option to download proton and wine versions to a universal folder and add to clients via symlinks #286
Comments
Related: #162 A custom download directory may solve this. Using the same custom directory for multiple launchers would probably resolve this, though I didn't test. You can choose the custom download directory by pressing the three dots button beside the launcher drop-down. It should also be noted that for Proton, while it is not designed for use outside of Steam despite other launchers providing support, many of those will pick up Proton versions in Of course, this doesn't apply to Wine-GE and such with Lutris, so you still end up with the space-inefficiency you mentioned when dealing with Wine builds. This can be especially annoying with Tkg builds which can exceed 1gb. |
In that case, and since Heroic and Lutris using Steam's own Proton versions didn't cross my mind, I can revise my idea just a little: |
As sonic2kk pointed out, for now you can use the custom install folder option ( In theory we could add modify the logic to install compatibility tools to some ProtonUp-Qt related directory and then simlink the tool to either all launchers or let the user choose which launcher should receive that tool. I found this comment in # 162. Do symlinks to Proton actually work? #162 (comment) |
I'll test that out now (GE-Proton, Proton-tkg, and a regular Valve Proton release). Though at least in terms of launching a symlink script (Steam launches Proton games via a Python script), the SteamTinkerLaunch script is symlinked from its install directory to |
I realised midway through testing that Valve Proton is not really applicable here, as Proton can be installed anywhere. However the tl;dr is that things work fine with Steam and mostly fine with Lutris and Heroic 🥳
The games I tested with Proton-tkg had some compatibility issues, but that is probably not related to the symlinking. For testing, I moved them to my downloads folder on my boot drive with Steam, as well as onto a folder on a separate internal drive. I symlinked them to It seems like symlinking is supported! |
Great! Adding something like this and according GUI functionality should do the trick: # GE-Proton CtInstaller:
def is_update_available(self, install_dir: str):
"""
Determines whether a new release is available.
Returns: bool
Returns True if an update is available, False otherwise
"""
latest = self.fetch_releases(count=1)[0]
ls_installed = os.listdir(install_dir)
return (latest not in ls_installed)
def install_update(self, install_dir: str) -> int:
"""
Install the latest version of the ctmod and symlink it
Returns: int
-1: error
0: sucess
1: already latest
"""
latest = self.fetch_releases(count=1)[0]
ls_installed = os.listdir(install_dir)
symlink_name = CT_NAME + '-Latest'
if latest in ls_installed:
return 1
self.get_tool(version=latest, install_dir=install_dir, temp_dir=TEMP_DIR)
symlink_dir = os.path.join(install_dir, symlink_name)
latest_dir = os.path.join(install_dir, latest)
if os.path.exists(symlink_dir):
os.remove(symlink_dir)
os.symlink(latest_dir, symlink_dir)
return 0 TODOs:
|
Having separate copies of Proton/Wine for Bottles, Lutris, Heroic, and Steam can be rather space inefficient.
Having to download the same versions multiple times is network inefficient and takes longer.
So I propose, downloading to a single folder, and registering symlinks to relevant applications.
Of course, for the Flatpaks among the clients, it would need to be a location where each of them has permission to read, but that can be dealt with either by storing them in a default location they all share, or by adding explicit read permissions to the folder with a button.
When installing a new Proton or Wine version to a client, versions that already exist can have [Installed] listed next to their names in the list.
The text was updated successfully, but these errors were encountered: