austin 3b639115c8 Initial commit: FlatKontrol, a Kirigami Flatpak permissions manager
A KDE/Qt application to review and edit the permissions of installed
Flatpak applications, editing the same override files as Flatpak itself.
Covers shared subsystems, sockets, devices, features, filesystem access,
persistent paths, environment variables, D-Bus policies and portals.

Includes a Flatpak manifest and a CI workflow that publishes a bundle and
a hosted Flatpak repository on tagged releases.
2026-06-30 19:31:10 -05:00

FlatKontrol

A Flatpak permissions manager built the KDE way - C++ with a QML/Kirigami frontend, ECM/CMake, and KDE Frameworks 6. Think Flatseal, reimagined as if the team behind Elisa had written it.

It reads each application's baseline permissions from its bundle metadata, layers the global and per-application override files on top (the same original → global → user resolution Flatseal uses), and writes changes back to ~/.local/share/flatpak/overrides/. Dynamic portal permissions are edited over D-Bus via org.freedesktop.impl.portal.PermissionStore.

Features

  • Share (network, IPC), Sockets, Devices, Features - toggles
  • Filesystem presets + custom paths (with :ro/:rw/:create and negation)
  • Persistent home-relative directories
  • Environment variables
  • Session / System D-Bus name policies (talk / own)
  • Portals (background, notifications, microphone, speakers, camera, location)
  • Per-application reset with undo, and global defaults via the "All Applications" entry
  • Live refresh when applications are installed or removed

Install

Tagged releases are built by CI into a single-file bundle (attached to each GitHub Release) and a hosted Flatpak repository on GitHub Pages:

flatpak remote-add --if-not-exists --user flatkontrol \
  https://toservetheking.github.io/FlatKontrol/flatkontrol.flatpakrepo
flatpak install --user flatkontrol io.github.toservetheking.FlatKontrol

Or install the downloaded bundle directly:

flatpak install --user ./io.github.toservetheking.FlatKontrol.flatpak

Building

Requires Qt 6, KDE Frameworks 6, Kirigami, Kirigami Addons and the CMake toolchain. On Arch/CachyOS:

sudo pacman -S --needed cmake extra-cmake-modules base-devel \
    qt6-base qt6-declarative kirigami kirigami-addons \
    ki18n kcoreaddons kiconthemes kcrash kdbusaddons kitemmodels qqc2-desktop-style

Then:

cmake -B build -G Ninja
cmake --build build
./build/bin/flatkontrol

Architecture

  • keyfile.{h,cpp} - minimal GKeyFile/flatpak-compatible INI reader/writer.
  • flatpakinstallations.{h,cpp} - installation discovery and per-app metadata/icon.
  • applicationsmodel.{h,cpp} - sidebar model (QAbstractListModel, QML_ELEMENT).
  • permissioncatalog.{h,cpp} - the static catalog of categories and options.
  • portalsbackend.{h,cpp} - QtDBus PermissionStore client.
  • permissionscontroller.{h,cpp} - per-app state, resolution, and the row model.
  • qml/ - Kirigami UI.
S
Description
Manage Flatpak permissions — a Kirigami/Qt application
Readme
335 KiB
Languages
C++ 72.1%
QML 24.7%
CMake 3.2%