a small tool to manage Steam Family Sharing
http://steamcommunity.com/groups/familysharing/discussions/0/540736965953254153/
(c) 2014-2018 by PsyBlade - all rights reserved
When you get the same game from multiple sources steam selects which one to use. With often less than optimal results (i.e. chosing an much used source over a rarely used one). This makes an manual selection method desireable.
Despite customer complaints since fall 2013 this has not yet implemented by Valve. sfs-select tries to offer that possibility.
It allows you to temporatrily disable single sharing sources. That way you can disable a "in use" library in favor of unused ones. Additionally it can tweak the way steam uses to assign games to the active sources.
It has both a GUI (for casual use) and a CLI (scripting, desktop shortcuts, ...) mode. The full sourcecode (python 3) is included for everyone who is cautious, curious or wants to help.
Use a -full file for new installs. To update to a newer version simply copy the new files over the old ones. Updates form recent enough versions can be done with the smaller -update downloads too.
Be sure to read the included readme for further instructions.
The steam client stores a list of accounts which authorized this client (aka "machine"). It asks the server for permission to show and play games from these accounts. This list is stored in a plain text file called config/config.vdf. If you remove accounts from this list the cteam client will never ask for (and thus never recieve) permission to show that account. If you put an previosly deleted account back into the file it will work again. If you change the order it influences how source libraries are assigned to individual games. Those three things are everything sfs-select actually does.
If you want to you can even edit that file by hand instead. Information on how to do so is in manual-editing.txt. (Please refrain from adding random accounts that did not actually autorize you. The server won't grant permission anyway.)
sfs-select can change the priority order in which accounts are scanned for games. In general a game with multiple sources will be available from the sharing partner who comes first in the priority list. But because of how Steam does this it does not always work as expected.
In the Steam client you see individual games listed but thats not how steam handles that internally. Your account does not have any games assinged to it, instead it only has packages. A package can contain a single game or many of them. Basically it is a single item you put in the shopping cart or a single key you activated. When Steam starts it simply looks up which games belong to your packages and adds them to a the list of your games. A game can be in a lot of different packages: BatmanAAGotY for example came (among others) as a single Steam purchase, Batman+JustCause Steam bundle or a retail CDkey.
A full list of packages containing BatmanAAGotY can be seen at http://steamdb.info/app/35140/subs/ When assigning the game to a shared library Steam looks on this list. Starting with the lowest package id it scans all your sharing partners for that package. The first package that has at least one active partner wins. Unless you disable all of those partners you can only get the game from someone with that exact package. Of the active partners with this package Steam selects the one that comes first in the priority list.
In my case Batman+JustCause wins over the version retail. Since only one of my friends got that package BatmanAA gets assigned to him, no matter what priority the others with the retail version have.
Finding out who has which package is bit tricky. First you need the appid of the game you are want. Look at its store or commuinty page. The number in the url is the appid. For Batman its 35140. Now open a command line and cd to the folder where you installed sfs and run "sfs-select.exe --locate-source 35140" It will print a list of sharing partners with packages containing Batman. They are shown in the order in which steam trys to assign the game to them. Thus the topmost partner with sharing "on" will get it assigned to him. Note that the files sfs-select parses to find that info are only updated when that person logs in at your computer. Thus it can be severly out of date.
By default both CLI and GUI sort by priority. High priority == listed first == low number.