Open kgudalov opened 6 years ago
Since the games itself think they are actually running in Windows, they will also use the folder structures in said prefixes. The only way to get them to save into the Linux folder structures without altering individual games itself, would be by creating symlinks. This will probably never be automated because of the following two reasons:
1) symlinking requires root permission, so steam cannot do this. 2) since different games save into different file locations, this symlinking behavior would have to be implemented on per game basis.
@Mushoz What about the rights of root are not quite true, because the steam creates the prefixes in the Home, where the rights of root is not required. About variety of folders save probably true.Thank you for the comment, probably will have to create some script for renaming.
I stand corrected. I thought the ln command itself requires root privileges.
It might be important to note that uninstalling a game launched via proton that uses personal folders like My Documents to store saves leads to those saves getting wiped as the prefix is deleted completely. This might be an unexpected behavior for some people as saves are usually preserved when a game is uninstalled in steam.
I think having a unified prefix for all game saves, that would get created might slove this, also this prefix wouldnt get deleted, maybe store it even in /home/user/steam/ instad of /home/user/.steam/
not sure how hard would it be to make it happen
Lutris also uses softlinks.
There are more paths which could be worth linking: https://pcgamingwiki.com/wiki/Glossary:Game_data#Windows_data_paths
Problem with AppData
folders is, that there also exist folders like Microsoft
and openvr
.
Therefore game specific links are maybe better.
Example for Lego Harry Potter: Years 5-7
:
steamapps/compatdata/204120/pfx/drive_c/users/steamuser/AppData/Roaming/WB Games/
-> ~/.local/share/WB Games/
Can I just add that it would be best to keep these somewhere contained as some games can be quite messy and I'd rather not give them access to dump all over my home folder. Universally linking "My Documents" and "AppData" to some location should cover most cases.
I don't want all this games folder in my documents or home folder. I see more a dedicated location, that will match for all WIndows, Linux and Macosx games.
I don't like to see potentially hundreds of folders to be added to my ~/home/Documents
folder either. Especially not as non-hidden ones. No software should add folders there all by itself, period. It's a disease on Windows already, and I don't like to see it repeated on Linux.
Instead, I suggest using the $XDG_DATA_HOME
directory as a base. That's:
the base directory relative to which user specific data files should be stored. If $XDG_DATA_HOME is either not set or empty, a default equal to $HOME/.local/share should be used.
Source: https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
So something like $XDG_DATA_HOME/steam/game_folder_goes_here
, or …/proton/…
or whatever. Some native Linux games already create their folders under $XDG_DATA_HOME
, like games from Feral, THQ, Daedalic, Frictional, …
It's probably wise to group Proton games in a folder of their own as mentioned above though, in case they ever get a native port. Just to be safe, rather than sorry.
@DanMan: It's already in ${XDG_DATA_HOME:-${HOME}/.local/share}/Steam/steam/steamapps/compatdata/${SteamAppId}/pfx
@basxto Is that a recent change? There is no ~/.local/share/Steam
folder on my system. Ubuntu 18.04 LTS, Proton 3.7.3. But $XDG_DATA_HOME
doesn't seem to be set either.
@DanMan Debian's steam package uses a different folder layout with steam because reasons, and Ubuntu inherits the package in its repos from Debian.
@kisak-valve Meaning? Should I report that problem to them then? I mean, it doesn't seem to happen for all the other games I have. Only the games I've used via Proton. For example, the PES 2019 demo which has no Linux version. Or maybe it's Lutris doing that, I should check that.
Then it’s probably in ~/.steam/steam
.
All games (proton included) get installed into your steam library <librarypath>/steamapps/common/<name>
, so all steam games should end up in the same directories.
Games using proton put their settings, savegames etc. into their prefix at <librarypath>/steamapps/compatdata/<appid>/pfx
, because they think they are on Windows.
Prefixes of lutris are placed somewhere in ${XDG_DATA_HOME:-${HOME}/.local/share}/lutris/runners/
, not that different from what steam is doing. But the winesteam runner actually uses a prefix (game) inside of a prefix (steam).
Native games put their savegames whereever they want and this includes ~/My Games
, ~/Documents
, ~/
, ~/.local/share
, ~/.config
, ~/.appdata
, ~/.local
etc.
I don't like to see it repeated on Linux.
It’s too late … at least most games put hidden folders into ~/
.
Feral also created ~/feral-interactive/Life Is Strange
in july…
I take it back. It's actually Lutris that's putting the game config files in my ~/Documents
folder, not Steam.
PES2019 on Windows apparently stores its config files in the %UserProfile%\Documents
folder, which in the Lutris Wine prefix is mapped to my ~/Documents
folder (by default, as it seems - at least I can't remember setting it myself). -.-
Oh well, sorry for wasting your time. If you're already using ${XDG_DATA_HOME}
then that's great IMO. Thanks for listening.
Feture Request: Better drive defaults in prefixes, and several other links.
Issue transferred from https://github.com/ValveSoftware/Proton/issues/1407. @Ruedii posted on 2018-09-12T01:10:47:
A quick link to place the game's directory on the D: virtual drivelink under "D:[game directory]" A unified user directory should be placed here as well, linking to $HOME/.share/local/SteamPlayUserFiles/[steamlogin] (or whatever you want to call it.) A second Quicklink under H: to the user's home directory.
This would make accessing the game directory and home directory when doing manual wine commands much easier. This is rather proton specific.
Moving the user directory means making a transition copy directory. It also means changing the instructions to purge that directory, and notifying everyone of the new directory structure.
Having a shared user directory for all SteamPlay games may introduce interactions between games, just like on Windows. This can also be a benefit.
Using a separate user directory changes presumes players want to use separate settings/game-play paths for instances of different steam users logging in under the same system username. This may not be a safe assumption.
Making it easier to access to files from the Wine execution environment might allow some users to do stupid stuff. Add a documentation on how to purge the two sets of data directories in order to fix it.
I don't want games littering my documents folder with saves and config files like they do on windows but it would be nice if there was at least a shared user directory for the proton prefixes. This would make searching for specific saves easier if you are a normal human being who can't remember the appid for each game.
Maybe move "steamuser" to the root of compatdata and symlink c:\users\steamuser from each prefix to that (i.e. turn the current steamuser folder to a symlink to ../../../../steamuser). This would (probably) also prevent steam from nuking all your saves when you uninstall a game that's running on proton.
Edit: I ended up making a small bash script that does something like this if someone is interested https://github.com/ritalat/proton-shared-user-directory
Loosing your save-games is something what I didn't expect to happen. Maybe a "fix" (temporarily at least) would be to keep the pfx
folder, then all is preserved?
Just lost my Fallout 3 saves when reinstalling the game. gg
Bump this. More than a few games allow local mod development in "My Documents\GamePublisherOrTitle". Having to manually find and execute winecfg in each one to fix the missing "My Documents" -> $HOME/Documents mapping is annoying.
@kisak-valve I feel the path to the user profile should be a configurable environment variable that you pass to steam. In my case, I'm installing my steam library onto a NFS mount with a Users/
After installing a game that uses proton and starting it for the first time, it's default prefix is what I assume being read from .steam/steam/steamapps/common/Proton X.X/dist/share/default_pfx
, so the resulting prefix that would be created would be for example /mnt/nfsmount/SteamLibrary/steamapps/compatdata/<app_ID>/pfx
which contains drive_c/users/steamuser
-- this path gets initiated I believe either upon first start or when you choose which compatibility version you want to use in the steam interface for the game you're wanting to start. What I've been doing is navigating to /mnt/nfsmount/SteamLibrary/steamapps/compatdata/<app_ID>/pfx/drive_c/users
and deleting the stock steamusers profile and symlinking it to my inherited Windows profile.
The legwork of removing the default profile directory from my steam library only comes into play because it would appear that when some unknown event occurs in steam, the .steam/steam/steamapps/common/Proton X.X/dist/share/default_pfx
and possibly everything under it is being reset to default. So setting a default profile directory by symlinking the steamuser directory to my inherited directory in the default prefix at the moment doesn't appear to work. However, this isn't the case when you use custom compatibility versions installed under the .steam/steam/compatibilitytools.d
directory, if installing a symlink under the custom versions, the symlink will survive and automatically link to my inherited steamuser directory and I haven't experienced a single issue restarting a saved game as of yet.
Because these are symlinks, they also won't get wiped out when uninstalling the game. If the default_pfx information above is true, a environment variable should be used to where you want the profile to be stored and proton should accept it and not wipe out everything that's under default_pfx when steam appears to realize that the content under the common/Proton X.X isn't what was installed.
There is no AppData/Roaming folder. Anyone have hints to where my game files might be?
The paths are configurable by the same ways as Wine. It would be nice to add a passthrough of this to the config files and command line options.
On Tue, Mar 16, 2021, 3:10 AM Lukas Does Dev @.***> wrote:
There is no AppData/Roaming folder. Anyone have hints to where my game files might be?
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/ValveSoftware/Proton/issues/231#issuecomment-800013439, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAYFL2P5EELM74SOS5AHA53TD3755ANCNFSM4FRDXAYQ .
Finally found the path for it:
~/.steam/steam/steamapps/compatdata/387990/pfx/drive_c/users/steamuser/Application Data/Axolot Games
@kisak-valve thanks for pointing to this thread. Is there a roadmap for this? As it stands it's a pretty big difference between playing on Windows and playing on Linux; specifically where Linux lags behind because of the lack of seamless import for games.
The same is also true on the Steam Deck, where it's arguably more important because I don't think you expect customers to have to navigate through two prefixes for their save files, just to play an import from the BG1 in BG2. Windows, and console releases, already solve for this very neatly.
How to make all games launched with proton save settings in /home/user/documents instead of in separate prefixes? Is there now such a possibility or do I need to manually create links every time?