Skip to content
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

Add the hidden ~/.snap/data/steam directory for Steam snap #445

Open
YamiYukiSenpai opened this issue Aug 15, 2024 · 5 comments
Open

Add the hidden ~/.snap/data/steam directory for Steam snap #445

YamiYukiSenpai opened this issue Aug 15, 2024 · 5 comments
Labels
enhancement New feature or request

Comments

@YamiYukiSenpai
Copy link

YamiYukiSenpai commented Aug 15, 2024

Is your feature request related to a problem? Please describe.
Right now, it defaults to just ~/snap/steam.
I enabled an experimental feature that will allow Snaps to use the hidden ~/.snap/data directory for Snap data.

Describe the solution you'd like
In addition to ~/snap/steam, please add ~/.snap/data/steam in the default directory it can read/write to

Describe alternatives you've considered
N/A

Additional context
https://forum.snapcraft.io/t/experimental-flag-for-hiding-snap/28509
image

@YamiYukiSenpai YamiYukiSenpai added the enhancement New feature or request label Aug 15, 2024
@DavidoTek
Copy link
Owner

Thanks for reporting. That should be easy to do until the next release.
For now, the best solution is to add it as a custom launcher using the button, just like you did.


Considerations for the implementation: There are two possibilities (A) Add it as another/separate launcher (B) Like it is done for native Steam, check which of the two paths and use that for the Snap launcher (preferred method)

@sonic2kk
Copy link
Contributor

sonic2kk commented Aug 22, 2024

Considerations for the implementation: There are two possibilities (A) Add it as another/separate launcher (B) Like it is done for native Steam, check which of the two paths and use that for the Snap launcher (preferred method)

I'm guessing that both paths cannot, or at least should not, be valid at the same time then, right? If so, then exactly as you said we should do the same thing that we do for native Steam. I wonder if it's as easy as just adding the Snap paths to POSSIBLE_STEAM_ROOTS. In fact it might also be worth moving the Flatpak Steam path here as well, that way our logic to determine Steam paths and exclude ones which are symlinks is "streamlined" so to speak (might need to reword some of the comments though, or add a comment around the Snap paths specifically).

The existing logic for determining Steam paths takes a list of Steam paths, expands them so that we end up with their real paths (that way any symlinked paths will become duplicates of the paths they are pointing to, i.e. ~/.steam/root might get expanded to ~/.local/share/Steam and so will become a duplicate of that path and will be excluded, so we don't list that path twice). But if there are multiple valid Steam paths we don't exclude them, i.e. if ~/.steam/root was not a duplicate path, we won't exclude it from the possible install locations path here. So if we want to include the Snap and Flatpak paths here, so long as they are unique paths this logic should include them in POSSIBLE_INSTALL_LOCATIONS, and if they don't exist or don't contain the files we need, we handle that in util#is_valid_launcher_installation.

One complication would be setting the type and display_name properly, but I think it's worth making this existing logic flexible to handle multiple Steam installation types.

Also, the Flatpak will need to have the ~/.snap/data path added. Right now we only have access to ~/snap/steam (a specific folder, that is not the same as the hidden .snap folder, I didn't realise at first glance that it was "dot-snap" and not "snap"). That's very straightforward to add though :-)

@sonic2kk
Copy link
Contributor

Hmm, looking into this further, I think instead of re-using the Steam Native code path, we should do it in a much more simpler way and just check if ~/.snap/data/Steam exists. If it does, we can use this experimental "Snap data" path to store compatibility tools. Or we could store both and let is_valid_launcher_installation determine which path is valid (though it would need updated to handle Steam Snap, that should be straightforward).

I assume that when this option is enabled, all Steam config and data files get moved to ~/.snap/data/steam and it effectively becomes the installation directory, replacing ~/snap/steam? Based on the fact that it contains local/share/Steam I assume it also contains a config folder and Steams other files.

@DavidoTek
Copy link
Owner

I think instead of re-using the Steam Native code path, we should do it in a much more simpler way and just check if ~/.snap/data/Steam exists. If it does, we can use this experimental "Snap data" path to store compatibility tools
Or we could store both and let is_valid_launcher_installation determine which path is valid (though it would need updated to handle Steam Snap, that should be straightforward).

That seems to be the simplest solution.

I assume that when this option is enabled, all Steam config and data files get moved to ~/.snap/data/steam and it effectively becomes the installation directory, replacing ~/snap/steam?

I hope so. The only reason we have the complicated logic for the native Steam is because it wasn't really the case there. But there also were differences based on the distro etc.

@YamiYukiSenpai What happens to ~/snap/steam when the experimental feature is enabled? Is it deleted? Is a symlink created to the new .snap location?

Based on the fact that it contains local/share/Steam I assume it also contains a config folder and Steams other files.

Probably.

@YamiYukiSenpai Can you confirm that the path ~/.snap/data/steam/common/.local/share/Steam/config exists and contains files?

@YamiYukiSenpai
Copy link
Author

@YamiYukiSenpai Can you confirm that the path ~/.snap/data/steam/common/.local/share/Steam/config exists and contains files?

> ls -l ~/.snap/data/steam/common/.local/share/Steam/config
total 76
drwxrwxr-x 1 yamiyuki yamiyuki    42 Aug 28  2023 avatarcache
drwx------ 1 yamiyuki yamiyuki    46 Jul 31 22:44 cefdata
-rwxrwxr-x 1 yamiyuki yamiyuki 34524 Sep  1 02:05 config.vdf
-rw-rw-r-- 1 yamiyuki yamiyuki    21 Aug 27 23:32 DialogConfigOverlay_3440x1440.vdf
-rw-rw-r-- 1 yamiyuki yamiyuki 10108 Aug 27 23:32 DialogConfigOverlay_800x450.vdf
-rw-rw-r-- 1 yamiyuki yamiyuki  7840 Sep  1 02:07 DialogConfig.vdf
drwxrwxr-x 1 yamiyuki yamiyuki   766 Sep  1 02:05 htmlcache
-rwxrwxr-x 1 yamiyuki yamiyuki  2686 Aug 27 22:39 libraryfolders.vdf
-rwxrwxr-x 1 yamiyuki yamiyuki   263 Aug 27 22:39 loginusers.vdf
-rwxrwxr-x 1 yamiyuki yamiyuki   332 Aug  2 14:00 remoteclients.vdf
-rwxrwxr-x 1 yamiyuki yamiyuki   641 Sep  1 02:05 steamapps.vrmanifest
-rwxrwxr-x 1 yamiyuki yamiyuki     0 Aug 27 23:13 virtualgamepadinfo.txt

Yup they're there

@YamiYukiSenpai What happens to ~/snap/steam when the experimental feature is enabled? Is it deleted? Is a symlink created to the new .snap location?

Not automatically, I think. I believe I had to force it by moving it, but I may be remembering it wrong. I noticed just now that the hidden snap data directory is more populated than expected. I'll get back to you on that and test on one of my VMs sometime this week (hopefully).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants