Like the title says I am trying to understand how these things should work together. Part of my issue is I don’t have a good mental model on the Flatpak permissioning / sandbox model. My use case is running a game on Lutris, which is a Flatpack, and using my package install of Mangohud. I am also curious if I should using a Flatpak version of Mangohud instead of the package installed version, and understanding how I would set up Steam as a Flatpak in the future when I switch away from the packaged version.
Thanks for any helpful tips or links you can provide.
I don’t use flatpak but I didn’t have to configure Lutris or Steam in any way for that.
If you look around goverlay you’ll find that there are two ENVs that you can set up in X/wayland service to have MangoHud automatically in every context it can render in.
So first try running with
MANGOHUD=1
env exported. If that doesn’t help, trymangohud steam
.
If I understand correctly, flatpack run in some kind of container, so it’s possible that you might need to set the env or the command, so it happens inside the containerFlatpak apps don’t have access to your system packages, so you need to install mangohud as flatpak. Once it’s installed it’s available to Steam flatpak and can be enabled like system mangohud in system Steam.
https://github.com/flightlessmango/MangoHud?tab=readme-ov-file#flatpak
Edit: Switching from system Steam to flatpak Steam is simple and it’s always possible to switch between them. Just make sure to give flatpak Steam access to the existing SteamLibrary through flatseal.
Personally I have my SteamLibrary at ~/Games/SteamLibrary and give flatpak Lutris/Steam access to ~/Games.
Wait, you can change the location of the Steam library?
It’s possible to have Steam libraries at multiple locations.
Yeah chalk this up to me needing to read that manual.
I took the instructions there and replaced the Steam flatpak with Lutris and it worked - though Mangohud is not reading my existing config even though it has access according to Flatseal.
It’s weird to me that Flatpaks cans interact with other Flatpaks but not system packages. I would assume sandboxing would prevent both of those cases.
Here is my understanding of this now I’ve got everything working on my Flatpak install of Steam:
MangoHud
- Mangohud is installed as another Flatpak,
org.freedesktop.Platform.VulkanLayer.MangoHud
- I don’t think I ever installed this manually, I believe the Steam Flatpak will bring this as a dependency
- To tell a game to use MangoHud you add
MANGOHUD=1 %command%
to the Steam launch options of the game - Alternatively you can use like Flatseal to add
MANGOHUD=1
to the Steam FlatPak to get this working in every game by default
Gamemode
- You need to install the Gamemode daemon, gamemoded as a system package
- Once that is installed you can add
gamemoderun %command%
to the launch options to run the game with Gamemode enabled
- Mangohud is installed as another Flatpak,
I tried so hard to use the Steam Flatpak, but hit a wall when I wanted game libraries on multiple drives. The Arch wiki recommended to use the native binary.
The easiest way is going to Flatseal, selecting steam and under the folders section add the paths to your libraries.