ebkr / r2modmanPlus

A simple and easy to use mod manager for several games using Thunderstore
MIT License
1.22k stars 187 forks source link

[FEATURE REQUEST] - Flatpak Support #729

Open michaelBelsanti opened 2 years ago

michaelBelsanti commented 2 years ago

What problem does the feature request solve? With the Steam Deck releasing soon, I think it would be great to be able to install this without needing developer mode enabled.

Example mock-up (optional) I have no clue how to package a flatpak, but I will be looking into learning and might be able to do it myself.

ghost commented 2 years ago

1+ for this. For me, the problem would solve the compatibility for Flatpak version of Steam: It seems like the appimage version just doesn't work with Flatpak version of Steam and instead launches another instance of steam with login screen. I have flatpak version of Steam because I want to avoid multilib arch's repo and also because of Flatpak's sandboxing.

I think the issue for this specifically can be solved by perhaps adding permission or some kind of link to Steam without avoiding the sandbox, but I have no idea to do that.

GeckoEidechse commented 2 years ago

As r2modman ships its Linux build as an AppImage, the easiest solution would be to unwrap it inside a Flatpak sandbox and ship the resulting image as a Flatpak on Flathub. I recently did exactly this for a Northstar installer called Viper.

The Github repo for the Flathub version can be found here: https://github.com/flathub/com.github._0negal.Viper/

The initial PR to get it added to Flathub is here: https://github.com/flathub/flathub/pull/2991

GeckoEidechse commented 2 years ago

Actually, thinking about it, just unpacking the tar archive inside the Flatpak sandbox is probably a better idea to get closer to native.

Lunchtimeme commented 2 years ago

So I have a Steam Deck and I'd also like to be able to use r2modman on it (in gaming mode) so that's +1 from me. In the meantime is there a workaround I could do myself to make the appimage launch through Steam?

wash2 commented 2 years ago

Actually, thinking about it, just unpacking the tar archive inside the Flatpak sandbox is probably a better idea to get closer to native.

I more or less copied what you did for viper here, and after building and installing as a user r2modman launches, and i can select mods for risk of rain, but it can't seem to launch steam and fails with You are missing the following 32-bit libraries, and Steam may not run: libc.so.6. I also had to explicitly give access to home/.var/app/com.valvesoftware.Steam in addition to filesystem=home to see the flatpak installation of steam along with its games. Did you ever have the same issue? I suppose a solution could be to launch steam with flatpak-spawn if r2modman is detected to be running in a flatpak? A checkbox that allows specifying that steam is a flatpak might be useful as well. I can probably try testing these solutions.

wash2 commented 2 years ago

I got it working with flatpak steam and with r2modnman running as a flatpak :). I'll clean it up, make a PR and try to get the flatpak published as well

GeckoEidechse commented 2 years ago

I also had to explicitly give access to home/.var/app/com.valvesoftware.Steam in addition to filesystem=home to see the flatpak installation of steam along with its games.

I don't see that line in your manifest. Is it not pushed yet? ^^

I'm asking cause I'm having the same issue on Viper, where I cannot access the game files if it was installed with the Flatpak version of Steam: https://github.com/flathub/com.github._0negal.Viper/issues/2

wash2 commented 2 years ago

I also had to explicitly give access to home/.var/app/com.valvesoftware.Steam in addition to filesystem=home to see the flatpak installation of steam along with its games.

I don't see that line in your manifest. Is it not pushed yet? ^^

I'm asking cause I'm having the same issue on Viper, where I cannot access the game files if it was installed with the Flatpak version of Steam: flathub/com.github._0negal.Viper#2

Yup I forgot to push, it's there now.

GeckoEidechse commented 2 years ago

Yup I forgot to push, it's there now.

Ay, copying over the change to Viper Flatpak fixed it there as well, thanks so much <3

AshelySoftpaws21 commented 2 years ago

Yup I forgot to push, it's there now.

Ay, copying over the change to Viper Flatpak fixed it there as well, thanks so much <3

How does one get r2modman to work with the flatpak?

wash2 commented 2 years ago

How does one get r2modman to work with the flatpak?

If you want to try it now, you can download my fork of r2modman build it, copy the built tarball into the directory describing the flatpak (it's one of my repositories https://github.com/wash2/com.github.ebkr.r2modman) and build / install the flatpak (you can find instructions for building them yourself here https://docs.flatpak.org/en/latest/first-build.html). it will be a lot easier after me PR is merged and after the flatpak is accepted.

AshelySoftpaws21 commented 2 years ago

wash2

Alrighty, I got it to build! Tho it launches the .deb version of steam instead of flatpak steam

wash2 commented 2 years ago

wash2

Alrighty, I got it to build! Tho it launches the .deb version of steam instead of flatpak steam

Hmm I don't think I tested with both versions of steam installed at the same time. Looking at the source though, the flatpak dir is checked last when choosing the steam directory, so it effectively has a lower priority.

            const dirs = [
                path.resolve(homedir(), '.local', 'share', 'Steam'),
                path.resolve(homedir(), '.steam', 'steam'),
                path.resolve(homedir(), '.steam', 'root'),
                path.resolve(homedir(), '.steam'),
                path.resolve(homedir(), '.var', 'app', 'com.valvesoftware.Steam', '.local', 'share', 'Steam'),
                path.resolve(homedir(), '.var', 'app', 'com.valvesoftware.Steam', '.steam', 'steam'),
                path.resolve(homedir(), '.var', 'app', 'com.valvesoftware.Steam', '.steam', 'root'),
                path.resolve(homedir(), '.var', 'app', 'com.valvesoftware.Steam', '.steam')
            ];
AshelySoftpaws21 commented 2 years ago

How would one go about getting it to be the other way around? I use the deb version only for ALVR

Sent from my iPhone

On Jun 26, 2022, at 6:26 PM, Ashley Wulber @.***> wrote:

 wash2

Alrighty, I got it to build! Tho it launches the .deb version of steam instead of flatpak steam

Hmm I don't think I tested with both versions of steam installed at the same time. Looking at the source though, the flatpak dir is checked last when choosing the steam directory, so it effectively has a lower priority.

        const dirs = [
            path.resolve(homedir(), '.local', 'share', 'Steam'),
            path.resolve(homedir(), '.steam', 'steam'),
            path.resolve(homedir(), '.steam', 'root'),
            path.resolve(homedir(), '.steam'),
            path.resolve(homedir(), '.var', 'app', 'com.valvesoftware.Steam', '.local', 'share', 'Steam'),
            path.resolve(homedir(), '.var', 'app', 'com.valvesoftware.Steam', '.steam', 'steam'),
            path.resolve(homedir(), '.var', 'app', 'com.valvesoftware.Steam', '.steam', 'root'),
            path.resolve(homedir(), '.var', 'app', 'com.valvesoftware.Steam', '.steam')
        ];

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.

wash2 commented 2 years ago

How would one go about getting it to be the other way around? I use the deb version only for ALVR

You could fork my fork and reverse the array. alternatively, i forget, isn't there an option to select the version of steam that it uses when launching a game?

polluxau commented 1 year ago

where is this now? would love if this was available on flathub :)

altoryus commented 1 year ago

How do you get this working? I'm not an expert on doing stuff, so I'd appreciate a better explanation.

candroid-man commented 3 months ago

Showing support for this, r2modman on Flathub would be amazing