ANSEL(1)

πŸ“¦ version 0-unstable-2026-06, in nixos 26.05, nixpkgs unstable

🌸 NAME 🌸

ansel β€” a digital photography workflow application. (yes that's the whole thing, she's concise πŸ’…)

This is the ansel(1) manual page, in case you were wondering which darktable-adjacent queen you're reading about πŸŽ€


✨ SYNOPSIS ✨

    ansel [options] [IMG_1234.{RAW,...}|image_folder/]

Options:

    --cachedir <user cache directory>
    --conf <key>=<value>
    --configdir <user config directory>
    -d {all,cache,camctl,camsupport,control,dev,fswatch,history,imageio,input,
        ioporder,lighttable,lua,masks,memory,nan,opencl,params,perf,pipe,
        pwstorage,print,signal,sql,undo}
    --datadir <data directory>
    --disable-opencl
    -h, --help
    --library <library file>
    --localedir <locale directory>
    --luacmd <lua command>
    --moduledir <module directory>
    --noiseprofiles <noiseprofiles json file>
    -t <num openmp threads>
    --tmpdir <tmp directory>
    --version

πŸ’œ DESCRIPTION πŸ’œ

okay so ansel is a digital photography workflow application for Linux, Mac OS X and several other Unices. literally all the Unixes, she's inclusive πŸ¦‹

The whole point of her is to make editing and consistent processing of big photo sessions easy β€” like, huge sessions, hundreds of shots β€” and she gives you an easy-to-use digital lighttable plus a whole set of sophisticated post-processing tools. it's giving full studio in one app πŸ‘‘

Most processing happens in 32-bit floating point per channel mode, in the device independent CIE L*a*b* color space. and she's fully color managed too, which means you get full control over the look of your photos. no cap, your colors are yours 🌈

She also runs on a modern plugin architecture, so it's super easy for 3rd party developers to extend what she can already do. every single lighttable and darkroom feature is implemented as a plugin β€” so you can write your own plugins by reusing existing code, iconic behavior honestly. and most workflow-specific things can be scripted in Lua too 🧚


πŸŽ€ OPTIONS πŸŽ€

  • IMG_1234.RAW or image_folder/ β€” bestie, you can optionally hand her the filename of an image, or the name of a folder full of images. give her a filename and ansel starts up in darkroom view with that file already open. give her a folder and she starts in lighttable view with that folder's contents as the current collection. and if there's already an ansel instance running (using the same library), the image or folder gets opened over there instead β€” the two processes talk to each other over D-Bus 🫢
  • --cachedir <cache directory> β€” ansel keeps a cache of image thumbnails for fast image preview, plus precompiled OpenCL binaries for fast startup. by default the cache lives in "$HOME/.cache/darktable/". fun fact: there can be multiple thumbnail caches chillin' in parallel β€” one for each library file πŸ’…
  • --conf <key>=<value> β€” she supports a rich set of configuration parameters, which you define in "anselrc" β€” that's ansel's config file, living in the user config directory. this option lets you temporarily overwrite individual settings right on the command line. BUT β€” and this is the important bit β€” those settings will not be stored in "anselrc". temporary means temporary, bestie πŸ™ˆ
  • --configdir <config directory> β€” sets the directory where ansel stores your user-specific configuration. the default place is "$HOME/.config/darktable/" ✨
  • -d <debug option> β€” turns on debug output to the terminal. ansel has several subsystems and you can activate debugging for each one separately. you can use this option multiple times if you want debug output from more than one subsystem πŸ”

