HeroicGamesLauncher icon indicating copy to clipboard operation
HeroicGamesLauncher copied to clipboard

Default wine prefix settings and behavior are confusing

Open arielj opened this issue 2 years ago • 4 comments

Describe the bug

We have some problems with how we handle default wine prefixes:

  • during installation, when a user clicks the Use default wine settings option, 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 settings option, 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

  1. With a clean heroic install
  2. Open the install dialog of a game
  3. the prefix path is .../default/game title
  4. install it
  5. open another install dialog
  6. check the Use default wine settings option
  7. install the game
  8. 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 Prefixes in the general settings can set a defaultWinePrefixesDir configuration instead of the defaultWinePrefix configuration for example. The setting name is confusing cause it's meant to be a directory to hold prefixes and not one prefix.
  • we can rename the WinePrefix Folder setting in Settings > Game Defaults to be Shared Wine Prefix (maybe even move it into Settings > General settings?)
  • we can rename the Use Default Wine Settings option in the install dialog as Use Shared Wine and Prefix (Advanced) which would set sharedWinePrefixPath. 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 defaultWinePrefixesDir joined with the game's title, to not have that /default in the middle of the path
  • we can rename default with shared for the default shared wine prefix: instead of .../Prefixes/default we can call it .../Prefixes/shared

Screenshots

No response

Heroic Version

Latest Stable

System Information

Linux and Mac

Additional information

No response

arielj avatar Nov 29 '23 02:11 arielj

++ I agree with all of these changes. I wanted to just make sure I understood:

Shared wine prefix path is: ~//Games/Heroic/Prefixes/shared If you pick the advanced option to use the shared path, you may have many different games using that prefix.

Game prefixes path is: ~//Games/Heroic/Prefixes/<GameName> This is the default behavior, heroic installs a stand alone prefix for that game, and only for that game.

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

allora avatar Nov 29 '23 05:11 allora

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.

DeeDeeRanged avatar Dec 01 '23 11:12 DeeDeeRanged

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.

Nocccer avatar Dec 01 '23 12:12 Nocccer

+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.

0x6A7232 avatar Jan 19 '24 07:01 0x6A7232