Skip to content

iwate/genzo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

53 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

genzo

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.

Features

  • 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 JPG and PNG.
  • Save/load development parameters via embedded XMP in DNG/TIFF containers.
  • Image protocol switching (Auto, Halfblocks, Sixel, Kitty, iTerm2).

Supported Input Extensions

The file browser recognizes the following RAW extensions:

  • dng
  • cr2
  • cr3
  • nef
  • arw
  • orf
  • rw2
  • raf
  • pef

Requirements

  • Rust toolchain (rustup, cargo)
  • C/C++ toolchain (gcc, g++, make)
  • clang/libclang (required by bindgen during build)

On Debian/Ubuntu-like systems, this is usually enough:

sudo apt update
sudo apt install -y build-essential clang libclang-dev pkg-config

Build

Debug build:

cargo build

Release build:

cargo build --release

Run

Start from current directory:

cargo run

Start with a file or directory:

cargo run -- path/to/file.dng
cargo run -- path/to/folder

Basic Controls

Global:

  • q or Ctrl+C: quit
  • Tab / Shift+Tab: cycle focus (Menu/Filer/Preview/Control Panel)
  • F1: focus Menu
  • Esc: close modals/menu and return focus to Preview
  • Ctrl+S: save params (embedded XMP for DNG/TIFF)
  • Ctrl+R: rotate image +90°
  • m: toggle metadata modal
  • p: toggle preview modal

Filer pane:

  • j/k or Down/Up: move selection
  • Enter, Space, l or Right: open directory / select file
  • Mouse click + wheel supported

Preview pane:

  • + / =: zoom in
  • -: zoom out
  • 0: fit-to-pane zoom
  • Mouse wheel: zoom (anchor-aware)

Control panel:

  • j/k or Down/Up: move parameter selection
  • h/l or Left/Right: decrease/increase selected value
  • Hold Shift with h/l for larger step
  • 0: reset selected parameter to default
  • PageUp / PageDown: scroll parameter blocks

Export modal:

  • Tab/j/k or arrow keys: move fields
  • h/l or Left/Right: adjust toggles/format/quality
  • Enter: export (or activate selected action)
  • Esc: close

Save and Export Behavior

  • 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.

Tests and Benchmarks

Run tests:

cargo test

Run benchmark suite:

cargo bench

The benchmark uses tests/assets/img.dng when available.

Project Layout

  • src/app.rs: application state + event loop
  • src/ui/: TUI components (menu, filer, preview, control panel, modals)
  • src/develop/: RAW decode and image processing pipeline
  • lib/LibRaw/: vendored LibRaw source
  • benches/: Criterion benchmarks
  • tests/: tests and assets

Notes

  • This project is under active development.
  • Menu items for "Open File" and "Open Folder" are currently placeholders.

About

a terminal-based RAW photo tool

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages