Skip to content

Build from source

Printy is open source under the MIT licence: github.com/NoiXdev/printy.

You do not need to build it to use it — the installers are the normal route.

Terminal window
git clone https://github.com/NoiXdev/printy.git
cd printy
npm install
npm run tauri dev

Printy reads PDFs on Windows with pdfium, which is not in the repository: it is an 8 MB third-party binary, and keeping it out keeps the repository a repository.

Without it, a Windows build starts and looks completely healthy, then fails on the first PDF.

Download pdfium-win-x64.tgz from bblanchon/pdfium-binaries and put pdfium.dll into src-tauri/resources/. The release workflows pin one specific upstream release rather than tracking the latest, so that two builds of the same commit produce the same program; PDFIUM_RELEASE in the workflow files names it.

Alternatively, point a running Printy at a copy you already have under Einstellungen → Erweitert → pdfium-Bibliothek.

macOS needs none of this — the system reads the PDF.

Terminal window
npm test # frontend
cd src-tauri && cargo test # engine

Both run in CI on every pull request. The frontend suite runs on Linux; the engine suite runs on Windows, because the printing path and the rasteriser are compiled out everywhere else — testing them on Linux would report success for code it never looked at.

The Windows printing path itself. Win32 handles against a real print spooler cannot be mocked honestly, and a test that pretended otherwise would be worse than no test.

docs/WINDOWS-VERIFICATION.md in the repository is the manual checklist run against a real printer before a release — correct page order, copies, duplex, greyscale, behaviour when the printer is switched off mid-queue, and that an interrupted job never reprints itself.

Terminal window
npm run tauri build

Output lands in src-tauri/target/release/bundle/. On Windows that is an NSIS .exe and an .msi; on macOS a .app and a .dmg.

macOS builds produced this way are unsigned, so macOS shows a Gatekeeper warning on first launch. Released builds are signed in CI.

PathContents
src/The interface — React and TypeScript
src-tauri/src/The engine — Rust: folder watching, queue, print backends, database
src-tauri/migrations/Database schema
docs/Design spec and implementation plans

Interface strings are German; code, comments, commit messages and internal documentation are English. Commits follow Conventional Commits.