ValveSoftware / steam-runtime

A runtime environment for Steam applications
Other
1.18k stars 86 forks source link

Allow use of external drives for games that use content not stored on the same drive as the game itself #393

Closed ghost closed 3 years ago

ghost commented 3 years ago

When I try to use the Retroarch Playtest on steam, I can't access my external hard drive where I store my games. I can access my root drive, my secondary hard drive (which is where retroarch is located) but not my external hard drive connected via USB. It should show up in /media/user/ but when I look there in retroarch I can only find my secondary drive and not my external one.

when in a terminal or file manager, the drive shows up just fine and I can see it all. I even mounted the drive seconds before launching retroarch to make sure that its proton thats causing the issue. I know retroarch can see other drives, because as ive stated before, it can see my secondary drive where retroarch is installed to.

on a similar note, I can only access the steam library folder on the secondary drive. If I want to store the games on the secondary drive, I would have to store them in /media/user/secondary/steamlibrary/steamapps/.

kisak-valve commented 3 years ago

Hello @CardboardTurtle, this reads more like a limitation of the Steam Linux Runtime - Soldier container environment instead of an issue with Proton itself. There is a similar discussion on #308 / #334.

Proton 5.13 and newer is run inside the Steam Linux Runtime - Soldier container environment and that's setup by Pressure Vessel and Pressure Vessel does not give games unlimited access to the host system. You could try adding STEAM_COMPAT_MOUNTS=/path/to/unexpected/folder %command% to the game's launch options and see if that has an effect.

ghost commented 3 years ago

@kisak-valve that worked! thank you. :)

jarrard commented 3 years ago

How do you define two paths, for example?

/mnt/StorageSSD/ /mnt/GamesNVMe/

STEAM_COMPAT_MOUNTS=/mnt/StorageSSD/;/mnt/GamesNVMe/ ??

RyuzakiKK commented 3 years ago

How do you define two paths, for example?

/mnt/StorageSSD/ /mnt/GamesNVMe/

STEAM_COMPAT_MOUNTS=/mnt/StorageSSD/;/mnt/GamesNVMe/ ??

It is a colon-delimited list of paths, so in your case it should be STEAM_COMPAT_MOUNTS=/mnt/StorageSSD:/mnt/GamesNVMe

jarrard commented 3 years ago

Ok cool that seems to have worked however it looks like proton Steam is missing python compatibility or something. Not sure what to do about that. (a optional requirement for this app I'm using).

kisak-valve commented 3 years ago

That will need to be evaluated on Proton's side. Add a note to the Proton compatibility report for the game.

jarrard commented 3 years ago

Not a game but mod organizer 2, the worlds best mod manager :)

I think its because steam is not letting the app know about system libraries because if I run the app via the same proton container in lutris is works, which you can toggle system libraries with. Obviously that isn't ideal way to run proton, but for testing it shows that python dll should work. (I have python installed on system).

smcv commented 2 years ago

Updating this even though it's marked as resolved, since other issues use it as a reference:

Starting from pressure-vessel version 0.20220803.0 in today's "Steam Linux Runtime - soldier" and "Steam Linux Runtime - sniper" betas, more top-level directories are available to games by default, reducing the need to use STEAM_COMPAT_MOUNTS. The affected paths are the typical paths for removable media:

and some FHS locations where people often put the mount points for non-removable but non-OS drives and partitions, such as a secondary SSD or HDD:

Custom top-level directories like /stuff are not shared by default, and still require use of STEAM_COMPAT_MOUNTS, because we can't automatically classify unknown top-level directories into things you would expect to be shared (/storage, /games, /large-disk-drive) and things you would not expect to be shared (future OS components, /lost+found, /corporate-secrets). Technical details