Vibeprint

May 26, 2026 · View on GitHub

ICC-aware print layout engine built in Rust. Two binaries: vibeprint (CLI) and studio (GUI).

This was entirely vibe coded. I haven't written a line of code in 30 years.

Note: Monitor ICC profile loading requires X11 — does not work on Wayland (for now).

System Dependencies

Rust toolchain

curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source $HOME/.cargo/env

Ubuntu

sudo apt install \
    libcups2 cups-client libcups2-dev \
    liblcms2-2 liblcms2-dev \
    libx11-6 libx11-dev \
    libxrandr2 libxrandr-dev \
    ghostscript \
    libtiff-tools

Fedora

sudo dnf install \
    cups-libs cups-client \
    lcms2 lcms2-devel \
    libX11 libX11-devel \
    libXrandr libXrandr-devel \
    ghostscript \
    libtiff-tools

Build

# Clone
git clone https://github.com/crenedecotret/vibeprint.git
cd vibeprint

# CLI-only build (no X11 deps needed)
cargo build --release --no-default-features

# Full build with Studio GUI (requires all system deps above)
cargo build --release

Binaries are placed in target/release/:

  • vibeprint — command-line image processor
  • studio — GUI application

Quick Start (CLI)

cargo run --release --bin vibeprint -- process --input in.tif --output out.tif --dpi 720
cargo run --release --bin vibeprint -- printers          # List CUPS printers
cargo run --release --bin vibeprint -- meta image.tif     # Image metadata

Quick Start (GUI)

cargo run --release --bin studio

Test

cargo test

More Info

  • CLI options: see cargo run --bin vibeprint -- --help
  • Crop/border/inversion internals: CROP_AND_BORDER.md
  • Agent instructions: AGENTS.md