A few of those debug options are:

  • control β€” enable job queue debugging. if you redirect ansel's output to control.log and call ./tools/create_control_svg.sh control.log, you get a cute little control.svg visualizing the threads' work πŸŽ€
  • cache β€” gives you a lot of debugging info about the thumbnail cache for lighttable mode. and if she's compiled in debug mode, this also tells you where in the code a certain buffer was last locked πŸ‘€
  • perf β€” use this for performance tweaking your darkroom modules. it'll rdtsc-measure the runtimes of all plugins and print them to stdout. numbers go brrr πŸ”₯
  • all β€” enable all debugging output. in general this is not very useful, so like... proceed with caution πŸ’€
  • --datadir <data directory> β€” defines the directory where ansel finds her runtime data. the default place depends on your installation. typical places are "/opt/ansel/share/darktable/" and "/usr/share/darktable/" πŸ¦‹
  • --disable-opencl β€” stops ansel from initializing the OpenCL subsystem. use this one if ansel crashes at startup because of a defective OpenCL implementation. she's not being dramatic, the OpenCL is just broken 😭
  • -h, --help β€” show the available command line options and exit. the classic "what are my choices" moment πŸ‘‘
  • --library <library file> β€” ansel keeps image information in an sqlite database for fast access. the default location of that database file is "$HOME/.config/darktable/library.db". you can give an alternative location, e.g. if you want to do some experiments without compromising your original library.db. if the database file doesn't exist, ansel creates it for you 🫢 you can also pass ":memory:" as the library file β€” in that case the database is kept in system memory, and all changes are discarded when ansel terminates. poof. gone. so don't do real work in there πŸ’€
  • --localedir <locale directory> β€” the place where ansel finds her language-specific text strings. default depends on your installation; typical places are "/opt/ansel/share/locale/" and "/usr/share/locale/" 🌍
  • --luacmd <lua command> β€” a string containing lua commands to execute after lua initialization. these commands run after your "luarc" file. and ngl, if lua isn't compiled in, this option will still be accepted but won't do anything 🫠
  • --moduledir <module directory> β€” ansel has a modular structure and organizes her modules as shared libraries for loading at runtime. with this option you tell her where to look for those shared libraries. the default place depends on your installation; typical places are "/opt/ansel/lib/darktable/" and "/usr/lib/darktable/" 🧚
  • --noiseprofiles <noiseprofiles json file> β€” ansel's profiled denoise module uses camera-specific profile data loaded from an external JSON file. with this option you can change which file gets loaded, so you can test alternative profiles. the default profile file is "noiseprofiles.json" and it's typically found in "/opt/ansel/share/darktable/" or "/usr/share/darktable/" πŸ“Έ
  • -t <num openmp threads> β€” ansel uses OpenMP to parallelize a ton of computation steps and use all your available CPU cores. this option specifies the number of threads to use. valid values are between 1 and 100. that's the range, bestie, stay in it πŸ”₯
  • --tmpdir <tmp directory> β€” the place where ansel stores her temporary files. if you don't supply this option, she just uses the system default ✨
  • --version β€” show the ansel version along with some important build options and exit. a little resume moment πŸ‘‘

🌈 DEFAULT KEYBINDINGS 🌈

πŸ’« All modes

  • l β€” switch to lighttable view
  • d β€” switch to darkroom view
  • t β€” switch to tethered capture view
  • m β€” switch to map view
  • s β€” switch to slideshow view
  • p β€” switch to print view
  • . β€” switch between lighttable and darkroom views
  • Ctrl+q β€” quit
  • F11 β€” switch between fullscreen and normal modes of the application's window
  • Esc β€” leave fullscreen mode
  • Ctrl+h β€” show/hide header
  • Tab β€” show/hide sidebars

🌸 Lighttable mode

  • g, Shift-g β€” navigate to top, bottom row
  • PageUp, PageDown β€” navigate one page up, down
  • ' β€” scroll center
  • Down, Left, Right, Up β€” scroll down, left, right, up
  • z β€” preview image
  • Ctrl+z β€” preview image with focus detection
  • F1, F2, F3, F4, F5 β€” color labels: toggle red, yellow, green, blue and purple
  • 1, 2, 3, 4, 5 β€” star rating
  • 0 β€” strip all stars
  • r β€” mark as rejected
  • l β€” realign images to the grid
  • Alt-1 β€” zoom in on first visible image
  • Alt-2, 3 β€” adjust zoom
  • Alt-4 β€” zoom out completely
  • Ctrl+a β€” select all images
  • Ctrl+Shift+a β€” select no images
  • Ctrl+i β€” invert selection
  • Ctrl+d β€” duplicate image
  • Ctrl+g, Ctrl+Shift+g β€” group/ungroup selected images
  • Delete β€” remove image from collection
  • Ctrl+c, Ctrl+Shift+c β€” copy all, selected history
  • Ctrl+v, Ctrl+Shift+v β€” paste all, selected history
  • Space β€” toggle selection of an image
  • Return β€” select an image
  • Ctrl+e β€” export currently selected images
  • Ctrl+k β€” jump back to the previous collection
  • Ctrl+t β€” open a popup to quickly tag an image
  • Ctrl+Shift+i β€” import a folder
  • Ctrl+j β€” jump to the filmroll of an image

