[PR #200] Flatpak packaging: build script, CI workflow, and runtime fixes #191

Open
opened 2026-06-05 14:25:07 -04:00 by yindo · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/Drop-OSS/drop-app/pull/200
Author: @BillyOutlast
Created: 6/2/2026
Status: 🔄 Open

Base: developHead: develop


📝 Commits (3)

  • f4e6480 chore: auto-commit after reactive-execute
  • b2f1ac3 gsd snapshot: uncommitted changes after 229m inactivity
  • c886b5e flatpak: add build.sh, prepare-libs.sh, and updated CI workflow

📊 Changes

16 files changed (+15340 additions, -2 deletions)

View changed files

.github/workflows/flatpak.yml (+143 -0)
📝 .gitignore (+51 -0)
flatpak/build.sh (+113 -0)
flatpak/cargo-sources.json (+10487 -0)
flatpak/generate-node-sources.py (+133 -0)
flatpak/node-sources.json (+4082 -0)
flatpak/org.droposs.client.desktop (+10 -0)
flatpak/org.droposs.client.metainfo.xml (+21 -0)
flatpak/org.droposs.client.svg (+5 -0)
flatpak/org.droposs.client.yml (+98 -0)
flatpak/prepare-deb.sh (+43 -0)
flatpak/prepare-libs.sh (+63 -0)
📝 src-tauri/Cargo.lock (+50 -0)
📝 src-tauri/Cargo.toml (+2 -0)
📝 src-tauri/build.rs (+8 -0)
📝 src-tauri/src/lib.rs (+31 -2)

📄 Description

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

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/Drop-OSS/drop-app/pull/200 **Author:** [@BillyOutlast](https://github.com/BillyOutlast) **Created:** 6/2/2026 **Status:** 🔄 Open **Base:** `develop` ← **Head:** `develop` --- ### 📝 Commits (3) - [`f4e6480`](https://github.com/Drop-OSS/drop-app/commit/f4e64805baac592e12adcdb5a2bd2524424e7328) chore: auto-commit after reactive-execute - [`b2f1ac3`](https://github.com/Drop-OSS/drop-app/commit/b2f1ac3e23adff76556cac64f70189f2b8f29a2d) gsd snapshot: uncommitted changes after 229m inactivity - [`c886b5e`](https://github.com/Drop-OSS/drop-app/commit/c886b5e059b16aec2f862637efeeb335c474f0a2) flatpak: add build.sh, prepare-libs.sh, and updated CI workflow ### 📊 Changes **16 files changed** (+15340 additions, -2 deletions) <details> <summary>View changed files</summary> ➕ `.github/workflows/flatpak.yml` (+143 -0) 📝 `.gitignore` (+51 -0) ➕ `flatpak/build.sh` (+113 -0) ➕ `flatpak/cargo-sources.json` (+10487 -0) ➕ `flatpak/generate-node-sources.py` (+133 -0) ➕ `flatpak/node-sources.json` (+4082 -0) ➕ `flatpak/org.droposs.client.desktop` (+10 -0) ➕ `flatpak/org.droposs.client.metainfo.xml` (+21 -0) ➕ `flatpak/org.droposs.client.svg` (+5 -0) ➕ `flatpak/org.droposs.client.yml` (+98 -0) ➕ `flatpak/prepare-deb.sh` (+43 -0) ➕ `flatpak/prepare-libs.sh` (+63 -0) 📝 `src-tauri/Cargo.lock` (+50 -0) 📝 `src-tauri/Cargo.toml` (+2 -0) 📝 `src-tauri/build.rs` (+8 -0) 📝 `src-tauri/src/lib.rs` (+31 -2) </details> ### 📄 Description # 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 ```bash # 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 ``` --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
yindo added the pull-request label 2026-06-05 14:25:07 -04:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Drop-OSS/drop-app#191