tralph3 / Steam-Metadata-Editor

An easy to use GUI that edits the metadata of your Steam Apps
GNU General Public License v3.0
161 stars 18 forks source link

Add support for VDF version 0x107564428 #26

Closed tralph3 closed 1 year ago

kevin-wijnen commented 1 year ago

Good news: I've got it to boot on the Steam Deck! (with 9b20527, not any other commit or gone further than this) See this screenshot: image

For others wanting to test it on a Steam Deck, these are the steps I took to get it to run:

  1. Have Distrobox installed and make an Ubuntu container for the use of git, and apt. See this guide for the Steam Deck specifically, if you need help with setting it up.
  2. cd into the directory you want to compile and store Steam Metadata Editor.
  3. git clone https://github.com/tralph3/Steam-Metadata-Editor.git - Pulling the master branch in.
  4. cd Steam-Metadata-Editor
  5. git fetch origin pull/26/head:vdf_0x107564428 - Pulling this Pull Request in as the branch's name on GitHub.
  6. git checkout vdf_0x107564428
  7. ./make_deb.sh - Compiling the .deb package. Make sure make_deb.sh is marked Executable! (Right Click -> Properties -> Permissions Tab, check the Is executable checkbox.)
  8. sudo apt install ./Steam-Metadata-Editor.deb - Installing the .deb package. Press Y to continue the install.
  9. ./steammetadataeditor - Running the application through Terminal, seeing the window pop up.

To uninstall the app, do sudo apt remove steam-metadata-editor.git and confirm the action by pressing Y.

@tralph3 Might be worth to point out the current README.md refers the .deb package to your ZeroTier-GUI project. Will do the correction tomorrow, if it has not been done by then.

Another suggestion would be thanking PawX for the repository mentioned in the Issue #24 for figuring out what got added in the appinfo.vdf that led to this fix.

tralph3 commented 1 year ago

What!? I was giving instructions for ZeroTier all this time? Haha, my bad. I'll fix it right now. Glad to see it working. I'll thank xPaw too.

kevin-wijnen commented 1 year ago

What!? I was giving instructions for ZeroTier all this time? Haha, my bad. I'll fix it right now. Glad to see it working. I'll thank xPaw too.

Yeah haha, I noticed that when you mentioned it to be packaged as ZeroTier.

Anyway, I tested appending TESTEDIT to FINAL FANTASY VII REMAKE INTERGRADE's title, and it seems to work fine as seen in this screenshot: image

This was done with Steam shutdown, in case Steam would overwrite the data or corrupt it somehow. Changing the developer, publisher, Steam release date and original release date however won't accept any changes, as then the original metadata is restored by Steam itself apparently.

kevin-wijnen commented 1 year ago

Update to previous comment: Seems like editing a publisher or developer's name (to Square Enix2 and Square Enix3 for example) won't be changing the actual developer/publisher on the game info section.

kevin-wijnen commented 1 year ago

Update: Sorting name change seems to work as well (managed to change Spelunky's sorting name to Spelunky 3, having it appear under Spelunky 2 when pulling up games with the term spelunky). Now only need to see if those changes last in Game Mode, and whether I can change launch menus.

tralph3 commented 1 year ago

I can confirm that neither Developer nor Publisher can be changed.

Maybe it's not possible anymore, I'll investigate further.

kevin-wijnen commented 1 year ago

I can confirm as well that the changes seem to stick on the Steam Deck's Game Mode! It seems that Game Mode's boot sequence does not mess with the modifications made in appinfo.vdf, luckily. This would make it viable to use it on Steam Deck.

See this screenshot (Spelunky's sort name changed to Spelunky 3, allowing Spelunky 2 to be ahead in the sorting): image

So far, the current functionality has been tested (on Steam Deck):

kevin-wijnen commented 1 year ago

Also a bug detected: for some reason it thinks some Proton versions got a launch menu to edit. When wanting to edit said menu, an empty window pops up because there are no keys in the selected str.

tralph3 commented 1 year ago

The reason it does that is because Proton is of type "Tool", and there are some Tools you might want to modify its launch menu. So, if you have some Proton version installed, then the button will enable.

I'll add a check to not launch it if there's no keys.

kevin-wijnen commented 1 year ago

Seems like the blank window will still pop up, but this time the program will ask whether you want to create launch options (with your latest commit 699e1fd. image

On a related note: Is it intended behaviour that not every game or tool can create a new launch menu? The Edit launch menu button is often greyed out for most games due to them not having any launch menus, sadly.

kevin-wijnen commented 1 year ago

Seems like editing a launch menu would not function as intended. When editing RetroArch's launch menu to add another Linux option for launching an AppImage, no option is made available on Steam to choose. Editing that of Civilization V however would result in another option to be presented to the user, but would not launch the linked executable/AppImage.

Edit: Seems to be just not running .AppImage files. Running a different application's start.sh file got the application to launch under Sid Meier's Civilization V.

To add to my previous comment: if it's possible, would love to see the option to add launch menus for any game to add in wanted mod loaders etc., as described by the example in the current README.md. Only games with pre-existing launch menus (even invisible ones to the user on Steam) can be edited, from my quick testing.

tralph3 commented 1 year ago

The button is only available on applications of type "Game", "Tool", "Application" and "Demo". On top of this, it also needs to be installed, that's why it's greyed out for the majority.

Now that I think of it, I don't really know why I added that check. Editing the metadata of uninstalled games shouldn't have any problems.

tralph3 commented 1 year ago

I think I had added the check to prevent you from opening games that had no launch menus. With the new message in place, there's no need for it anymore.

kevin-wijnen commented 1 year ago

The button is only available on applications of type "Game", "Tool", "Application" and "Demo". On top of this, it also needs to be installed, that's why it's greyed out for the majority.

This is apparently not the case, see screenshot: image

The game Coromon for example is installed, yet I can't edit a launch menu of it (it does not ship with a launch menu by default). Its Edit launch menu button is greyed out. Only RetroArch and Sid Meier's Civilization V were working examples, of which I can edit a launch menu of.

kevin-wijnen commented 1 year ago

Checking once again, it seems to be able to only edit games that are installed on the internal SSD. Is it possible to enable the feature for games that are installed on an external (but connected) storage device, like a micro SD card?

tralph3 commented 1 year ago

I have removed the check already since it's no longer needed. In order to verify if a game is installed or not, I check the libraryfolders.vdf file which in theory tells me where all the Steam libraries are located in the file system.

It seems tho it may fail at times if using external storage? I don't know how the Steam Deck handles this.

In any case, this shouldn't be an issue anymore. Try the latest commit please.

kevin-wijnen commented 1 year ago

I have removed the check already since it's no longer needed. In order to verify if a game is installed or not, I check the libraryfolders.vdf file which in theory tells me where all the Steam libraries are located in the file system.

My bad, forgot to test the latest commit. It seems fine with detecting launch menus now. However, games that aren't installed on the internal storage can't edit the launch menus (at least, regarding to executables). When clicking on Coromon's launch menu edit button, it shows the Windows and macOS launch menu items. But when trying to change the executable, or add a new one and change that, the file browser does not show up.

In the Konsole window, it seems to point out that the script can't handle external storage install directories:

Exception in Tkinter callback:
Traceback (most recent call last):
    File "/usr/lib/python3.8/tkinter/__init__.py", line 1892, in __call__
    return self.func(*args)
    File "/opt/sme/steammetadataeditor.py", line 1038, in <lamba>
        command=lambda: self.generate_launch_option_string(
    File "/opt/sme/steammetadataeditor.py", line 926, in generate_launch_option_string
        installDir = self.appInfoVdf.parsedAppInfo[appID]["installDir"]
KeyError: 'installDir'

Is there any way I could assist in finding out why the key installDir is not found? The path to Coromon should be /run/media/mmcblk0p1/steamapps/common/Coromon. This file path is bound to change, as on SteamOS main (the very latest nightly/beta version), Valve changes it to a different micro SD card mount path that's more in like with other operating systems (though I forgot the exact way of it at the moment).

tralph3 commented 1 year ago

That path is actually quite normal for removable storage.

The issue here is that it's not finding that other mount point as a Steam library.

Could you share the contents of ~/.local/share/Steam/steamapps/libraryfolders.vdf?

kevin-wijnen commented 1 year ago

Yeah, though Valve seems to be bent on changing it to /run/media/deck/<UUID of your storage device>, which easily breaks a lot of third party apps incl. non-Steam-games added to Steam itself sadly.

Anyhow, here's libraryfolders.vdf on Pastebin. Coromon's app ID for reference is 1218210.

tralph3 commented 1 year ago

Ok, I did some regex magic, it should be working way better now. Give it a shot.

kevin-wijnen commented 1 year ago

This did the trick! I had to keep Steam shutdown while saving the changes or else it wouldn't detect the added launch options to Coromon. Thanks for fixing it! It should be all functional right now, from what I can see. Besides the earlier mentioned publisher/developer change (which I made a separate issue for), it should be all functional.

I'm only not sure what changing the "Original Release Date" is for, only changing the Steam release date seems to change it in the game info screen on the client nowadays.

tralph3 commented 1 year ago

It was there in the metadata, so I thought I'd include it. I guess I should remove that, along with Developer and Publisher sections of the GUI.