πŸ¦‹ Darkroom mode

  • Alt-1, 2, 3 β€” zoom to 1:1, fill, and fit, respectively
  • Ctrl+f β€” show/hide filmstrip
  • Space, Backspace β€” step to next, previous image
  • Ctrl+e β€” export current image
  • Ctrl+c, Ctrl+Shift+c β€” copy all, selected history
  • Ctrl+v, Ctrl+Shift+v β€” paste all, selected history
  • o β€” toggle show of over- and under-exposure
  • Ctrl+g β€” toggle gamut check
  • Ctrl+s β€” toggle softproofing
  • Enter β€” in Crop & Rotate module, commit the crop
  • [, ] β€” in Flip module, rotate 90 degrees ccw, cw
  • <, > β€” when drawing masks, decrease, increase brush opacity, respectively
  • {, } β€” when drawing masks, decrease, increase brush hardness, respectively
  • [, ] β€” when drawing masks, decrease, increase brush size, respectively

🧚 Tethered mode

  • Ctrl+f β€” show/hide filmstrip
  • v β€” toggle live view

πŸ—ΊοΈ Map mode

  • Ctrl+f β€” show/hide filmstrip
  • Ctrl+z β€” undo
  • Ctrl+r β€” redo

🎞️ Filmstrip (when the cursor is on top of the filmstrip)

  • F1, F2, F3, F4, F5 β€” color labels: toggle red, yellow, green, blue and purple
  • 1, 2, 3, 4, 5 β€” star rating
  • 0 β€” strip all stars
  • r β€” mark as rejected
  • Ctrl+d β€” duplicate image
  • Ctrl+a β€” select all images
  • Ctrl+Shift+a β€” select no images
  • Ctrl+i β€” invert selection
  • Ctrl+c, Ctrl+Shift+c β€” copy all, selected history
  • Ctrl+v, Ctrl+Shift+v β€” paste all, selected history

πŸ“ Slideshow mode

  • Space β€” start/stop playback

🫢 SEE ALSO 🫢

ansel-cli(1) β€” go read that one too, bestie, iykyk πŸ’–

πŸŽ€ OTHER INFO πŸŽ€

okay so if you're nosy like me and want the ~lore~, bestie, the website is right here β€” news, blog, bug tracker, the whole vibe:

<https://www.darktable.org/>

and for the full manual, the complete ansel usermanual lives at:

<https://www.darktable.org/usermanual/>

there's also anselrc.html, which is a full overview of all the default config settings πŸ’… where it lives depends on your install, but the typical spots are:

  • "/opt/ansel/share/doc/darktable/"
  • "/usr/share/doc/darktable/"

so yeah, go look there. it's giving documentation treasure hunt πŸ—ΊοΈβœ¨


πŸ’€ REPORTING BUGS πŸ’€

found a bug? have a feature request? just wanna yell? please use the bug tracker at:

<https://github.com/ansel-org/darktable/issues>

that's the spot for bugs, feature requests "and so on" β€” their words, not mine 😌🫢


πŸ‘‘ AUTHORS πŸ‘‘

the principal developer of ansel is Johannes Hanika 🌟 and here's the (hopefully) complete list of contributors to the project β€” and yes, the sub-lists are literally empty in the source, that's not me skipping anything, that's just how it be 😭:

  • developers:
  • translators:
  • contributors (at least 4 commits):
  • Sub-module rawspeed contributors (at least 1 commit):
  • Sub-module OpenCL contributors (at least 1 commit):
  • Sub-module whereami contributors (at least 1 commit):
  • Sub-module LibRaw contributors (at least 1 commit):
  • Sub-module doxygen-awesome-css contributors (at least 1 commit):

And all those of you that made previous releases possible πŸ’– (that's the sweetest line on the whole page ngl)

also, credit where credit is due β€” this man page was written by Alexandre Prokoudine <alexandre.prokoudine@gmail.com> and Richard Levitte <richard@levittr.org>. Additions were made by Tobias Ellinghaus <me@houz.org>. icons 🫑


🌸 HISTORY 🌸

the project was started by Johannes Hanika in early 2009, and the reason is honestly iconic: to fill the gap β€” or, rather, a black hole πŸ•³οΈ β€” of a digital photography workflow tool on Linux. like, nothing existed, so he made one. main character energy fr fr ✨


Copyright (C) 2009-2017 by Authors.

ansel is free software; you can redistribute it and/or modify it under the terms of the GPL v3 or (at your option) any later version πŸ”₯


πŸ’… and that's the whole page, bestie. go forth, read raw files, edit responsibly.

okay so this was darktable 2.3, dated 2017-01-20, filed under ANSEL(1) β€” and that's a wrap, mwah πŸŽ€πŸ’œπŸ¦‹

πŸ“¦ where this page comes from