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 processorstudio— 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