Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Packaging

Build distributable Linux packages with one script:

scripts/package.sh all       # .deb + .rpm + .AppImage → dist/
scripts/package.sh deb       # just the .deb
scripts/package.sh rpm
scripts/package.sh appimage

It builds the release binary once and reuses it for every format, installing cargo-deb / cargo-generate-rpm on demand and downloading appimagetool to dist/tools/ on first AppImage build. Per-format failures are isolated and summarized at the end. Output (gitignored) lands in dist/.

Formats

  • .deb — built by cargo-deb from [package.metadata.deb] in Cargo.toml.
  • .rpm — built by cargo-generate-rpm from [package.metadata.generate-rpm]. (ffmpeg on Fedora is in RPM Fusion.)
  • AppImage — a hand-rolled AppDir + appimagetool. Bundles the GUI binary’s shared-library closure only; yt-dlp/ffmpeg/mpv stay host PATH deps, same as the package declarations.
  • Arch — use the repo’s PKGBUILD (not this script); run makepkg from a clean directory.

CI

The repo ships .forgejo/workflows/ definitions (test.yml, release.yml), but Codeberg executes Woodpecker rather than Forgejo Actions — so they don’t run there without a self-hosted runner. Until then, build packages locally with scripts/package.sh and publish docs with scripts/publish-docs.sh.

The repo’s docs/PACKAGING.md has the per-distro install commands and the Windows/macOS status in full.