Skip to content

Flatpak packaging: build script, CI workflow, and runtime fixes#200

Open
BillyOutlast wants to merge 3 commits into
Drop-OSS:developfrom
BillyOutlast:develop
Open

Flatpak packaging: build script, CI workflow, and runtime fixes#200
BillyOutlast wants to merge 3 commits into
Drop-OSS:developfrom
BillyOutlast:develop

Conversation

@BillyOutlast
Copy link
Copy Markdown

Flatpak Packaging

Adds full Flatpak build support for the Drop Desktop client, including a local build script, system tray library bundling, WebKit Wayland workarounds, and a companion CI workflow.

What was done

Flatpak manifest & metadata

  • flatpak/org.droposs.client.yml — Flatpak manifest using GNOME Platform 48, extracts the pre-built .deb and bundles system tray libraries
  • flatpak/org.droposs.client.desktop — Flatpak-specific desktop entry with correct /app/bin/ paths
  • flatpak/org.droposs.client.metainfo.xml — AppStream metainfo for Flathub
  • flatpak/org.droposs.client.svg — Scalable SVG icon (64x64 viewBox)

System tray indicator fix

The GNOME Platform runtime does not include libayatana-appindicator3 (used for the tray icon). Added these libraries as bundled file sources in the manifest:

  • libayatana-appindicator3.so.1
  • libayatana-ido3-0.4.so.0
  • libayatana-indicator3.so.7
  • libdbusmenu-glib.so.4
  • libdbusmenu-gtk3.so.4

WebKit Wayland workarounds

Added these environment variables to finish-args to prevent rendering crashes:

  • WEBKIT_DISABLE_COMPOSITING_MODE=1
  • WEBKIT_DISABLE_DMABUF_RENDERER=1

Developer tooling

  • flatpak/build.sh — Full automation: builds Tauri .deb, prepares libraries, runs flatpak-builder, optionally creates portable bundle
  • flatpak/prepare-libs.sh — Copies required system tray libraries from host system (works on Fedora, Ubuntu, etc.)
  • flatpak/prepare-deb.sh — Symlinks the versioned .deb to the predictable path expected by the manifest

CI workflow

  • .github/workflows/flatpak.yml — Companion to the main release workflow
    • On release: [published]: downloads the .deb from release assets, builds Flatpak, uploads as release asset
    • On workflow_dispatch with tag: same as release
    • On workflow_dispatch without tag: builds Tauri from source, then builds Flatpak, uploads as workflow artifact

Local frontend serving

  • Uses tauri-plugin-localhost + portpicker to serve the frontend over http://localhost:<port>/main in release builds, since the tauri:// custom protocol does not work inside WebKit2GTK in the Flatpak sandbox.

How to test locally

# Prerequisites: flatpak, flatpak-builder, GNOME Platform 48
flatpak install --user flathub org.gnome.Platform//48 org.gnome.Sdk//48

# Build from project root
./flatpak/build.sh --bundle

# Run
flatpak run org.droposs.client

John Smith added 3 commits June 2, 2026 16:27
GSD-Unit: M001/S02/reactive+T01,T03
- build.sh: automated flatpak build script with --bundle/--clean flags
- prepare-libs.sh: copies system tray libraries from host into flatpak/libs/
- .github/workflows/flatpak.yml: companion CI workflow supporting both
  source builds and release-triggered builds
- Remove old flatpak-release.yml (replaced by flatpak.yml)
- .gitignore: add flatpak build artifact patterns
- Scripts are executable
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant