# Flatpak manifest — one build that runs on any Linux distribution. # # In plain terms: a Flatpak bundles the application together with the exact # libraries it needs, so it does not care whether the user runs Ubuntu, Fedora # or Arch. Unlike the buried egui-era manifest, this one does not # build anything: CI has already built the Flutter bundle and packed the # FFmpeg 8.1 libraries into its lib/ directory (the launcher's rpath covers # them), so the manifest just repacks that staged bundle. The GNOME runtime # supplies GTK 3, which the Flutter Linux embedder needs and the plain # freedesktop runtime does not ship. # # CI (release.yml, linux-bundle job) copies the staged bundle to # packaging/flatpak/bundle/ before running flatpak-builder; to build locally on # Linux, do the same with a `flutter build linux --release` bundle, with the # FFmpeg .so files copied into its lib/ and the share/ files staged as the job # does. This .flatpak is the whole Linux release. id: io.github.luminalmvm.Lumit runtime: org.gnome.Platform runtime-version: '49' sdk: org.gnome.Sdk command: lumit_flutter finish-args: - --share=ipc - --socket=wayland - --socket=fallback-x11 # GPU access: the whole compositor is wgpu (docs/06), so this is not optional. - --device=dri # Covers PipeWire as well as PulseAudio. - --socket=pulseaudio # Where footage may be read from. # # In plain terms: a video editor reads footage from wherever the user keeps # it, and external drives are where most people keep it, so plain # --filesystem=home is not enough on its own. This used to be # --filesystem=host, which is everything the host has outside flatpak's own # deny-list — and that includes every *other* user's home directory, /opt, # /srv and any top-level directory at all. A compositor that parses untrusted # project files, imports arbitrary media and hosts third-party native plugins # is not a program that should be able to read another account's documents. # # So: this user's home, and the three places removable and mounted volumes # actually appear. That covers the case host was granted for without granting # the rest of the machine with it. # # A user whose footage lives somewhere else — a dedicated array at /data, say, # which is a normal thing for this kind of work — grants exactly that one # path, once: # # flatpak override --user --filesystem=/data io.github.luminalmvm.Lumit # # That is a better arrangement than granting it to everybody by default, and # it is the answer Flathub reviewers ask for. # # The narrower still — no filesystem access at all, everything through the # document portal — is real work rather than a manifest change: the engine # stores absolute media paths and reopens them across sessions, so it would # need to hold portal document handles instead. Tracked, not pretended at. - --filesystem=home - --filesystem=/media - --filesystem=/run/media - --filesystem=/mnt # The Addons page downloads model packs; nothing else needs the network. - --share=network modules: - name: lumit buildsystem: simple build-commands: # Exported files must carry the app-id name, so the desktop entry, mime # XML and app icon are renamed on the way in. The .lum/.lumfx mimetype # icons are NOT installed: flatpak only exports app-id-named icons to # the host, so document icons stay a native-install feature. - install -Dm644 bundle/share/io.github.luminalmvm.Lumit.desktop /app/share/applications/io.github.luminalmvm.Lumit.desktop - sed -i 's/^Icon=lumit$/Icon=io.github.luminalmvm.Lumit/' /app/share/applications/io.github.luminalmvm.Lumit.desktop - install -Dm644 bundle/share/lumit-mark.svg /app/share/icons/hicolor/scalable/apps/io.github.luminalmvm.Lumit.svg - install -Dm644 bundle/share/lumit-mime.xml /app/share/mime/packages/io.github.luminalmvm.Lumit.xml - install -Dm644 io.github.luminalmvm.Lumit.metainfo.xml /app/share/metainfo/io.github.luminalmvm.Lumit.metainfo.xml - rm -rf bundle/share - mkdir -p /app/lumit && cp -r bundle/* /app/lumit/ - mkdir -p /app/bin && ln -s /app/lumit/lumit_flutter /app/bin/lumit_flutter sources: - type: dir path: bundle dest: bundle - type: file path: io.github.luminalmvm.Lumit.metainfo.xml