Publish app as flatpak on Flathub
Checklist
- [x] I read and understood ASF's Contributing guidelines
- [x] I also read Setting-up and FAQ, I don't need help, this is an enhancement idea
- [x] This is not a duplicate of an existing issue
- [x] My idea doesn't duplicate existing ASF functionality described on the wiki
- [x] I believe that my idea falls into ASF's scope and should be offered as part of ASF built-in functionality
- [x] My idea doesn't violate the Steam Subscriber Agreement
- [x] My idea doesn't violate the Steam Online Conduct
- [x] This is not ASF-ui suggestion
Enhancement purpose
It would be nice if you could publish this as a flatpak on flathub e.g.
Flatpaks are a modern software distribution mechanism for Linux distros, can thus installed on any distro and are easy to update. They are easy to install and update and work on all Linux distros. Also, if you publish it on Flathub you may grow your user base given many distros include that and it is a common software source, so your app can be discovered more easily.
Solution
Here is how to get started.
Note if you need access to the (data of) an installed Steam client, you likely can do so like these apps do that something very similar:
- https://flathub.org/en/apps/io.github.Foldex.AdwSteamGtk -> https://github.com/flathub/io.github.Foldex.AdwSteamGtk
- https://flathub.org/en/apps/com.steamgriddb.steam-rom-manager -> https://github.com/flathub/com.steamgriddb.steam-rom-manager
- more potentially related apps
Why currently available solutions are not sufficient?
I only see you offer static files on your release GitHub page. These have the following disadvantages:
- do not update automatically
- are not sandboxed
- are not checked by a third-party like Flathub
- may not actually run on all Linux systems (flathubs are made for this and once you have flatpak installed it should work)
- are not easy/intuitive to install
Also, Flathub is just "the place to be" for Linux apps and is growing, so if you have your app there, it also gets to be found.
Can you help us with this enhancement idea?
Somehow, I can test and offer feedback, but can't code
Additional info
I can test a flatpak.
Although I use flatpak myself and I consider it a nice addition to the software distribution, your assumptions here are simply not correct.
Why currently available solutions are not sufficient?
- do not update automatically - Yes, it does.
- are not checked by a third-party like Flathub - Source code is available to review for everyone in the world.
- may not actually run on all Linux systems - I believe 99% of Linux systems are covered as for today
- are not easy/intuitive to install - Simply not true, you need to just unzip a file.
Saying that I would like to see anyway, ASF in the flathub directory with the verified badge. It will somehow improve the visibility and the status itself of the project and the developer.
I think it's better not ship with Flathub there are a lot of people use Docker and know nothing about it, they come and complain the discord server about support. Meanwhile its just a user configuration error or it is something within Docker itself.
Since Flatpak the technology itself also relies on isolation it also might drive some users insane because they don't understand the technology they use and could have gone simpler methods instead.
Unfortunately many beginner friendly distros serve software with flatpak and newcomers not even aware of the performance drawback and many issues the technology brings.
The difference is the flatpak is already configured to work out of the box in an ideal case, so there is nothing to complain. I alos have shown how to do it so I don't know what access this app needs but I guess it should be doable. Most apps, even quite advanced ones, can be shipped with flatpak without any problems.
Just so this issue has some feedback from me - I don't have any strong opinion at this point whether to consider in favour or against flatpak.
Just so you're aware, I'm not big fan of containers as a whole. People that want to run ASF inside a container to get "sandboxing" can already do so with ASF's docker image, and all other points are pretty much null as per what @nolddor stated above.
At the same time I'm not saying hard no, because I have no arguments in favour rejecting it. I need to dig into flatpaks first (as I was never on the creating end) before I decide whether to consider or not.
Until then this issue is in evaluation stage. If by any chance somebody wants to speed this up, you're more than welcome to create PR for ASF actually producing such flatpak, so I have less research to do. Otherwise, it's on no-priority wishlist/evaluation, as it's not core feature of ASF and I don't consider it priority of any sort, as existing solutions (including superior ones) already exist.
Had an hour today to quick look to this. Here is a sample that might serve as starting point:
sudo apt install flatpak flatpak-builder
flatpak install org.freedesktop.Platform//25.08 org.freedesktop.Sdk//25.08
flatpak-builder --user --install --force-clean ./out net.justarchi.ArchiSteamFarm.yaml
flatpak run net.justarchi.ArchiSteamFarm
File: net.justarchi.ArchiSteamFarm.yaml
app-id: net.justarchi.ArchiSteamFarm
runtime: org.freedesktop.Platform
runtime-version: '25.08'
sdk: org.freedesktop.Sdk
command: ArchiSteamFarm
finish-args:
- --share=network
modules:
- name: asf
buildsystem: simple
build-commands:
# Extract ASF into the flatpak file system
- unzip ASF-linux-x64.zip -d ${FLATPAK_DEST}
# Make ASF executable from the flatpak standard bin path
- mkdir -p ${FLATPAK_DEST}/bin
- ln -s ${FLATPAK_DEST}/ArchiSteamFarm ${FLATPAK_DEST}/bin/ArchiSteamFarm
# Make ASF config to be stored in the flatpak standard config path
# This location is writable and shared within the host
- rm -rf ${FLATPAK_DEST}/config
- ln -s ~/.var/app/${FLATPAK_ID}/config ${FLATPAK_DEST}/config
sources:
- type: file
url: https://github.com/JustArchiNET/ArchiSteamFarm/releases/download/6.2.2.3/ASF-linux-x64.zip
sha256: f97bbab0f50cff08cdda0ee323be20e17f287e5650e37e315e53cee9bac6014f
dest-filename: ASF-linux-x64.zip