[Request] Flatpak version of StreamFX for OBS #840
Replies: 30 comments 12 replies
-
Method 2 is already supported, you just need to extract it to a different location as shown on the guide you linked. |
Beta Was this translation helpful? Give feedback.
-
@Xaymar thank you for clarifying. The main reason I support the request is that, at least with method 2, OBS is not able to stream with AMF encoding (I don't know if this also with NVENC as well), but the option does appear on the regular OBS bin. If there's a workaround for this issue, maybe it's not necessary to port the plugin |
Beta Was this translation helpful? Give feedback.
-
Unfortunately, I have no reason to support Flatpak since StreamFX already works just fine on the target platforms. There is no return on the investment of time into this for me, the only entity benefitting from this is the Flatpak project. As such, I have no reason to support it myself, but I'll leave this open in case anyone else wants to add Flatpak packaging to StreamFX and maintain it forever. |
Beta Was this translation helpful? Give feedback.
-
Hello, I started writing a Flatpak for StreamFX, and got it working. This is the manifest:
|
Beta Was this translation helpful? Give feedback.
-
Does FlatPak install StreamFX system-wide? System-wide installations for StreamFX aren't officially supported in any way, so the users would be turned away at the door to support. StreamFX on linux is meant to be used in a per-user way.
If FlatPak has a link handler, you should consider adding a conditional
If you build StreamFX as "Grouped", then the downloading of requirements is disabled. Only Standalone builds will enforce a certain version of libOBS, obs-frontend-api, and obs dependencies. There are no plans to allow standalone builds to be configured with different binaries to use, as this has caused impossible issues before - and again led users to be turned away at the door to support. Overall, I'd prefer it if this was part of a GitHub Action instead of a separate fork. Write some triggers that happen on release and daily, create three flatpak packages (stable, testing, nightly) and update each automatically. |
Beta Was this translation helpful? Give feedback.
-
Thank you for your answer!
It depends, Flatpak installations can be system-wide or user-specific. However, because of the sandboxed environment, it shouldn't matter. Do you have examples of issues that I can check?
There's no need to add anything in my opinion, updates are handled by the software installer GUI.
I'll check that, however the maintainers of the OBS Flatpak are the OBS project themselves.
Hmm using
Actually, there's no forking involved when packaging for Flathub. The repository will only contain the build manifest, and eventually additional files (AppStream metadata, patches). Sources are downloaded at build time. A new PR will be opened automatically for new tags to update the manifest. |
Beta Was this translation helpful? Give feedback.
-
The discord has a horrible war zone that is called #support, most of which is windows. The stance of system-wide installations however will not change, unless the Flatpak version of OBS Studio has additional safety mechanisms in place to prevent duplicate libraries from being loaded.
The updater option will be removed in the future as the updater window will be replaced by a new popup window, this is why i suggested it.
As far as I know, setting GROUPED is not possible because of the local environment overriding the configure environment. Two of the dependencies are behind a
Who gets the PR? Flathub? |
Beta Was this translation helpful? Give feedback.
-
Ah, so the issue is duplicate libraries. Well, if the user only installs plugins through Flatpak, this won't be an issue. If they install plugins through Flatpak but also manually install them in their config directory, OBS will try to load both, but at this point I'd say the user was asking for trouble. I tried to do this to check what will happen, and OBS warns about it in the logs. In any case, the Flathub repository has an issue tracker, so you can redirect there users that encounter issues specific to the Flatpak packaging.
Noted. What will be the functionality of this window?
I'll check again, but if I understood correctly, this is the "bundled" section, explaining how to build OBS with the plugin? This is not an option, as OBS is already built, but we have access to the header files and libraries. So I guess the path I took, patching out the downloads, is the way to go.
Yes. For example, this is the Flathub repository for another OBS plugin, and this is an automatic PR that was opened against it. |
Beta Was this translation helpful? Give feedback.
-
The new window will be replacing the about, updater and first-time setup window and merge it into one. The exact design isn't quite known yet, but it will no longer be an optional part of StreamFX. This is why I recommend conditionally replacing the download url with a URL that instructs FlatPak to update StreamFX. Unfortunately this was decided on about two years ago now, and the plans for this will be very unlikely to change. |
Beta Was this translation helpful? Give feedback.
-
Thank you for the explanations. I guess the update part of this window will have to be patched out when it is implemented, as on the Linux desktop, packaged applications are not in charge of updating themselves, or even notifying about updates, as the updated package may not be ready yet. This is the job of the software installer front-ends, which work similarly to iOS' App Store, for example. That's not specific to Flatpak though, all package systems work that way. I understand you don't want to implement different behaviors for other platforms, in this case the patching out will be the responsibility of the packagers. Please let me know if you want to go on, as even if I think it would be great for your users to be able to install StreamFX from their software installer instead of manually copying files around, I don't want this to appear as a burden for you. |
Beta Was this translation helpful? Give feedback.
-
Is there no way to query FlatPak for updates on different update channels? The update notifications have reduced outdated version usage by 99%, so they are an important tool for providing support. If you are willing to take the FlatPak version support all on yourself, then I'll give the okay. Otherwise I'd prefer no FlatPak at all, especially if FlatPak is behind in updates. FYI, the canonical reverse dns name for StreamFX (for OBS Studio) is |
Beta Was this translation helpful? Give feedback.
-
The update notification is sent by the software installer front-end itself. Some, like GNOME Software, also automatically install Flatpak updates. This, coupled with the automatic PR pipeline, ensures that users always have the latest version available, even without launching OBS. It's possible to manually query the
Yes, I'll take the packaging support for the Flatpak version. However, to be clear, I won't (and can't) provide support for issues with StreamFX if they're unrelated to the packaging.
According to the documentation, because this is a plugin to OBS, it has to use its ID as its base. I'll check with the Flatpak team. I'll clean the patches and send you the repository before submitting it to Flathub. In the meantime, please ask if you have any concerns, it's better to have them addressed. |
Beta Was this translation helpful? Give feedback.
-
Here is what I plan on submitting: https://github.com/rmnvgr/flathub/tree/obsplugin-streamfx It contains:
I asked about the ID, and indeed it has to be If all is good for you, I can submit it. |
Beta Was this translation helpful? Give feedback.
-
Thanks @rmnvgr for getting this one rolling! I'd like to clarify the appid situation: on Flatpak, the prefix of plugins' ids must match the parent application's app id. In the case of OBS Studio, I've opted for
This is a fair request. On Flathub, we have a pipeline for automatic updates, and @rmnvgr is already making use of that. That ensures that any new releases you publish will show up on Flathub in just a few (2~3) hours. Does that work for you?
I think the "implicit" contract between us is that we'll triage bugs reported against the Flathub plugin, and only redirect bugs to this repository when they're not related to Flatpak or packaging in general. Does that work for you? @Xaymar at last, if at any point you want control over the Flahub package, just let us know and you'll be granted access to it. Authors always have the highest priority when it comes to maintaining packages. Let me know if there's anything else I can clarify, and again, thanks @rmnvgr for contributing this manifest. |
Beta Was this translation helpful? Give feedback.
-
One thing I would suggest before updating is to manually check new releases to see if they are new stable releases or new beta releases, and only update when they are new stable releases, as the OBS website publishes them all as "the current release", so people often blindly update to a beta release or similar and may have problems as a result. |
Beta Was this translation helpful? Give feedback.
-
You're right. The regex I use only checks for stable releases. |
Beta Was this translation helpful? Give feedback.
-
That is the weirdest system I have seen so far, but if it is necessary I have nothing to say against it.
Anything within <= 8 hours of the actual release date is fine. Above 8 hours we end up in the area of user experience suffering from the FlatPak version being outdated.
Yes this works for me.
|
Beta Was this translation helpful? Give feedback.
-
The tool that automatically checks for updates only has generic git support and can only check for tags. I can manually check if a tag is associated with a release before merging the PR. But why not distribute a new version if it contains bug fixes?
Release notes can be added to the AppStream metadata with the
The manifest associates a tag with a commit. If the tag doesn't correspond to the same commit, the git checkout will fail. However, a new PR will be opened by the update tool if it detects a commit change. Although, in general, it is advised to never recreate tags. |
Beta Was this translation helpful? Give feedback.
-
Actually, the tool also has a JSON module that can be used to query the GitHub API. I think it should be possible to only get PRs for releases, I'll let you know. |
Beta Was this translation helpful? Give feedback.
-
That means that FlatPak has its own update structure entirely, instead of following GitHub Releases. This is a deal-breaker then, since sometimes updates are not released due to newly discovered problems requiring extra days, weeks or even months of development time.
See above, as well as: Please remember that StreamFX is not profitable, and only a hobby for me - there is only 1 active maintainer. It takes time to track down the cause of a bug and fix it.
From what I understand of the AppStream format, it does not support the necessary update note information.
I'm aware of this, but it does not fix GitHub's random corrupted tag problems. If a tag on GitHub gets corrupted, the only choice I have is to recreate it. |
Beta Was this translation helpful? Give feedback.
-
As per my previous message, I updated the manifest to query the GitHub API for the latest release. It will only create PRs for new (non-draft, non-prerelease) releases.
Ah sorry, I misunderstood: I thought you tagged versions that contained bug fixes without releasing them, not that you didn't release because a tag contained a newly-discovered bug.
In any case, the update tool will open a new PR if it finds that a tag doesn't match the commit present in the manifest. |
Beta Was this translation helpful? Give feedback.
-
Hi, sorry about the delayed response. The current plan looks fine to me, so I'd say go ahead and try it. If you can add the Linux installation part on the wiki to instruct users on how to install with Flatpak, that would be great. |
Beta Was this translation helpful? Give feedback.
-
Great! You can track the submission here: flathub/flathub#3159 By the way, do you want to be added to the Flatpak repository?
When it is accepted, I can add this under "Automated Installation":
|
Beta Was this translation helpful? Give feedback.
-
If necessary, sure. |
Beta Was this translation helpful? Give feedback.
-
I'd just like to thank @rmnvgr for the work packaging this. I've just installed the plugin through a nix derivation I based on the flatpak work here. It isn't published anywhere and I'm not sure I want to maintain it long-term, but here's what I got: { lib
, stdenv
, fetchFromGitHub
, cmake
, ffmpeg
, libaom
, ninja
, pkg-config
, qtbase
, obs-studio
}:
stdenv.mkDerivation rec {
pname = "obs-streamfx";
version = "0.11.1";
src = fetchFromGitHub {
owner = "Xaymar";
repo = "obs-StreamFx";
rev = version;
sha256 = "KDzSrvmR4kt+46zyfLtu8uqLk6YOwS8GOI70b5s4vR8=";
fetchSubmodules = true;
};
nativeBuildInputs = [ cmake ninja pkg-config ];
buildInputs = [ ffmpeg libaom obs-studio qtbase ];
dontWrapQtApps = true;
cmakeFlags = with lib; [
"-Dlibobs_SOURCE_DIR=${obs-studio.out}/lib"
"-DSTRUCTURE_PACKAGEMANAGER=true"
"-DENABLE_UPDATER=false"
"-DENABLE_FRONTEND=true"
"-DREQUIRE_JSON=true"
];
patches = [ ./obs-streamfx-force-frontend.patch ./obs-streamfx-no-download.patch ];
meta = with lib; {
description = "StreamFX is a plugin for OBS® Studio which adds many new effects, filters, sources, transitions and encoders - all for free! Be it 3D Transform, Blur, complex Masking, or even custom shaders, you'll find it all here.";
homepage = "https://s.xaymar.com/streamfx-dc";
maintainers = [];
license = licenses.gpl2Plus;
platforms = [ "x86_64-linux" ];
};
} As mentioned elsewhere, there are build process changes in the works for this project & OBS, so this exact derivation will not work forever |
Beta Was this translation helpful? Give feedback.
-
How's the current status? The PR for the flatpak is still marked as draft? |
Beta Was this translation helpful? Give feedback.
-
Hi, i recently was involved to the discussing on that issue report: https://github.com/Xaymar/obs-StreamFX/issues/950 but it has been closed too early to give me a chance to respond. As I think its somelike connected to this Discussion, i post it here. I am not much into how flatpaks work and how glibc is connected to all of this, but i think there would be a few solutions for this:
hopefully someone who is more into this, can do something with this information |
Beta Was this translation helpful? Give feedback.
-
I also wanted to use StreamFX with the current OBS 28.1.2 release on Debian 11 with the flathub version. |
Beta Was this translation helpful? Give feedback.
-
Using method2 I get this in logs
|
Beta Was this translation helpful? Give feedback.
-
For further feature requests, please join the official Discord and create a thread under #development. Thank you. |
Beta Was this translation helpful? Give feedback.
-
Explain the Feature/Enhancement
I believe it would make some Linux users from any distribution easier if there exists a Flatpak version of this plugin. Easier up-to-date package maintainer from this project.
What makes this feature/enhancement useful for StreamFX and its users?
Flatpak being Linux distribution agnostic (on any Linux box that has Flatpak installed) can use this.
Checklist
Any additional Information we need to know?
Here is a link for more information about how to create a plugin for OBS in Flatpak.
Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.
Beta Was this translation helpful? Give feedback.
All reactions