Open junefish opened 1 year ago
Hello @junefish, your issue is with the Steam Linux Runtime - Soldier container environment and Pressure Vessel which sets up that container. It comes down to your home folder being a subdirectory of /usr/local, and there's a note at https://github.com/ValveSoftware/steam-runtime/blob/60f438709eff5ccb7a6fc5c609ae832d58edbe42/doc/steamlinuxruntime-known-issues.md#usrlocal that this is a known incompatible folder location.
This is not a game-specific issue, or a Proton issue. It is not something that can be sanely solved besides relocating your home folder, but there is a workaround suggested in https://github.com/ValveSoftware/steam-runtime/issues/288.
That's weird, because other games run fine with Proton (e.g. Among Us, Wingspan), but I will take your word for it!
Following this comment, I ran mount --bind /usr/local/home/junefish/.local/share/Steam /data/games
. Now if I ls /data/games
I see the contents of my steam folder.
I then tried running Rogue Heroes again and it downloaded some updates before once again not opening. Should I try fully relocating my Steam library? Or is it the Steam installation that's the problem?
Thanks!
Following https://github.com/ValveSoftware/steam-runtime/issues/288#issuecomment-717207328_, I ran mount --bind /usr/local/home/junefish/.local/share/Steam /data/games. Now if I ls /data/games I see the contents of my steam folder.
For this to work, all environment variables that refer to your home directory would have to be using paths outside /usr/local
, and Steam would have to think it was run from a path outside /usr/local
. Steam does not have any special way to know that the same file is available with more than one path.
This would be more likely to work if you followed the layout that essentially all Linux distributions use by default, with your home directory's realpath
being /home/junefish
or similar, and your "official" home directory in /etc/passwd
also set to /home/junefish
. You could use bind-mounts to arrange for /home
and /usr/local
to be on the same disk, if you want.
other games run fine with Proton
Old Proton versions (before 5.13) didn't use the container runtime. Are you perhaps using an old Proton version like 5.0 for those games?
Old Proton versions (before 5.13) didn't use the container runtime. Are you perhaps using an old Proton version like 5.0 for those games?
I thought for sure I was using somewhere between 6.8 & 7.0 for Among Us, but now it's not launching with 7.0-5. Perhaps I was mistaken.
This would be more likely to work if you followed the layout that essentially all Linux distributions use by default, with your home directory's realpath being /home/junefish or similar, and your "official" home directory in /etc/passwd also set to /home/junefish. You could use bind-mounts to arrange for /home and /usr/local to be on the same disk, if you want.
Is there a way to use bind-mounts to let Steam think my home directory is /home/junefish
, without actually relocating my home directory from /usr/local/home/junefish
? I've read some tutorials and documentation about mount --bind
but I'm still not well-versed enough to know how to fix this. Thanks for your patience!
Is there a way to use bind-mounts to let Steam think my home directory is /home/junefish, without actually relocating my home directory from /usr/local/home/junefish?
It's not straightforward, so please make sure you have backups first, and don't make any changes you are not comfortable with. I'm trying to be helpful, but this is at your own risk.
The easy part is to make your home directory show up in the filesystem hierarchy in both places, so that either of these paths works equally well for software that does not treat /usr
as special. It's usually best to do this using an /etc/fstab
entry so that it is set up during every boot, perhaps something like this:
/usr/local/home /home none bind 0 0
or
/usr/local/home/junefish /home/junefish none bind 0 0
depending on whether you want to do this for all users' home directories, or just yours. And then either mount /home
(or mount /home/junefish
, as appropriate), or reboot.
The harder part is to make Steam (and any other software that cares about this difference, like Flatpak) think that the version in /home
is the canonical path, so that it will launch games using a path like /home/junefish/.local/share/Steam/steamapps/common/Some Game/game.exe
in preference to /usr/local/home/junefish/.local/share/Steam/steamapps/common/Some Game/game.exe
. I can't give you a full list of places to edit, because it depends on how you set up your system, and if you already figured out how to put your home directory below /usr/local/home
instead of the usual /home
then you are probably doing various other bits of unconventional setup.
This would likely be easier if you are willing to change your "official" home directory in /etc/passwd
to be /home/junefish
. A side bonus of that is that you'll see considerably shorter paths in user interfaces! If you don't want to do that for whatever reason, a less reliable way to achieve parts of the same result would be to make sure environment variable HOME=/home/junefish
is set whenever Steam is launched.
After that, it will also be necessary to change other environment variables and filesystem paths that previously pointed to /usr/local/home/junefish/...
so that instead, they say /home/junefish/...
. For instance, if XDG_CONFIG_HOME
is set to /usr/local/home/junefish/.config
, you'll want to change that to /home/junefish/.config
.
For Steam specifically, there are several symbolic links in /home/junefish/.steam
( which will point to paths like /usr/local/home/junefish/...
, which you will need to re-create to point to the equivalent path /home/junefish/...
. The most important are ~/.steam/steam
and ~/.steam/root
, which should both point to the "real" path of Steam's main installation directory, /home/junefish/.local/share/Steam
in your case.
You'll probably also need to edit /home/junefish/.steam/root/config/libraryfolders.vdf
to use the shorter paths.
Compatibility Report
System Information
I confirm:
Game does not launch (button switches to "Stop" for about a second and then back to "Play" with no window opening)
Reproduction