Problem with Steam Icon

Hello, today i have installed King Arthur’s Gold with Steam, but there aren’t any desktop icon. (i have steam flatpak).
Why ?

Is this about the game’s desktop shortcut?
Steam Flatpak’s Desktop folder is located in:
~/.var/app/com.valvesoftware.Steam/Desktop/
This is where you’ll find your .desktop file, however you shouldn’t just copy it over or launch it as is.

This .desktop file was generated by Steam itself, inside the Flatpak environment, which is completely unaware of the existence of any sandboxing whatsoever.

The file just assumes steam is going to be available in your executable path and tries to call it, specifying which appid the app should launch internally.
This is not going to work from outside the sandbox since we don’t have steam in our $PATH.
Fear not. There’s an easy fix:

Copy the file to your actual desktop folder.
cp ~/.var/app/com.valvesoftware.Steam/Desktop/King\ Arthur\'s\ Gold.desktop ~/Desktop/

You should now open the file in a file editor and modify the Exec line as such:
Exec=steam steam://rungameid/219830
Exec=xdg-open steam://rungameid/219830

Hopefully, that should be enough for you to be able to launch the game.

You would normally have to replace steam with something like flatpak run com.valvesoftware.Steam, but thanks to xdg your system should still be able to handle Steam protocol links even though Steam itself is not present in your host system.

Okay, but do you think in future Steam solve that?

And what is the way to add symlink into desktop icon dirs (/usr/share/applications) ? Because when i try to do it, i don’t have permission

do you think in future Steam solve that?

As of right now, Steam Flatpak is only unofficially maintained by Flathub.
I’m fairly sure Valve won’t be fixing this in their codebase any time soon and they don’t seem to be particularly keen on officially switching to Flatpak for now.

They even spinned their own internal bubblewrap-based per-app sandbox compatibility layer named pressure-vessel which is incompatible with Flatpak Steam due to sandbox nesting not being possible at this point.

But these .desktop files could still be modified and exported to your home library without Steam even knowing about it, so I don’t see why anyone wouldn’t come up with a hacky solution for it.
It’s just not a priority.

And what is the way to add symlink into desktop icon dirs (/usr/share/applications) ? Because when i try to do it, i don’t have permission

You can’t do that, not without root access anyway.
That’s the system-wide applications path, meant to be accessed by every user on your system.

I’m fairly sure there’s just you using your computer so that’s not really useful.
Even if that wasn’t the case your Steam apps would only be installed per user, so having than shortcut available system-wide would make little sense either way.

The path you’re looking for is actually ~/.local/share/applications/
You can freedy modify files there so feel free to copy the desktop shortcut there instead:
cp ~/.var/app/com.valvesoftware.Steam/Desktop/King\ Arthur\'s\ Gold.desktop ~/.local/share/applications/
Just make sure you edit the Exec line as previously shown.

I just looked this up on Github.
There are 2 issues related to menu shortcuts and desktop icons pretty much covering both of the above.

There’s also this script for generating menu entries that does pick up Flatpak Steam games.

Now that I come to think of it there’s a far simpler, yet way more controversial, way to have Steam seamlessly create game shortcuts on your Desktop.
You could simply allow Flapak Steam to access your normal Desktop folder so that it can generate its own shortcuts there instead.

This approach goes against sandboxing in general, though as long as you primarily use your Desktop folder for .desktop shortcuts (instead of actual user files) I wouldn’t worry too much about it.

flatpak override --persist=~/Desktop com.valvesoftware.Steam

The above line will register a user override for Steam that should bind mount your actual Desktop folder to the path inside the Flatpak sandbox.

You could literally just do the same for menu entries, though I should stress I wouldn’t advise that unless you honestly don’t care about Steam and any of your games possibly being able to modify any of your menu entries (whether intentionally or in case of a compromise).

It’s no worse than running Steam outside Flatpak (and any other form of sandboxing) but that’s still a pretty big deal for some, including me.
Here’s the override line anyway in case you really couldn’t care less about sandboxing:

flatpak override --persist=~/.local/share/applications com.valvesoftware.Steam

Personally, I get nauseous at the mere thought of Steam being able to generate entries for my menus or games dumping their files in $HOME and this is why I’d put some effort in going the other way instead, though I understand others’ opinions on the subject may differ.

If you later on wish to revert this user overrides you should be able to do it by editing this file:
~/.local/share/flatpak/overrides/com.valvesoftware.Steam
If there’s no other override but these 2 persist ones, feel free to delete the file altogether.