lutris icon indicating copy to clipboard operation
lutris copied to clipboard

[Steam Deck][Flatpak] Create Steam shortcut doesn't work

Open cmalvi opened this issue 3 years ago • 4 comments

  • Create Steam shortcut doesn’t work even with correct write permission

  • Adding the game desktop shortcut to Steam doesn’t work (except with Amazon games that work)

  • Adding Lutris to Steam work, but obviously in this case you can’t set performance settings per game from Game Mode (gamescope)

Sources used:

  • Humble Bundle
  • Origin
  • Ubisoft Connect
  • Amazon Games

cmalvi avatar Aug 28 '22 07:08 cmalvi

+1 - I'm having the same issue. I've only tested with Amazon games so far.

KodeAndGame avatar Aug 28 '22 20:08 KodeAndGame

Tested a few installers, also happens on my end on SD

cheater avatar Sep 01 '22 07:09 cheater

Same issue here - was working fine before the flatpak.

joshbrownSB avatar Sep 04 '22 19:09 joshbrownSB

Same problem

mmm286 avatar Sep 13 '22 14:09 mmm286

I had the same issue and figured out a workaround. The shortcut created by Lutris is located at:

~/.steam/steam/userdata/0/config/shortcuts.vdf

However, steam now uses a folder with your steam user ID inside userdata/. Let's say user id is 12345, the shortcut should be generated by Lutris at:

~/.steam/steam/userdata/12345/config/shortcuts.vdf

My workaround was to symlink the 0 to point to 12345, and after that it worked.

I'm not sure if we should do something in the Steam runner to tell Lutris this is your id? If so, it would be nice to have this showing up when you try to create the shortcut.

ronoaldo avatar Dec 23 '22 03:12 ronoaldo

PS: in my case, I have logged with my alt and my kid account on the same Linux device and that could be the case of having multiple userdata/*/ folders.

ronoaldo avatar Dec 23 '22 03:12 ronoaldo

Looking at this.

Lutris does not know your Steam user ID. It just searches for any config directory and picks the first it finds and goes with that config directory.

This isn't going to work too well when you have more than one userdata like this. But it's not clear how we can pick the right one, if the same home directory contains two.

danieljohnson2 avatar Dec 24 '22 23:12 danieljohnson2

Ask the user.

On Sun, Dec 25, 2022 at 12:49 AM Daniel Johnson @.***> wrote:

Looking at this.

Lutris does not know your Steam user ID. It just searches for any config directory and picks the first it finds and goes with that config directory.

This isn't going to work too well when you have more than one userdata like this. But it's not clear how we can pick the right one, if the same home directory contains two.

— Reply to this email directly, view it on GitHub https://github.com/lutris/lutris/issues/4453#issuecomment-1364596561, or unsubscribe https://github.com/notifications/unsubscribe-auth/AABPWPXYUGXO45XGGCD2GMTWO6DZZANCNFSM572T4UYA . You are receiving this because you commented.Message ID: @.***>

cheater avatar Dec 27 '22 17:12 cheater

Having just run into this problem today, here's one possible solution: (Please bear in mind I have only barely looked at this, with the intent to see what might be possible...)

It appears from this documentation that if you have have a web API key (information here) you can use the steam web API's GetPlayerSummaries endpoint to retrieve the display names (personaname) for a list of steamids.

If I understand correctly that the folder inside userdata is your steamid, then Lutris could check the userdata folder, and submit a single API request for the display names of all current profiles that have a config directory.

IF there are multiple profiles then the "Add Steam Shortcut" item could be changed to a nested menu "Add Steam Shortcut For ->" with a submenu listing each local profile's personaname which follows the current behavior of showing "install/delete" depending on if it exists.

If only one profile exists nothing needs to change, and in the case that multiples exist and the API call fails, I would suggest perhaps falling back to "Steam Profile #xxxxxx", at least offering the user the opportunity to install for one/both and work it out themselves. (Heck, could do that anyway if the API business is too cumbersome. Anything is probably better than the "WHY DOESN'T THIS BUTTON WORK DAMMIT?!" that is the current experience. :smile: )

Having no experience with the Lutris codebase I would likely not be an ideal person to take this on, but if the solution is approved and nobody wants to look at it I'd be happy to at least have a glance and see if I could make it work.

joshproehl avatar Jun 15 '23 21:06 joshproehl

The most obvious place to start looking at would be in file lutris/util/steam/config.py in get_user_steam_id where we recent the steam_id based on the most recently used. That's the 1st function needing to be fixed, maybe by renaming it to get_user_steam_ids. Then the code using this function needs to be updated to handle possibly multiple IDs and lastly it has to be integrated in the UI. Making calls to the API shouldn't be a problem, we already call the API in get_steam_library, which is then used by the Steam service.

strycore avatar Jun 16 '23 03:06 strycore

Also please make sure you're using an up-to-date Lutris flatpak and SteamOS Stable

al12gamer avatar Jul 07 '23 21:07 al12gamer

Not sure if it's beneficial, but I noticed that Steam Rom Manager is able to parse out steam user ids using this helper.

Not sure how useful that is since I don't know typescript or python, but I thought I'd leave it here in case it would be a helpful pointer to someone more knowledgeable.

taylor85345 avatar Jul 25 '23 15:07 taylor85345

You can now test the Steam account selector in the preferences window

image

This was the last ticket targeting 0.5.14 so expect an update in Flathub Beta soon to test this on Steam Deck.

strycore avatar Oct 10 '23 20:10 strycore