austin 3a17433f53 v0.2.2: Preferences page, About page, full icon set, redesigned permissions list
- Add a Preferences page (reachable from the hamburger menu) with a
  KColorSchemeManager-backed color scheme switcher
- Add an About page reading from KAboutData
- Ship a full hicolor icon set (16-128px + scalable) via ecm_install_icons
  instead of a single flat SVG
- Restyle the permissions list after KDE System Settings' Audio page:
  Kirigami.ListSectionHeader per category, flat separated rows, no card
  borders
- Explicitly declare Kirigami/KirigamiAddons/ColorScheme as CMake
  dependencies instead of relying on the QML import scanner alone
- Add KDEClangFormat/KDEGitCommitHooks, a CMakePresets.json, and a
  REUSE + clang-format lint CI workflow
- Reformat SPDX headers to include copyright, and tidy up a stray
  namespace inconsistency
2026-07-03 16:25:29 -05:00

FlatKontrol

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

The repository and bundle are GPG-signed; the public key is embedded in the .flatpakrepo (and available at keys/flatkontrol.asc).

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 \
    kcolorscheme 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.
  • appcolorscheme.{h,cpp} - QML-facing wrapper around KColorSchemeManager for the Preferences page.
  • 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%