darktable 2026-01-29

I use darktable to organize and edit my photos. It is free, open source, and supports a fairly sophisticated api for writing plugins in lua. It was a bit intimidating at first, given that it's the first raw developer I've used, but I think I'm starting to learn my way around the basics.

contact sheet lua script

[code]

In film photogrpahy, a contact sheet is a print that shows every frame of the roll, and is usually used to review each shot and select what is to be printed with what edits. Darktable has a official lua script selection_to_pdf (found here) that exports selected photos to a pdf, but it is fairly haphazard, and doesn't have offer any customization that could be used to make it look like a traditional contact sheet.

contact sheet from a dev+scan done by pro image photo (color inversion mine)

Contact sheets are pretty easy to generate using ImageMagick's montage command (thanks to shom for this tip). Here's an example:

montage -verbose -background 'black' -geometry 500x500+10+10 \
    -auto-orient *.jpg -tile 6x contact-sheet.jpg

Setting geometry to XxY+Z+W produces a contact sheet where the images are each of size XxY pixels and are separated by horizontal gaps of Z and vertical gaps of W pixels. The tile option determines how many images will be displayed per row.

Given how easy the basic task is here, it seemed like a good place to jump into learning darktable's plugin system, or "lua scripts", and indeed, it was just a matter of following the lua api documentation to make some UI elements for tweaking the arguments provided to montage.

~

>> created 2026-01-29 <<