feat(print): macOS/Linux CUPS raw print spooler and printer enumeration (#27) #30

Merged
gronod merged 4 commits from feature/issue-27-cups-raw-print into development 2026-08-23 14:47:12 +01:00
Owner

Summary

Closes #27
Relates to #25 (Milestone 6: Native Raw OS Printing Engine)

This PR implements Sub-Task 2 of Milestone 6: the native macOS and Linux CUPS printing backend in Tauri Rust.

Key Changes

  • CUPS Printer Discovery (get_cups_printers):
    • Implemented parser for lpstat -e (available destinations), lpstat -p (detailed connection/queue statuses), and lpstat -d (default destination).
    • Merges discovery and status into a structured Printer model (name, status, is_default).
  • CUPS Target Print Spooling (print_target_cups):
    • Direct raw queue dispatch via lp -d <printer> -t <title> -o raw <tiff_path> ensuring CUPS PPD filters and macOS ColorSync transforms are completely bypassed.
    • Configurable fallback for PPD-based uncorrected passthrough (-o ColorModel=Gray -o cm-calibration) for printers that do not accept direct raw TIFF ingestion.
  • Tauri IPC Command Registration:
    • Registered get_cups_printers and print_target_cups with platform conditional compilation (#[cfg(unix)] / #[cfg(windows)]).
  • Unit & Integration Tests:
    • Added comprehensive test suite for lpstat -e, lpstat -p, lpstat -d parsing, printer info merging, argument building, and error handling for missing files.

Testing

  • cargo check and cargo test pass (15/15 tests passing).
  • Verified printer enumeration against local CUPS daemon on Linux.
## Summary Closes #27 Relates to #25 (Milestone 6: Native Raw OS Printing Engine) This PR implements Sub-Task 2 of Milestone 6: the native macOS and Linux CUPS printing backend in Tauri Rust. ### Key Changes - **CUPS Printer Discovery (`get_cups_printers`)**: - Implemented parser for `lpstat -e` (available destinations), `lpstat -p` (detailed connection/queue statuses), and `lpstat -d` (default destination). - Merges discovery and status into a structured `Printer` model (`name`, `status`, `is_default`). - **CUPS Target Print Spooling (`print_target_cups`)**: - Direct raw queue dispatch via `lp -d <printer> -t <title> -o raw <tiff_path>` ensuring CUPS PPD filters and macOS ColorSync transforms are completely bypassed. - Configurable fallback for PPD-based uncorrected passthrough (`-o ColorModel=Gray -o cm-calibration`) for printers that do not accept direct raw TIFF ingestion. - **Tauri IPC Command Registration**: - Registered `get_cups_printers` and `print_target_cups` with platform conditional compilation (`#[cfg(unix)]` / `#[cfg(windows)]`). - **Unit & Integration Tests**: - Added comprehensive test suite for `lpstat -e`, `lpstat -p`, `lpstat -d` parsing, printer info merging, argument building, and error handling for missing files. ### Testing - `cargo check` and `cargo test` pass (15/15 tests passing). - Verified printer enumeration against local CUPS daemon on Linux.
gronod added 2 commits 2026-08-23 11:42:40 +01:00
feat(print): implement Windows native raw print spooler and printer enumeration (#26)
Build Linux Packages / Build Linux (pull_request) Failing after 10m21s
Build Windows Packages / Build Windows (pull_request) Has been cancelled
Build macOS Packages / Build macOS (Apple Silicon) (pull_request) Has been cancelled
Build macOS Packages / Build macOS (Intel) (pull_request) Has been cancelled
5c238e9db9
feat(print): implement macOS/Linux CUPS raw print spooler and printer enumeration (#27)
Build Linux Packages / Build Linux (pull_request) Failing after 11m3s
Build Windows Packages / Build Windows (pull_request) Has been cancelled
Build macOS Packages / Build macOS (Apple Silicon) (pull_request) Has been cancelled
Build macOS Packages / Build macOS (Intel) (pull_request) Has been cancelled
419cc18366
gronod added 2 commits 2026-08-23 13:27:56 +01:00
ci: add libfuse2 and squashfs-tools for AppImage bundling in Linux CI
Build Linux Packages / Build Linux (pull_request) Failing after 17m21s
Build Windows Packages / Build Windows (pull_request) Has been cancelled
Build macOS Packages / Build macOS (Apple Silicon) (pull_request) Has been cancelled
Build macOS Packages / Build macOS (Intel) (pull_request) Has been cancelled
231c938eec
ci: merge CI fix from feature/issue-26-windows-raw-print
Build Linux Packages / Build Linux (pull_request) Failing after 17m14s
Build Windows Packages / Build Windows (pull_request) Has been cancelled
Build macOS Packages / Build macOS (Apple Silicon) (pull_request) Has been cancelled
Build macOS Packages / Build macOS (Intel) (pull_request) Has been cancelled
e3b8dd69e7
gronod added 2 commits 2026-08-23 13:59:54 +01:00
ci: enable verbose output and zsync in Linux build workflow
Build Linux Packages / Build Linux (pull_request) Failing after 17m12s
f52b24784a
ci: merge verbose CI workflow
Build Linux Packages / Build Linux (pull_request) Failing after 17m4s
746b86d696
gronod added 2 commits 2026-08-23 14:17:47 +01:00
ci: add X11 libraries required by ArgyllCMS binaries for linuxdeploy bundling
Build Linux Packages / Build Linux (pull_request) Successful in 21m5s
d663311fc6
ci: merge X11 library dependencies fix
Build Linux Packages / Build Linux (pull_request) Successful in 21m24s
154565027e
gronod merged commit 00fa6ea1ce into development 2026-08-23 14:47:12 +01:00
Sign in to join this conversation.