Files
qbz/packaging/flatpak/com.blitzfc.qbz.yml
T
vicrodh 4a4a9a4213 fix: defensive graphics fixes for Flatpak Wayland blur stutter (#127)
- Detect Flatpak sandbox at startup and log it
- In Flatpak on Wayland, unset DISPLAY to prevent WebKitGTK from
  falling back to XWayland internally (causes CPU-GPU texture
  round-trips that degrade CSS blur performance)
- Per-GPU Wayland paths: only disable compositing and DMA-BUF for
  NVIDIA on Wayland. AMD/Intel get full GPU acceleration on native
  Wayland (compositing enabled, DMA-BUF enabled)
- Change GitHub Releases Flatpak manifest from --socket=x11 to
  --socket=fallback-x11 to match Flathub and prevent XWayland
  on Wayland sessions
2026-03-08 09:32:56 -06:00

165 lines
5.5 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
# 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