DavidoTek / ProtonUp-Qt

Install and manage GE-Proton, Luxtorpeda & more for Steam and Wine-GE & more for Lutris with this graphical user interface.
https://davidotek.github.io/protonup-qt
GNU General Public License v3.0
1.24k stars 40 forks source link

Application wasn't able to open game list, now cannot reinstall #155

Closed madduffy closed 1 year ago

madduffy commented 1 year ago

Describe the bug
May be two bugs...

I was running protonupqt successfully for 2 months but when I went to check for new proton updates today the app would not open the game list when the button was pressed. I rebooted and it was the same. I'm using the dec 8 preview build on my steamdeck.

Next I attempted to remove and reinstall. The discover app aborts the install, complaining about the flatpak having a bad commit signature key with a bad date associated. Removing local data from previous install did not resolve.

To Reproduce
Steps to reproduce the behavior:

  1. Open app

  2. Click 'show games list

  3. Nothing happens

  4. Search app in Discovery, install

  5. See error

Expected behavior
Loads games list for proton selection.

Installs via discovery without error.

Screenshots
N/a

Desktop (please complete the following information):

Additional context
Add any other context about the problem here.

Terminal output

Open the Terminal app and type one of the following commands and press Enter (The app is called "Konsole" on Steam Deck):

If you installed ProtonUp-Qt via Flatpak (Discover on Steam Deck), type:
flatpak run net.davidotek.pupgui2

If you have downloaded the AppImage, navigate to the folder containing the AppImage file and type:
./ProtonUp-Qt*.AppImage

Try to replicate the bug and paste the text output of the command here afterwards.
madduffy commented 1 year ago

Installed a bunch of desktop updates via discovery and now installing works. Either that or having steam open during install was the issue.

Still cannot access the game list

PunkyBust commented 1 year ago

Hello,

Have same problem with show game list, and game detection generally. It is no more apprear since 1 or 2 weeks, also the tools always appear as unused wthat is false because many of my gameS pointed on GE7-42. I'm on SteamOS 3.4, install via discover.

20221210_141041 20221210_140211

Seems protonqt has problem with parsing or detection games The folders location is still the same for compatdata or compatibilitytools.d. it is so strange, I have try many reinstall and clear all steam cache without any improvement. Also game reinstall give nothing, try all I can to find an solutions on my side.

Thanks lots, for this very usefull tool. Hope this features will come back :) Have a good day.

DavidoTek commented 1 year ago

Thanks for the report.

Also, for advanced debugging, can you run a command on the Steam Deck and post the text output here? You can do this by opening the terminal app (called Konsole on Steam Deck), typing following text and pressing Enter on the keyboard afterwards: cat ~/.local/share/Steam/config/config.vdf | grep -A16 CompatToolMap This should show a list of games (ids) and compatibility tools.

sonic2kk commented 1 year ago

Sorry, just want to throw my hat into the ring here and say I'm seeing this on Flatpak and from source on my Steam Deck and PC. I even rolled back to a commit from source that I know was working, 8eb0432f6ed76d4b2e9b49f240fb375715d467ad, and it still shows the same.

I'm on the Steam Client Beta, I wonder if something changed here, but just wanted to say that from source I rolled back to a version that I can say for sure was working but is now apparently not.

sonic2kk commented 1 year ago

I know you weren't asking me so I hope this isn't disruptive, but I did some testing of my own following the guidance you gave. I'll put it in spoilers as to not spam the issue and hide it if it's not useful.

Testing Efforts On my side the "Show Games List" button results in an error: ```python3 Traceback (most recent call last): File "/home/emma/Programming/ProtonUp-Qt/pupgui2/pupgui2.py", line 288, in btn_show_game_list_clicked gl_dialog = PupguiGameListDialog(install_directory(), self.ui) File "/home/emma/Programming/ProtonUp-Qt/pupgui2/pupgui2gamelistdialog.py", line 34, in __init__ self.setup_ui() File "/home/emma/Programming/ProtonUp-Qt/pupgui2/pupgui2gamelistdialog.py", line 47, in setup_ui self.update_game_list_steam() File "/home/emma/Programming/ProtonUp-Qt/pupgui2/pupgui2gamelistdialog.py", line 68, in update_game_list_steam for t in get_steam_ctool_list(steam_config_folder=self.install_loc.get('vdf_dir')): File "/home/emma/Programming/ProtonUp-Qt/pupgui2/steamutil.py", line 88, in get_steam_ctool_list ctool_map = _get_steam_ctool_info(steam_config_folder) File "/home/emma/Programming/ProtonUp-Qt/pupgui2/steamutil.py", line 144, in _get_steam_ctool_info for t in compat_tools: TypeError: 'NoneType' object is not iterable ``` This happens with both the latest commit and from https://github.com/DavidoTek/ProtonUp-Qt/commit/8eb0432f6ed76d4b2e9b49f240fb375715d467ad, which was a known working commit.
That command only showed a little bit of the output from that file (I guess 16 lines given `-A16`?). ``` "CompatToolMapping" { "0" { "name" "proton_7" "config" "" "priority" "75" } "524220" { "name" "Proton-stl" "config" "" "priority" "250" } "976730" { "name" "proton_experimental" ``` It looks right to me, the code is also looking for `CompatToolMapping` with the vdf library. My _guess_ here is that something on the Steam side changed, and the problem here as well is that this change may only affect the Steam Beta? I'm on the Steam Client Beta on my PC, laptop and Steam Deck, and I believe at least one user here was on the SteamOS Preview channel as well. But it's possibly too early to conclude that, I'm just taking this from the fact that even previously working commits exhibit this issue.
Looking into the code now, in `steamutil.py`, it seems like an exception is being raised in `_get_steam_ctool_info`. The for loop here never gets triggered, and the except block does: ```python3 with open(appinfo_file, 'rb') as f: header, apps = parse_appinfo(f) for steam_app in apps: if steam_app.get('appid') == 891390: compat_tools = steam_app.get('data').get('appinfo').get('extended').get('compat_tools') break ``` From digging deeper, more specifically it seems like `parse_appinfo` is failing. It seems like the `steam` library was updated, someone noted an issue with a changed format for `parse_appinfo` and it was fixed with a very new release yesterday: https://github.com/ValvePython/steam/issues/418
sonic2kk commented 1 year ago

After testing I can confirm the issue is with the steam library's version being out of date, possibly related to https://github.com/ValvePython/steam/issues/418.

Updating to v1.4.4 fixes the issue.

DavidoTek commented 1 year ago

I know you weren't asking me so I hope this isn't disruptive, but I did some testing of my own

Thanks! That was helpful as I wasn't able to replicate the issue (I haven't updated the Steam client for a few days).

madduffy commented 1 year ago

Thanks for the report.

  • What is shown in the dialog when you press Show game list?
  • Are there any games in the game list and what does it show for compatibility tool, is it empty?
  • Also, what happens if you set a game to GE-Proton7-42 in the game list dialog and close and re-open ProtonUp-Qt? (Do this while Steam is not open.) Will it then display the correct compatibility tool or is it still broken?

Also, for advanced debugging, can you run a command on the Steam Deck and post the text output here? You can do this by opening the terminal app (called Konsole on Steam Deck), typing following text and pressing Enter on the keyboard afterwards: cat ~/.local/share/Steam/config/config.vdf | grep -A16 CompatToolMap This should show a list of games (ids) and compatibility tools.

Looks like we are already onto the fix, but for the record the behavior is that nothing happens when you try to open the game list, where normally it would bring up the window with each game and the compatibility options.

Another clue is that I have configured games to use proton-ge-42 but the main window indicates it is unused.