genzo is a terminal-based RAW photo development tool written in Rust.
It provides an interactive TUI (text user interface) for browsing RAW files,
adjusting development parameters, previewing results, exporting images, and
saving parameter metadata back into compatible files.
The project currently targets Linux development first and uses bundled LibRaw sources for RAW decoding.
- Terminal UI with mouse + keyboard support.
- File browser for RAW files and folders.
- Live preview with fit/zoom controls.
- Editable development parameters:
- Exposure
- Highlight recovery
- White balance (R/G1/B/G2)
- Noise reduction
- Tone curve (5 control points)
- Color cast curve (hue/amount/saturation, 5 control points)
- Lens correction (
k0..k3,cx,cy)
- Export to
JPGandPNG. - Save/load development parameters via embedded XMP in DNG/TIFF containers.
- Image protocol switching (
Auto,Halfblocks,Sixel,Kitty,iTerm2).
The file browser recognizes the following RAW extensions:
dngcr2cr3nefarworfrw2rafpef
- Rust toolchain (
rustup,cargo) - C/C++ toolchain (
gcc,g++,make) clang/libclang(required bybindgenduring build)
On Debian/Ubuntu-like systems, this is usually enough:
sudo apt update
sudo apt install -y build-essential clang libclang-dev pkg-configDebug build:
cargo buildRelease build:
cargo build --releaseStart from current directory:
cargo runStart with a file or directory:
cargo run -- path/to/file.dng
cargo run -- path/to/folderGlobal:
qorCtrl+C: quitTab/Shift+Tab: cycle focus (Menu/Filer/Preview/Control Panel)F1: focus MenuEsc: close modals/menu and return focus to PreviewCtrl+S: save params (embedded XMP for DNG/TIFF)Ctrl+R: rotate image +90°m: toggle metadata modalp: toggle preview modal
Filer pane:
j/korDown/Up: move selectionEnter,Space,lorRight: open directory / select file- Mouse click + wheel supported
Preview pane:
+/=: zoom in-: zoom out0: fit-to-pane zoom- Mouse wheel: zoom (anchor-aware)
Control panel:
j/korDown/Up: move parameter selectionh/lorLeft/Right: decrease/increase selected value- Hold
Shiftwithh/lfor larger step 0: reset selected parameter to defaultPageUp/PageDown: scroll parameter blocks
Export modal:
Tab/j/kor arrow keys: move fieldsh/lorLeft/Right: adjust toggles/format/qualityEnter: export (or activate selected action)Esc: close
-
Save Params (
Ctrl+S)- Embeds XMP develop settings into the source file.
- Supported containers:
dng,tif,tiff. - BigTIFF is not supported.
-
Export
- Output formats:
JPG,PNG - Adjustable options: output directory, file name, format, JPEG quality, PNG compression, overwrite confirmation.
- Output formats:
Run tests:
cargo testRun benchmark suite:
cargo benchThe benchmark uses tests/assets/img.dng when available.
src/app.rs: application state + event loopsrc/ui/: TUI components (menu, filer, preview, control panel, modals)src/develop/: RAW decode and image processing pipelinelib/LibRaw/: vendored LibRaw sourcebenches/: Criterion benchmarkstests/: tests and assets
- This project is under active development.
- Menu items for "Open File" and "Open Folder" are currently placeholders.