Steam for Linux

Steam for Linux

Use existing Windows install of game, or install again?
I have a shared NTFS partition, which currently stores my Windows installed games, and Linux installed games in different directories. /etc/fstab is configured to automount the partition with write access when I boot Ubuntu, and after disabling things like fast startup and hibernation, it works quite nicely.

Recently I added my Windows games directory (for me this is /mnt/freedom/Games/Windows/Steam) as a library folder in my Linux Steam Client, but when I tried to run Dishonored it output an error, something like 'Wrong platform'. *I may not have had the Steam Play options set up correctly at he time.

Are you guys fresh installing Steam Play games when in Linux, or adding your Windows Steam directory as a library (if that works)?

*Ideally I would be able to access as many games as possible from each OS, so if I was already forced to use Windows to play something, I would not need to switch to Ubuntu to play something else.

I am currently uninstalling and reinstalling a lot of games, and I am curious as to best practice:

1. Two separate library directories for each OS (Linux accessing both, no game installed twice)
2. Two separate libraries (Linux only accessing one, games installed twice so playable from both OS)
3. One large shared library accessible by both Windows and Linux? (no game installed twice)
< >
Showing 1-6 of 6 comments
Cat on Linux Dec 8, 2018 @ 9:34am 
if you have enough space to have separate libraries then go for separate, it will save you time and further questions (why my game keeps downloading and never starts and similar).
there's one easy way to transfer game between libraries without need of redownloading - just copy its folder and manifest file (one lever higher in same library) then this game will be set for different library.

also, you should understand that linux and windows games have different binaries for each platform, you can't keep same version for lin and win. if you have native linux port you obviously won't be able to run it from windows. In this regard one big library is not practical.

2 different libraries and only ONE accessed from Linux, copied files. or look for hacks to make your NTFS drives to be mounted with user rights instead of root (there was plenty of discussion on this form - solutions, issues and such). Without such editing you won't be able to access your windows library from Linux.
Last edited by Cat on Linux; Dec 8, 2018 @ 9:41am
thetargos Dec 8, 2018 @ 10:05am 
There are a number of workarounds you could try to use, but I am not advocating for these. I use a couple of them to compensate Steam's short comings, but it is not infallible, and may even make things more complicated to debug. The idea would be to leave the Windows installation files alone on your drive, and simply generate a place where all the Proton magic could take place without mixing them both.

What really happens is that Steam Play through Proton uses a special location on the Library Path to allocate the Wine prefix used by the windows game (different than the game's installation files location), usually located under $STEAMLIBRARY/steamapps/compatdata/$APPID, there will be three things located, the prefix (pfx directory) and the LOCK (a mechanism to tell the Steam Process that the game is running) and version file. Within the pfx directory is where most of the magic happens. It recreates a whole wine prefix within it (with all its advantages and disadvantages) and since many of the locations there are symlinks, on an NTFS drive... They will fail to create, leaving a faulty prefix.

So in order to work around this what I have done is to create a NEW Steam Library on a directory where it makes sense to me and the tree of drives I have setup in my machine, but for this example I will use a "standard" location named /games, made group writeable (as there may be more than one user in the local Linux install).

So suppose we have the /games directory which will be writeable by the (duh!) games group, so the first thing to do is to make sure the directroy's umask matches our criteria and as such chown and/or chmod it so that all users within the games group will be able to have write access to it, We could even give full ownership of the directory to a non shell user games. So that the mask for the directory would then read:
drwxrwxr-x. 2 games games 0 dic 8 2018 games
Or something along those lines. That mask specifies thtat the owner and members of the group games have write access to the directory, so suppose you want to start from scratch:

[user@localhost ~]$ sudo -i password: [root@localhost user]# mkdir /games [root@localhost user]# chown -r games:games games [root@localhost user]# usermod -a -G user games

Within that directory you can create then a Steam Library from within Steam. Rembember to exit Steam before performing any of the following!!

Then based on how Steam Libraries are laid out, you can simply procede to modify the bits and pieces as you require. Especially, the 'common' directory, which is within steamapps where the installation files for the games actually are located. So at this point you have two options: Make all your games on your NTFS drive available or make only CERTAIN games available. The only difference is the number of links you would have to create.

REMEMBER!!! You CAN link FROM an NTFS volume TO a Linux native FS, but NOT THE OTHER WAY AROUND, I cannot stress this enough!!

So going with the first route, and I will use your same layout, as your library stored in /mnt/freedom/Games/Windows/Steam (I'll omit the prompt, and only write the commands):

cd /games/SteamLibrary/steamapps rm -rf common && ln -s /mnt/freedom/Games/Windows/Steam/steamapps/common for i in `ls /mnt/freedom/Games/Windows/Steam/steamapps/appmanifest*acf`; do ln -sf "$i"; done

And that is it! I AM assuming that immediately under /mnt/freedom/Games/Windows/Steam there is the steamapps directory located, if not, adjust accordingly!!

If you want to have more control over which games are actually made visible to Steam for Linux, you simply control that with the appmanifest_<appid>.acf files, so in order to discriminate which games will be made visible, just copy/link the appropriete manifest files to the new library's steamapps directory.

Remember that this is but ONE solution, there may be others, you could even mount the drive under /games from within fstab, etc. MAKE SURE you set the RIGHT umask (uid,gid, etc) of the drive in fstab!!! MY suggestion wold be to make it GROUP writeable with gid and umask. Good luck, have fun!
Last edited by thetargos; Dec 8, 2018 @ 10:15am
Aoi Blue Dec 8, 2018 @ 1:17pm 
Never install Steam for Linux games on an NTFS partition. It creates permissions issues.
thetargos Dec 8, 2018 @ 1:24pm 
Originally posted by Aoi Blue:
Never install Steam for Linux games on an NTFS partition. It creates permissions issues.
Indeed, excellent point, even with uid,gid and umask is a nightmare (for native games)
sydnytt Dec 2, 2020 @ 3:13pm 
read a long while before realizing this was years ago. Has anything changed since this was posted? i have limited space and quite a large game on my windows ssd. can i point steam on linux to my windows partition? might not be worth the hassle but would eventually like to migrate out of windows.
Cat on Linux Dec 2, 2020 @ 4:19pm 
Originally posted by sydnytt:
read a long while before realizing this was years ago. Has anything changed since this was posted? i have limited space and quite a large game on my windows ssd. can i point steam on linux to my windows partition? might not be worth the hassle but would eventually like to migrate out of windows.

no, Proton still won't work. but if there's no space you can try to use wine or Lutris to run that game with steam for windows. wine does not care about permissions, only proton does. I share my windows library with wine for years, everything works.
Last edited by Cat on Linux; Dec 2, 2020 @ 4:20pm
< >
Showing 1-6 of 6 comments
Per page: 1530 50

Date Posted: Dec 8, 2018 @ 6:18am
Posts: 6