Thanks for helping improve Parfait. This guide covers the current development workflow, coding expectations, and Flatpak packaging details for the rebranded app.
- Product name:
Parfait - Cargo package:
parfait - Flatpak app ID:
dev.pinkpixel.Parfait - Current repository URL:
https://github.com/pinkpixel-dev/parfait
git clone https://github.com/YOUR_USERNAME/parfait.git
cd parfaitInstall the platform dependencies your distro needs, then use the standard Rust + Meson flow:
cargo build
cargo run
cargo test
cargo fmt
cargo clippymeson setup builddir
meson compile -C builddir
flatpak-builder --user --install --force-clean build-dir dev.pinkpixel.Parfait.yml
flatpak run dev.pinkpixel.Parfait./packaging/linux/build-packages.sh appimageThe native packaging flow currently focuses on a tested AppImage path. It stages
the Meson install tree under dist/linux-packages/, then turns that staged
layout into an AppImage with appimagetool. CI uses the same script through
.github/workflows/linux-packages.yml. The final distributable file lands at
dist/linux-packages/artifacts/Parfait.AppImage.
The current manifest is pinned to the remote v1.0.0 git tag so local Flatpak
tests match the tagged release snapshot on GitHub. You do not need a published
GitHub Release page for flatpak-builder; the pushed git tag is the important
part.
- Follow the existing Rust style and keep
cargo fmtclean. - Run
cargo clippyand address warnings when your change touches code. - Preserve GTK4/Libadwaita conventions already used in
src/window.rs. - Prefer focused changes and update documentation with every user-facing change.
When you change functionality or packaging, update:
README.mdCHANGELOG.mdOVERVIEW.mdROADMAP.mddev/OVERVIEW.mddev/ROADMAP.mddev/FLATHUB-SUBMISSION-GUIDE.mddev/LINUX-PACKAGING.md- relevant files in
dev/
parfait/
├── src/
│ ├── main.rs
│ ├── window.rs
│ ├── converter.rs
│ ├── batch.rs
│ ├── preferences.rs
│ └── preview.rs
├── data/
│ ├── icons/
│ ├── dev.pinkpixel.Parfait.desktop.in
│ ├── dev.pinkpixel.Parfait.metainfo.xml.in
│ └── dev.pinkpixel.Parfait.gschema.xml
├── dev.pinkpixel.Parfait.yml
├── packaging/
│ └── linux/
│ ├── AppRun
│ ├── build-packages.sh
│ ├── nfpm.yaml
│ └── scripts/
├── parfait-cargo-sources.json
├── rav1e-cargo-sources.json
└── meson.build
- Create a branch from
main. - Make the smallest change set that solves the problem.
- Run the relevant validation commands.
- Update docs and packaging metadata when needed.
- Submit a PR with a clear description and screenshots for UI changes.
Before opening a PR, verify:
- The app launches as
Parfait - Drag-and-drop still works
- All format options convert successfully
- The output directory chooser behaves correctly
- About dialog and desktop metadata show the new brand
- The launcher and software-center icon use the transparent circular artwork without the old square background
- Flatpak metadata still validates after any packaging edit
- Native package artifacts build successfully when packaging metadata changes
- The AppImage launches successfully after packaging changes
Thanks for contributing to Parfait and helping Pink Pixel keep its Linux release flow polished.