Open RushingAlien opened 1 year ago
And i'm not sure, but i think it's also only on opengl games?
Related to #8599.
I've been researching, and i've come to guess that this is due to the overlay being 32 bit. All the while, for flatpak apps 32-bit support, it needs to be added per app in their manifest, otherwise, no 32 bit libraries for said app,. Most flatpak games don't have this. To me, best course of actions are :
--allow=multiarch
option mounts org.freedesktop.Platform.Compat.i386
to the appropriate directory within the namespace and also giving information to the dynamic library loader where it is.the overlay in Steam Deck's gamemode is integrated to gamescope, bypassing any need to inject to games.
I've been researching, and i've come to guess that this is due to the overlay being 32 bit
I don't think that's it. For the LD_PRELOAD
code-injection used on desktop, both 32- and 64-bit versions of the overlay module exist: 32-bit games must load the 32-bit gameoverlayrenderer.so
, 64-bit games must load the 64-bit gameoverlayrenderer.so
, and the opposite is not possible. Because Steam doesn't know whether your game is 32-bit, 64-bit or even a mixture of the two, the way it sets up the LD_PRELOAD
is to try to load both. Whichever overlay is successfully loaded, you will get an error message for the other one (but that error message is harmless and does not actually mean that the overlay module was not loaded).
A more likely reason for this to be broken for Flatpak non-Steam games is that the Steam overlay assumes that various aspects of process state are shared between Steam and the game, including /tmp
and the process ID namespace - but Flatpak's sandboxing means that non-Steam games installed via Flatpak do not share those aspects of their process state with the un-sandboxed Steam.
(This is the same reason why the various versions of Steam Linux Runtime share the process ID namespace with Steam - we originally tried using a new process ID namespace for the game-specific container, but that broke the overlay.)
I tried that with libretro flatpak, that I think is 64-bit. I get many occurances of this:
ERROR: ld.so: object '/home/dkl/.local/share/Steam/ubuntu12_32/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.
and only a single message of this
ERROR: ld.so: object '/home/dkl/.local/share/Steam/ubuntu12_64/gameoverlayrenderer.so' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS64): ignored.
So it fails to load both 32 and 64 bit library, and of course the overlay doesn't work. The overlay works for me for non-Flatpak non-Steam games with no problem.
- flatpak game
Sorry for the silly question, but did you try using the Steam Overlay on games from Flathub, or am I mistaken?
Your system information
Please describe your issue in as much detail as possible:
Steam has an overlay for quick access to frequently used menus in steam, however this overlay does not work when steam is running a flatpak app, even with ~/.local/share/Steam exposed to the flatpak sandbox filesystem. LD_PRELOAD-ing also has failed Related issue : https://github.com/flatpak/flatpak/issues/1756
Steps for reproducing this issue:
~/.local/share/Steam
is exposed to the flatpak sandbox