A big new release of Flatseal is out! It took a bit longer, due to that little Portfolio detour 😅, but it finally happened. This release introduces some subtle improvements to the UI, along with one major new feature; initial support for Portals.
Starting with the UI improvements, a massive libhandy’fication happened. Main widgets such as the window, groups and permissions rows are now using libhandy widgets. This helped to remove a lot of custom code, but also brought neat little details like rounded corners, the ability to toggle permissions by simply tapping the rows, among other things. Thanks to @BrainBlasted for starting this work.
The applications search entry can now be toggled, and its position is now independent of the scrolled window. Not having to scroll back to the top to change the search terms, makes it a bit more usable.
This release comes with an offline version of Flatseal’s documentation, thanks to a newly-added viewer. For now, the documentation is only available in English. I am hoping to improve the document before any attempt to translate it. Thanks to Apostrophe for such nice exporters 🙂.
Moving on to the new big feature, yes, portals! With this release, it’s now possible to review and manage dynamic permissions. Thank @hferreiro for requesting this feature.
This initial support includes six of the most basic permissions. The plan is to support as many of these, as long as it makes sense of course. Having said that, a few important notes:
Not all dynamic permissions rely on stored “decisions” and, therefore, there’s nothing for Flatseal to manage.
Not all Flatpak applications use portals currently and, therefore, many of these new options won’t be very useful until portals get more adoption.
It is expected to see many of these permissions “grayed out”. Check the tooltips for the specific reason but, it is likely due to the fact that some of these portals have not been used yet and, therefore, have not set up any data for Flatseal to manage.
Well, that’s it for now. Any suggestions, ideas, bugs, I am always available. And if you haven’t tried Flatseal yet, I recommend getting it from Flathub.
Two weeks ago, I had the chance to share my experiences Flooding the desktop with learning tools, with the wider GNOME community at GUADEC Even though the event went online for the first time, due to COVID-19, it went pretty smooth!
The social hours were hilarious and was great to see so many familiar faces. I am really hoping that, whenever we go back to physical events, we can still keep this online experience for those unable to assist.
Since the previous release, I have been slowly making improvements and have finally collected enough of these for a new release.
I started with a second pass on the big refactor I made for 1.6.0. I finally got rid of some “evolutionary” leftovers, and made all the individual permissions models even more self-contained. Again, this makes things much easier to extend and maintain.
Before I move on to the user-visible work, a few words about this project. Flatseal uses overrides as its backend to modify permissions, but it’s really more than just a graphical version of flatpak-override command-line tool. What I am (at least) trying to do with this project is to provide an improved experience for how Flatpak users interact with their applications permissions.
The most noticeable change in this release happens to be a good example of that.
Being able to modify an existing bus name without having to explicitly think in terms of removing an existing name and adding a new one, seems trivial, but it’s quite an improved experienced already. The model is “smart” enough to detect these changes and translate these properly to one or more overrides. Like this, every switch and text entry in Flatseal went through these kind of considerations.
This release also adds other minor changes, including a fix for cases where applications icons were missing (e.g. for LibreOffice), a small change in the permissions groups labels to match even closer the terms used in flatpak-run and flatpak-override (e.g. “allow” instead of “features“), a fix that prevents Flatseal from crashing when multiple versions of libhandy are available (e.g. when running non-flatpak versions of Flatseal) by @fushinari , among other even minor fixes.
As I mentioned in my previous blog post, my short term goal was to keep adding support for more overrides. Now that Flatseal has almost reached feature-parity with flatpak-override, and that the model representation is way more readable, I will start to reach out to some people from the community to see if they would be interested in seeing Flatseal model moved into a separate library. Help will be welcome!
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.
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.
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.
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.
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.
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.