Files
qbz/packaging/flatpak/com.blitzfc.qbz.yml
T
vicrodh c37f3d7595 feat(security): enable system keyring for credential storage
Enable async-secret-service + crypto-rust features on the keyring
crate, activating GNOME Keyring and KDE Wallet support. The keyring
integration code was already written but the crate was compiled
without any platform backend, so it silently failed every time.

OAuth tokens will now be stored in the system keyring when available,
with encrypted file as automatic fallback.

Added org.freedesktop.secrets to Flatpak finish-args for sandbox
keyring access.

Fixes #215

cc
2026-04-06 16:20:26 -06:00

168 lines
5.6 KiB
YAML

app-id: com.blitzfc.qbz
runtime: org.gnome.Platform
runtime-version: '49'
sdk: org.gnome.Sdk
sdk-extensions:
- org.freedesktop.Sdk.Extension.node20
- org.freedesktop.Sdk.Extension.rust-stable
- org.freedesktop.Sdk.Extension.llvm20
command: qbz
finish-args:
- --share=ipc
- --share=network
- --socket=wayland
- --socket=fallback-x11
- --socket=pulseaudio
- --device=dri
# Native PipeWire access
- --filesystem=xdg-run/pipewire-0:ro
# User music library
- --filesystem=xdg-music
# Required for tray icon visibility in Flatpak sandbox
- --filesystem=xdg-run/tray-icon:create
# Notifications and tray
- --talk-name=org.freedesktop.Notifications
- --talk-name=org.kde.StatusNotifierWatcher
# System keyring (GNOME Keyring, KDE Wallet) for credential storage
- --talk-name=org.freedesktop.secrets
# MPRIS media controls (own-name auto-granted: name contains appid)
- --talk-name=org.mpris.MediaPlayer2.*
modules:
# intltool required for libdbusmenu
- name: intltool
buildsystem: autotools
cleanup:
- '*'
sources:
- type: archive
url: https://launchpad.net/intltool/trunk/0.51.0/+download/intltool-0.51.0.tar.gz
sha256: 67c74d94196b153b774ab9f89b2fa6c6ba79352407037c8c14d5aeb334e959cd
# Dependency for libayatana-appindicator
- name: libdbusmenu
buildsystem: autotools
build-options:
cflags: -Wno-error
env:
HAVE_VALGRIND_FALSE: '#'
HAVE_VALGRIND_TRUE: ''
config-opts:
- --with-gtk=3
- --disable-dumper
- --disable-static
- --disable-gtk-doc
- --enable-introspection=no
- --disable-vala
cleanup:
- /include
- /lib/pkgconfig
- /lib/*.la
- /share/doc
- /share/libdbusmenu
sources:
- type: archive
url: https://launchpad.net/libdbusmenu/16.04/16.04.0/+download/libdbusmenu-16.04.0.tar.gz
sha256: b9cc4a2acd74509435892823607d966d424bd9ad5d0b00938f27240a1bfa878a
- name: ayatana-ido
buildsystem: cmake-ninja
config-opts:
- -DENABLE_TESTS=NO
- -DCMAKE_INSTALL_LIBDIR=lib
cleanup:
- /include
sources:
- type: archive
url: https://github.com/AyatanaIndicators/ayatana-ido/archive/refs/tags/0.10.4.tar.gz
sha256: bd59abd5f1314e411d0d55ce3643e91cef633271f58126be529de5fb71c5ab38
- name: libayatana-indicator
buildsystem: cmake-ninja
config-opts:
- -DENABLE_TESTS=NO
- -DENABLE_IDO=YES
- -DENABLE_LOADER=NO
- -DCMAKE_INSTALL_LIBDIR=lib
cleanup:
- /include
- /lib/pkgconfig
- /share
sources:
- type: archive
url: https://github.com/AyatanaIndicators/libayatana-indicator/archive/refs/tags/0.9.4.tar.gz
sha256: a18d3c682e29afd77db24366f8475b26bda22b0e16ff569a2ec71cd6eb4eac95
- name: libayatana-appindicator
buildsystem: cmake-ninja
config-opts:
- -DENABLE_BINDINGS_MONO=NO
- -DENABLE_BINDINGS_VALA=NO
- -DENABLE_GTKDOC=NO
- -DCMAKE_INSTALL_LIBDIR=lib
cleanup:
- /include
- /lib/pkgconfig
sources:
- type: archive
url: https://github.com/AyatanaIndicators/libayatana-appindicator/archive/refs/tags/0.5.93.tar.gz
sha256: cbefed7a918a227bf71286246e237fcd3a9c8499b3eaac4897811a869409edf0
# Workaround: Freedesktop 25.08 cmake may install to lib64 despite CMAKE_INSTALL_LIBDIR
# Copy any libraries from lib64 to lib so they can be found at runtime
- name: fix-lib64
buildsystem: simple
build-commands:
- |
if [ -d /app/lib64 ]; then
mkdir -p /app/lib
cp -a /app/lib64/* /app/lib/ 2>/dev/null || true
# Also copy pkgconfig if it exists
if [ -d /app/lib64/pkgconfig ]; then
mkdir -p /app/lib/pkgconfig
cp -a /app/lib64/pkgconfig/* /app/lib/pkgconfig/ 2>/dev/null || true
fi
fi
# List what we have for debugging
echo "=== Contents of /app/lib ==="
ls -la /app/lib/ || echo "lib is empty"
echo "=== Contents of /app/lib64 ==="
ls -la /app/lib64/ 2>/dev/null || echo "lib64 does not exist or is empty"
- name: qbz
buildsystem: simple
build-options:
append-path: /usr/lib/sdk/node20/bin:/usr/lib/sdk/rust-stable/bin:/usr/lib/sdk/llvm20/bin
build-args:
- --share=network
env:
npm_config_nodedir: /usr/lib/sdk/node20
LIBCLANG_PATH: /usr/lib/sdk/llvm20/lib
build-commands:
- npm ci
- export PATH="$PWD/node_modules/.bin:$PATH" && npm run build
- export PATH="$PWD/node_modules/.bin:$PATH" && npm run tauri build -- --no-bundle
- install -Dm755 src-tauri/target/release/qbz /app/bin/qbz
- install -Dm644 packaging/flatpak/com.blitzfc.qbz.desktop /app/share/applications/com.blitzfc.qbz.desktop
- install -Dm644 packaging/flatpak/com.blitzfc.qbz.metainfo.xml /app/share/metainfo/com.blitzfc.qbz.metainfo.xml
- install -Dm644 LICENSE /app/share/licenses/com.blitzfc.qbz/LICENSE
- install -Dm644 src-tauri/icons/128x128.png /app/share/icons/hicolor/128x128/apps/com.blitzfc.qbz.png
- install -Dm644 src-tauri/icons/256x256.png /app/share/icons/hicolor/256x256/apps/com.blitzfc.qbz.png
# Install tray icon for StatusNotifierItem (symbolic icon for panel)
- install -Dm644 src-tauri/icons/tray.png /app/share/icons/hicolor/symbolic/apps/com.blitzfc.qbz-symbolic.png
- install -Dm644 src-tauri/icons/32x32.png /app/share/icons/hicolor/32x32/apps/com.blitzfc.qbz.png
sources:
- type: dir
path: ../..
skip:
- .git
- node_modules
- src-tauri/target
- .svelte-kit