Flatseal 1.6.0 and beyond

It’s been five months since the original release of Flatseal. Seventeen releases later, this project has evolved incredibly fast thanks to the Flatpak community.

Flatseal is a graphical utility to review and modify basic permissions from your Flatpak applications.

When I started this project as a weekend-long challenge, I considered the possibility of creating something useful but, I clearly did not expect such overwhelming reception.

From the first Flathub discourse members testing it, to having a humble chunk of the Flatpak community using and recommending it, this has been a really fun experience that I’d love to share in more detail at some point.

For now, I would simply like to thank everyone who contributed so far and share the new things coming with the 1.6.0 release.

So, what’s new?

The biggest change in this release is the complete rewrite of how Flatseal manages and mixes permissions and overrides. This is one of those things that no one should ever notice, when it goes well of course. In this case though, these changes makes it easier to expand Flatseal with new override options and, more importantly, to maintain it.

To put these changes to test, I added support for two new overrides options: persistent  homedir-relative paths and environment variables.

You can add new persistent homedir-relative paths. Even though this override is not the most commonly used one, it has proven to be quite useful. Thanks to @ManIVIctorious for the suggestion.
You can add, remove or modify the environment variables that are exported to the application. Thanks to @trashcan55 for the suggestion. I have been using this quite a lot myself to debug Flatseal.

Another key feature, made possible with the rewrite, is that Flatseal is now fully aware of overrides that it doesn’t support. If you have been using Flatseal and flatpak-override CLI together you know exactly what I am talking about.

Before this release, Flatseal would only load the overrides that it did support, and later drop the ones that didn’t. Of course this caused confusion and headaches to people using both tools. Well, these will be kept intact from now on, making Flatseal future proof at the same time.  Thanks @WhyNotHugo for highlighting this issue.

Before moving on to other changes, I would really like to give special thanks to Tobias Bernard @bertob for all the design ideas, mockups and feedback from the very beginning of this project.

Talking about Tobias and his ideas, now Flatseal displays basic information for applications. Aside for the obvious usefulness of this information, e.g. for troubleshooting, I like to see this as a small tribute to applications developers.

The title, author, version, last-updated date and Flatpak runtime are now displayed.

Moving on, another quite popular family of requests from the community has been to include application-management features, e.g. options to uninstall or launch an application. Even though I understand why it would make sense to have those, I decided to draw a line and keep Flatseal focused on managing permissions. Well, that was until @Johnn3y suggested to add a show details button, which is a good compromise.

This button will redirect you to the software manager page for the application, where you can launch, update or uninstall the application. For the time being, only GNOME Software is supported since it provides API for doing this, but I am looking forward to add support for others if possible.

As part of this change, I had to reconsider how to display these buttons, so that there would be enough space left in the top header bar in mobile mode. To solve this, Tobias suggested to move these buttons to a separate action bar at the bottom.

Having these buttons down there solves the space problem, and also improves Flatseal ergonomics when used on a phone.

Another small change I managed to land last minute was to rename permissions references. Instead of showing something like features=bluetooth, it will now show allow=bluetooth which is what you would use from flatpak-override or flatpak-run CLI. Thanks to @digitalethics for the suggestion.

Last but not least, special thanks to @eson57, @MiloCasagrande, @AsciiWolf, @ovari, @cho2 and others for keeping an eye on Flatseal and helping me with translations!

So, What’s next?

Well, for the short term I will keep adding support for more overrides requested by the community.

For the longer term though, considering that I now have a better idea of how to model this problem and, that other projects have found Flatseal source code useful to kickstart their permissions managers, I think it would be interesting to consider moving Flatseal backend to an introspectable library, to make things easier for other projects. But, let’s see if there’s interest for that.