HeroicGamesLauncher
HeroicGamesLauncher copied to clipboard
Default wine prefix settings and behavior are confusing
Describe the bug
We have some problems with how we handle default wine prefixes:
- during installation, when a user clicks the
Use default wine settingsoption, it makes the game use the default wine prefix which is/Users/arielj/Games/Heroic/Prefixes/default - if the user does NOT click the
Use default wine settingsoption, the game uses a prefix like/Users/arielj/Games/Heroic/Prefixes/default/observer_
This automatically breaks things, because the default prefix is a folder that contains other prefixes.
We also have some settings that are not super clear, like the WinePrefix option in Settings > Game Defaults. It should be more clear that that path will be the same for other games when checking that option in the install dialog and what that means.
Finally, in a new clean install of heroic, we have these settings in the config.json:
"defaultWinePrefix": "/Users/arielj/Games/Heroic/Prefixes/default",
"winePrefix": "/Users/arielj/Games/Heroic/Prefixes/default",
the first one is the folder where wine prefixes should go
the second one is the prefix path used with the Use default wine settings option
but from the keys it's impossible to know they are supposed to be different types of paths
Add logs
nothing relevant
Steps to reproduce
- With a clean heroic install
- Open the install dialog of a game
- the prefix path is
.../default/game title - install it
- open another install dialog
- check the
Use default wine settingsoption - install the game
- look at the game's settings and see the prefix path is
.../default
now that game will fail to start, the prefix going to be a problem
Expected behavior
So I'm suggesting some changes:
- we have to differentiate the default prefixes dir (folder that holds prefixes) from the default prefix dir (the prefix path used by default). We do that in the constants file https://github.com/Heroic-Games-Launcher/HeroicGamesLauncher/blob/main/src/backend/constants.ts#L55 but that distinction gets lost eventually in the code and in setting keys.
- the
Set Folder for new Wine Prefixesin the general settings can set adefaultWinePrefixesDirconfiguration instead of thedefaultWinePrefixconfiguration for example. The setting name is confusing cause it's meant to be a directory to hold prefixes and not one prefix.
- the
- we can rename the
WinePrefix Foldersetting in Settings > Game Defaults to beShared Wine Prefix(maybe even move it into Settings > General settings?) - we can rename the
Use Default Wine Settingsoption in the install dialog asUse Shared Wine and Prefix (Advanced)which would setsharedWinePrefixPath. We can also add an(i)icon to show the wine version and the prefix this will set - the suggested prefix path in the install dialog should be
defaultWinePrefixesDirjoined with the game's title, to not have that/defaultin the middle of the path - we can rename
defaultwithsharedfor the default shared wine prefix: instead of.../Prefixes/defaultwe can call it.../Prefixes/shared
Screenshots
No response
Heroic Version
Latest Stable
System Information
Linux and Mac
Additional information
No response
++ I agree with all of these changes. I wanted to just make sure I understood:
Shared wine prefix path is: ~/
Game prefixes path is: ~/
I think within the heroic UI, the reason it gets confusing is because i feel like sometimes "default" refers to system default wine directory, which tends to be the user's .wine folder.. and sometimes it refers to heroic's default behaviors.
Glad this change will make things more clear :D
I concur as I also think the default should be .wine not all games require a seperate wineprefix and it will save disk space. Checked steams behavior and it does not install wine/proton in the steamapps/common besides the one proton required so you don't end up with a ton of wine/proton installs.
The default should not be .wine because we already had that and it was a mess on steam deck and all systems where wine is not installed. The current default actually should be ~/Games/Heroic/Prefixes/default which can be created by heroic.
The suggestion from @arielj is actually the best way currently.
+1 on all of this.
As well, if any of those folders are outside of the user's home directory, Heroic can't access them and symlinks are required. (The /run/1000 path that Heroic tries to use doesn't work). Either I end up using Flatseal to allow Heroic ta access the path I want, or I make symlinks.
Would be nice if Heroic just saw it couldn't access a path and asked for permission to add it to the paths it can access.