Skip to content

Repository files navigation

nitid - a fast image viewer with honest color

Double-click a file and the picture is already there - in the colours the photographer chose, with the headroom the display was bought for.

Release CI License

Why

Opening an image should not be an event. Most viewers make it one: a white flash, a spinner, a second of nothing while a 24-megapixel JPEG decodes. And when the picture finally lands, the colours are often not the ones in the file

  • the profile it carries was ignored, so the same photograph looks oversaturated here and correct in the editor it came from.

nitid closes both. The embedded thumbnail is on screen in single-digit milliseconds while the full image decodes behind it, and the file's colour profile is converted against the display's own profile in the shader, every frame, for free. On an HDR display the output is extended-range linear light, so highlights drive the headroom instead of clipping at white.

nitid is Latin for clear, bright, sharp - the name describes the difference, not the function.

What you get

  • The picture before the decode finishes. Thumbnail first, full image behind it, neighbours prefetched - arrow keys never wait.
  • Colours that mean something. ICC on the GPU; a file with no profile is passed through untouched, exactly as every browser shows it.
  • HDR that follows the display. Turn it on or off in Windows and the surface is reconfigured without a restart.
  • Every modern still format, decoded in pure Rust - JPEG, PNG, WebP, JPEG XL, HEIC, AVIF, SVG, GIF, BMP, TIFF - and the animated ones play.
  • Tools for reading a picture, not just looking at it: histogram, loupe, clipping warning, an eyedropper that reads in the file's terms and the display's.
  • A copy without the camera, the date and the place. Ctrl+M strips EXIF, XMP and IPTC by not copying them - no encoder runs, so the photograph you send is the photograph you took.
  • One window. Opening a second image hands it to the viewer already running, so a multi-select does not scatter windows across the desktop.
  • Nothing that phones home. The process that decodes the heavy formats has no network in either direction.

A day in the life

$ nitid photo.heic

The window is up in about 11 ms, the picture on screen at about 128 ms - from process start, on a 24-megapixel file. Run with NITID_STARTUP_REPORT=1 and it says so for your own machine:

window created at    11 ms
gpu ready at        118 ms
thumbnail up at     128 ms   <- the picture is on screen here
first pixels in     146 ms
nitid: surface Rgba16Float ExtendedSrgbLinear, display headroom 7.71x

That figure is held by tests/startup.rs, so a change that puts a full decode back on the startup path fails the build rather than quietly costing a tenth of a second.

From there, arrow keys walk the folder, ? shows every key, I says what the file says about itself, H draws a histogram of its own values, and C reads the pixel under the pointer in both the file's terms and the display's. P and X mark a picture as kept or rejected while you go through a shoot, and M then walks only the ones you marked.

Install

Download the zip from the latest release, unpack it anywhere, and run:

nitid install

This copies nitid to %LOCALAPPDATA%\Programs\nitid, registers the file types it opens, puts that directory on your PATH, and leaves a desktop shortcut - no administrator, nothing outside your own user account. nitid uninstall removes all of it.

Windows keeps the choice of default application to itself, so after installing, pick nitid under Open with -> Choose another app and tick Always use this app. Full instructions: Getting Started.

Status

v0.34.1, in daily use on Windows. Startup, colour and HDR hold end to end; every modern still format opens and the animated ones play; images past what a GPU texture can hold are drawn as tiles; a picture can be cropped, turned and stripped of its metadata without an encoder ever running, and a shoot can be culled into a selection Explorer itself can see. The chrome wears the lacodda line's colours in light and dark, straight from its design tokens. What landed in each version: CHANGELOG.

Documentation

lacodda.github.io/nitid - keys, formats, colour and the decisions behind them. Architecture decision records are in docs/adr/.

Building it yourself: CONTRIBUTING.md.

License

MIT (c) Kirill Lakhtachev

About

A fast image viewer for Windows with honest color and HDR: first pixels in milliseconds, ICC on the GPU, modern formats

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages