Lumen

A photo editor where the image is the whole world.

A fast, non-destructive RAW and photo editor for Linux and macOS — a full tone, colour, detail, and local-adjustment pipeline, GPU-accelerated for real-time preview, with a command-palette workflow instead of a wall of panels.

The Lumen editing canvas — a photograph filling the screen with a floating adjustment panel
The photo fills the screen; tools are summoned only when you need them.

Keyboard to navigate and command; pointer to manipulate.

Most editors bury your photo under panels, toolbars, and palettes. Lumen inverts that. It is modal, like an editor should be: you live in Browse mode — zoom, pan, toggle before/after — and drop into a tool only for as long as you need it. Press /, type a few letters of what you want, and go.

Tone & Colour Exposure, contrast, and tone; per-channel and luma curves; HSL colour mixer; shadow/midtone/highlight colour grading; 3D-LUT looks; and channel-weighted monochrome.
White Balance True linear-light, camera-accurate Kelvin/tint correction, seeded from the RAW's as-shot values, with an eyedropper for neutral picks.
Detail & Repair Patch-based healing brush that repairs spots and distractions with texture from your own photo, plus sharpen, denoise, and defringe for chromatic-aberration cleanup.
Geometry & Lens Crop, rotate, and flip with aspect presets; automatic distortion, TCA, and vignetting correction from EXIF via Lensfun, plus manual perspective.
Local Adjustments Layers with independent adjustments, opacity, and masks — radial, linear-gradient, luminosity-range, colour-range, and free-hand brush, all non-destructive.
Non-destructive Workflow A re-orderable edit graph with unlimited undo/redo, steppable history, reusable presets, autosave, and crash recovery. Your original is never touched.
Formats & Output Reads JPEG, PNG, TIFF, WebP, and camera RAW (Canon, Nikon, Sony, Fujifilm, and more) via LibRaw; exports 8/16-bit with resize and embedded ICC profiles.
Colour Management A floating-point sRGB working space with highlight headroom, and wide-gamut export to Display P3 or Adobe RGB with the matching profile embedded.
Command Palette Fuzzy subsequence matching over every tool, grouped by workflow. A couple of keystrokes is all it takes — no hunting through menus.

Lumen never invents pixels.

There is no generative fill, AI upscaling or one-click neural “enhance.” Every change is a deterministic adjustment you chose, recorded as a step in the edit graph and traceable back to the untouched original. Even the healing brush works by borrowing texture from elsewhere in your own photo. What you export is your photograph, developed — not a model’s guess at it.

/Command palette
Ctrl+O · Ctrl+Shift+OOpen image · open project
Ctrl+SSave project
Ctrl+Z · Ctrl+Shift+ZUndo · redo
Ctrl+Shift+C · Ctrl+Shift+VCopy · paste settings
Ctrl+0 · F11Reset view · fullscreen

A genuine, non-destructive imaging pipeline. RAW files are demosaiced at 16 bits and carried through a floating-point working space; every edit is a re-orderable node in an edit graph; the full-resolution result is rendered by libvips while your interactive preview runs on the GPU.

Real-time GPU preview

C++20 and Qt 6.7+, rendering through Qt RHI — Metal on macOS, Vulkan/OpenGL on Linux — with GLSL shaders that replicate the pointwise pipeline.

The imaging engine

libvips drives the full-resolution, memory-efficient pipeline and export; LibRaw decodes RAW; lcms2 handles wide-gamut colour management.

A testable core

A UI-free lumen_core library — image pipeline, edit graph, layers, serialization — sits beneath the Qt front-end, so the imaging code is independently unit-tested.

Open source

Released under the Apache License 2.0. Build from source in one command, or grab a self-contained release for your platform.

Clone the repo and run ./install.sh — it installs the imaging libraries and Qt 6.7+, then builds and installs Lumen. Full instructions on GitHub.

Lumen · Apache License 2.0 ← All projects / GitHub