-
Notifications
You must be signed in to change notification settings - Fork 72
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
[Feature Request] Non-Steam Game Improvements #960
Comments
This gist I made illustrates how to to get information from each shortcut entry: https://gist.github.com/sonic2kk/9bf61220ce6650db6cc3eddf5a7bc493 |
I've spent a couple of days investigating this, and while it is now 100% feasible and possible to get information about Non-Steam Games, we just need to find the best way to integrate it. |
Most of this will be implemented in #963, it implements the core functions for parsing |
Some updates:
Most of the remaining work for this PR is just implementing the remaining functions following a similar pattern to how we implemented The other work around setting fields like hidden in The remaining work in this PR should be straightforward to do, I will work on it soon hopefully. |
Decided to go with using the shortcut |
I looked at a friend's If no shortcuts have ever been added to Steam, it seems like For setting the OpenVR and AllowOverlay options, we do that in a block that looks like this:
Noting that However, if no Steam shortcuts have been added, the "Apps" block is absent entirely! I am conscious of making sure we insert this into the right place in the VDF, but we may not be able to make assumptions about the file structure. Hopefully Steam is not fussy, and we can simply insert the "Apps" block into the bottom of the file. From there, we should be able to create the block for the Non-Steam AppID we're creating, and insert our desired values. It'll be a bit tricky but it should be feasible. We should be able to check for and create VDF sections, maybe we could even make a helper VDF to create nested VDF sections, that way we could just say |
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
This comment was marked as off-topic.
Apparently, only Non-Steam Games use the unsigned 32bit AppID in the "Apps" section. Regular Steam games will sometimes store controller config information here, and they use the regular Steam AppID. Not a problem for implementation, just worth pointing out for future reference. |
This has been a real pain in the ass to work through. There's veeeery slow progress being made on this locally. I have a branch I'm testing things on (with an initial push here) but this is not an easy problem to solve with Bash. I somewhat regret not investing the time in trying to make this in like C++ or something, but here we are. I'm hoping to get this resolved sometime soon, and once the remaining Non-Steam Game stuff is in place, v14.0 should be pretty close to releas.e |
Fixes for "Allow Overlay" and "OpenVR" options were merged with #1119. |
Implemented support to list all Non-Steam Games into the |
The final remaining piece of work for this issue is to fix setting the "Hidden" option. Steam treats It also does not have Despite all of this, however, because we can get the collection name from Basically if we treat adding Non-Steam Games as |
System Information
Feature Description
Non-Steam Games have had it a bit rough historically, but that has changed a lot in recent months with things like SteamGridDB integration, artwork selection, and compatibility tool selection. However, there are still some improvements we can make.
Integrate Non-Steam Games with
getid
,getname
,getexe
,getgamedir
,getcompatdata
Right now it is not very easy to get things like the AppID or EXE name for Non-Steam Games, because they don't integrate with the associated commands. We should try to address some of this. We should be able to attempt to parse out information on Non-Steam Games from the
shortcuts.vdf
file, using some assumptions about the file format. This should be constant and we already do this when adding Non-Steam Games. I wrote a GitHub Gist which can extract all AppIDs fromshortcuts.vdf
, but it can't extract others and doesn't associate shortcut information, i.e. there is no way to know what game name an AppID corresponds to.It may be tricky to do but it should be feasible, we can split the file based on the bytes around the part where a shortcut begins and ends I think (other parsers must do this too, right?) and then loop through each of those, parsing out the information for each.
For each of the commands:
getid
, we should be able to use the game namegetname
, we can use theGeneral Command to List Non-Steam Games
This one should be quite handy, we should have a command to output all Non-Steam Shortcuts including their AppID. We could default to the format
Game Name (AppID) -> /path/to/exe
, with options to list only some fields i.e.name
,exe,
gamedir
, etc. Basically the fields from above. Then we could have a command to displayall
, which would return the name, AppID, startdir, etc, perhaps in a format like this (could have more/less info and/or in a different format, this is just an example):Command to Set SteamGridDB Artwork for All Non-Steam Games
(see also #934)
Following on from the above, we can have a command to get all Non-Steam AppIDs and then set SteamGridDB artwork on them, using the Game Name as the search field.
It should be possible to implement this though, because we can do it for all Steam AppIDs, and the gist I wrote returns the 32bit unsigned AppID, so it would just be a case of passing
commandlineGetSteamGridDBArtwork --search-name="${SHORTCUTSENTRYNAME}" --filename-appid="${SHORTCUTSENTRYAID}" --nonsteam --apply
inside of a loop.The work here doesn't necessarily have to go in any order, but the command integration will probably come first, because it'll help proof out the remaining work. If we can list all Non-Steam Games with linked names and AppIDs, it'll make the SteamGridDB integration very straightforward, and all of this will be more straightforward to do if we can individually do this when Non-Steam Games are integrated with other commands.
TODO:
getid
(appid field already inshortcuts.vdf
, though casing can vary)getname
(appname field already inshortcuts.vdf
, though casing can vary)getexe
(Exe field already inshortcuts.vdf
, though casing can vary)getcompatdata
(compatdata for Non-Steam Games is always the Steam root steamapps folder's compatdata i.e./home/gaben/Games/steamapps/compatdata/000000000
)getgamedir
(use StartDir for this)localconfig.vdf
)localconfig.vdf
The text was updated successfully, but these errors were encountered: