The package ships Flathub in /usr/share/flatpak/remotes.d, so the module declares no remote of its own and checks it instead. Eleven Go tools: list, runtimes, remotes (naming the desktop's duplicate user Flathub), updates, unused, disk usage, and install, remove, update and remove-unused, the system installation's acts through sudo -n and the account's without. uninstall --unused has no dry run, so flatpak_unused works it out from flatpak's own answers: an application's runtime and SDK, the extension points of what is used, and pins. Acts run as jobs inside the bundle, because an install outlasts a call.
flatpak
Flatpak applications on the two workstations (novox/hq research 027/02: "snapd and flatpak are
modules, on the two workstations only"; to-be 42 phase 2 step 9).
Owns
| what | where |
|---|---|
| flatpak | package flatpak (official repositories) |
The Flathub remote comes with the package. The package ships flathub.flatpakrepo in
/usr/share/flatpak/remotes.d, and flatpak adds every file there to the system installation as a
remote. The module therefore declares no remote file of its own. flatpak_remotes checks that the
system installation has Flathub, and says so when it does not.
The installed applications and runtimes, and their data, are the operator's: found (ADR 0182).
Improves
- The laptop gains flatpak, which only the desktop had, with Flathub.
- Unused runtimes become visible and removable. On the desktop on 2026-10-04,
/var/lib/flatpakheld 5.1 GB for three applications. They are Nextcloud on KDE 6.7, Warehouse on GNOME 46, and Plex on Freedesktop 23.08. Beside them sat the whole Freedesktop 22.08 platform, both of its GL extensions, and older codec and style extensions that nothing uses.flatpak_unusedlists them read-only;flatpak_remove_unusedlets flatpak remove them. - A duplicate remote is named. The desktop has Flathub configured twice, once in the system
installation and once in the account's, which has nothing installed from it.
flatpak_remotesreports it.
Tools
All answer JSON; (r) reads, (a) acts. Reads run as the operator account. An act on the system
installation (the default) goes through sudo -n; one on the account's own installation does not.
| tool | what |
|---|---|
flatpak_list (r) |
applications: id, name, version, branch, origin, installation, size in bytes |
flatpak_runtimes (r) |
runtimes and extensions, the same way |
flatpak_remotes (r) |
both installations' remotes, how many refs come from each, findings |
flatpak_updates (r) |
refs with a newer commit on their remote (needs the network) |
flatpak_unused (r) |
runtimes nothing needs, computed without changing anything (below), with the space each takes |
flatpak_disk_usage (r) |
each installation's directory on disk, and the 50 largest refs |
flatpak_install (a) |
install from a remote (default flathub) into the system or the account installation |
flatpak_remove (a) |
uninstall, keeping the application's data unless delete_data |
flatpak_update (a) |
update one ref, or everything in an installation |
flatpak_remove_unused (a) |
uninstall --unused: flatpak decides |
flatpak_job (r) |
a long act's state and the end of its output |
Unused, computed. flatpak uninstall --unused has no dry run: it asks, and answering yes removes.
So the read tool works it out from what flatpak already says. A runtime is in use when one of these
holds:
- an installed application names it as its runtime or SDK;
- it fills an extension point declared in the metadata of something in use, matched by id (subdirectories included) and accepted version;
- it is pinned.
The SDK is counted as used to err on the safe side. flatpak's own --unused may also remove an
application's SDK.
Acts are jobs. An install or update downloads hundreds of megabytes. Each act runs inside the
tool's process for up to 15 minutes, and is waited on for 18 s. A finished act is answered, and a
failed one as an error. One still running is answered with a job id for flatpak_job.
What changes when it is assigned
- laptop:
flatpakis installed, with Flathub as the system remote. Nothing else. - desktop: nothing on disk; the package, installed by hand, becomes the mesh's.
The one-off step for the operator (ADR 0182)
On the desktop, the account's own Flathub remote duplicates the system's and has nothing installed
from it. If it is not wanted: flatpak remote-delete --user flathub, once. The mesh did not make it,
so it does not remove it.
Leaves as found
The applications and runtimes, the account installation under ~/.local/share/flatpak, application
data under ~/.var/app, and any remote other than the package's Flathub.