Flatpak support

By @Marco_Laux on the Discord server:

would it be possible to support flatpak? It’s the most used packaging format outside of the Ubuntu world. Even Linux Mint and Elementry who are based on Ubuntu don’t use Snap but support Flatpak and Flathub.

You can then target every major distribution (Fedora, Mint, CentOS, Elementary, Endless, Zorin). As Arch and Fedora gains more and more ground (Fedora in the gaming and enthusiasts world, Arch thanks especially to the Steam Deck and Valve) I would sugest Flatpak should be the default, not Snap.

It can also be pretty much automated with Flathub. Once setup you won’t have to take care of it much.

One of the blockers for supporting other package systems is IPM (Inkdrop Package Manager).

Currently, ipm is bundled as another app in the same snap package:

I am terrible at creating and maintaining these packages, and it wouldn’t have been possible without help from one of the users.

:thinking: Idea: Stop bundling IPM in the app

Bundling the ipm command makes packaging so complicated.
So, a workaround would be to provide it separately as a typical npm package.
It requires some work to reimplement the module to install plugins in the app.
After that, I’d be happy to consider providing Flatpak.

On top of that, dropping the command will make the building process significantly simple.
So, it would be beneficial for other platform support.

Hey Takuya, thank you very much for the detailed reply!

I’m aware that other flatpaks have dependencies (like runtime environments or language specific files).

Would it be possible to create a seperate dependency package for ipm that is not visible as a normal app in the flathub store and that it gets installed automatically with inkdrop?

For example I think about how Firefox solves this with it’s locales. The language files also only get installed with the app (also gets automatically updated), but is not visible in the frontend - same with the GTK and QT runtime environments or specific Mesa packages.

On the other hand having a typical npm package with ipm would indeed be a valid solution.

When we think about who needs ipm: developers and themers - those people are already tinkerer and should be comfortable installing ipm globally or declaring it as a dependency in their project.

That’s right. Creating themes and plugins requires a node development environment.
Since ipm is mainly for contributors, it doesn’t have to be bundled with the app.
So, I’m planning to create a simplified module for installing plugins and their dependencies to replace ipm in the app.