darktable article lede image
darktable 4.4.0 released
Pascal Obry

darktable 4.4.0 released

We’re proud to announce the new feature release of darktable, 4.4.0!

The github release is here: https://github.com/darktable-org/darktable/releases/tag/release-4.4.0.

As always, please don’t use the autogenerated tarball provided by github, but only our tar.xz file. The checksums are:

$ sha256sum darktable-4.4.0.tar.xz
8887fc34abd97c4998b0888c3197e0c509d63bdeab2238906915319811f3b080  darktable-4.4.0.tar.xz

$ sha256sum darktable-4.4.0-x86_64.dmg
64af00c1ae160a6e95c459260c7789a431bb050f23afc62f87d6f23f3f06ced1  darktable-4.4.0-x86_64.dmg

$ sha256sum darktable-4.4.0-arm64.dmg
40e41dcf508398fc67b2bce3441ac80b5dc5886e86cad15cf214530f42bf730d  darktable-4.4.0-arm64.dmg

$ sha256sum darktable-4.4.0-win64.exe
23a4831ca52c707984b64cc6b9122526e96606ce86b04a0906fe32fd8327d956  darktable-4.4.0-win64.exe

When updating from the stable 4.2.x series, please bear in mind that your edits will be preserved during this process, but the new library and configuration will no longer be usable with 4.2.x.

You are strongly advised to take a backup first.

Important note: to make sure that darktable can keep on supporting the raw file format for your camera, please read this post on how/what raw samples you can contribute to ensure that we have the full raw sample set for your camera under CC0 license!

Since darktable 4.2:

  • 2700 commits to darktable+rawspeed
  • 813 pull requests handled
  • 97 issues closed

Please note that the darktable documentation is not currently complete for release 4.4 and contributions are greatly appreciated. Please see the project documentation for more information on how to contribute.

The Big Ones

The following is a summary of the main features added to darktable 4.4. Please see the user manual for more details of the individual changes (where available).

  • It is now possible to define multiple automatically-applied presets against a single processing module. Each preset after the first will be added to a new module instance immediately after the first instance in the pipeline.

    To better visualise which module instance corresponds to which preset, the module label will be automatically set to the name of any preset that matches the current module’s parameters. If you subsequently alter those parameters, the label will be cleared, unless its parameters match to another preset, in which case it will be changed to the name of the matched preset. If the module label has been hand edited it will never be updated automatically.

    A new option (preferences > darkroom > automatically update module name) has been introduced to allow this functionality to be disabled.

  • The default parameters of some processing modules have been reworked to allow them to be more easily used in copy/paste, presets and styles.

  • Many modules have default parameters based on image metadata or current workflow, for example:

    • exposure: in a scene-referred workflow, the exposure is adjusted using the Exif exposure compensation value,
    • denoise (profiled): set based on camera and ISO,
    • lens correction: set based on camera, lens, focal length, focus distance,
    • base curve: set based on the camera maker,
    • white balance: set based on Exif metadata,
    • orientation: set based on Exif metadata,
    • color calibration: set based on Exif metadata

    For all of these modules it is now possible to paste settings while ensuring that the proper image metadata is used to set the module parameters. This is achieved by selecting the “Reset” column in the preset and style dialogs, which makes the module behave as if its reset button has been clicked.

    When creating or editing presets, a new option, “reset all module parameters to their default values”, has been added. Choose this option to auto-add modules to matching images while retaining their default parameters (including any set based on image metadata).

    This functionality has allowed us to clean up a number of module-specific hacks that previously achieved similar functionality (albeit in a more limited way).

  • The default workflow configuration option (preferences > processing > auto-apply pixel workflow defaults) has now been adjusted to incorporate the previous chromatic adaptation workflow setting and to include the new sigmoid module. Options are now as follows:

    • scene-referred (filmic) – default
    • scene-referred (sigmoid)
    • display-referred (legacy)
    • None

    With these new options, the color calibration module and scene-referred module order will be automatically applied for all workflows except “display-referred (legacy)”, which will continue to use only the white balance module for chromatic adaptation. The value in brackets represents the default module used for tone mapping (filmic/sigmoid). In the legacy mode, base curve will be used for tone mapping and in “none” mode, no tone mapping module will be applied.

  • The scopes module now has a new color harmony overlay option in RYB vectorscope mode. You can choose from 9 different color harmonies:

    • Monochromatic
    • Analogous
    • Analogous complementary
    • Complementary
    • Split complementary
    • Dyad
    • Triad
    • Tetrad
    • Square

    These will show as overlays on top of the vectorscope to tell you where the “harmonic” colors are. You can rotate the overlays by scrolling with your mouse.

    Color harmony guides can be used along with the global color picker module to guide you in shifting your image’s colors to fit a given color harmony – think of them like crop composition guides, but for colors.

  • A global right-click-and-drag operation has been added to allow image rotation to be corrected without first opening the rotate and perspective module. This operation can be used as long as the currently-focused module does not already use that shortcut for another purpose.

  • Drawn mask functionality has been completely overhauled with a large number of changes and fixes:

    • The “brush smoothing” and “pen pressure” options have been moved from the global preferences dialog to a new collapsible “properties” section in the mask manager, so that they can be changed while drawing and can be assigned shortcuts.

    • The drawn mask shape size/feather/hardness sliders in the mask manager now use a logarithmic scale and scrolling over them makes relative adjustments, just like Shift+scroll over the shape itself. As with other sliders, Ctrl or Shift can be used to make fine or coarse adjustments (similarly with shortcut fallbacks enabled). Shortcuts assigned to the sliders can be used to adjust brush size/hardness while drawing.

    • A fifth set operator has been added to the mask manager to allow drawn shapes to be combined in “sum” mode. This allows repeated brush strokes with low opacity to be layered on top of each other to increase the strength of the mask. This mode is now the default for brush shapes.

    • It is now possible to change the set operator (mode) for all shapes in a group from the right-click menu in the mask manager.

    • Some actions in the mask manager menu previously could be activated even though they would have no impact on the image in some contexts. The move up/down actions are therefore now disabled for the first and last element in a group respectively, and it is no longer possible to choose a set operator (mode) for the first element in a group.

    • The sort order of the shapes in mask manager groups has been reversed so that the lowest ranking shape is at the bottom of the group. The sort order of shapes outside of a group has also been changed for consistency.

    • It is now possible for all mask types to be added continuously in the mask manager.

    • Fixed an issue where the brush was not properly displayed after being created from the mask manager, and a crash when creating gradients from the mask manager has also been fixed.

    • For all shapes the editable state is now properly set after creation making it possible to move and resize the different parts of the shapes.

    • Fixed a display issue when editing a shape name in the mask manager.

    • Fixed the state of the set operators in the mask manager – when moving a mask up/down we now ensure that the first mask has no operator and that the second one always has an operator assigned. If no operator has been set yet the default (union) operator is used.

    • When using a shortcut to add shapes to a drawn (blending) mask the blending mode will automatically switch to “drawn mask” or “drawn & parametric mask”, depending on what it was before, so that any newly created shape will actually affect the image.

    • In the drawn mask blending mode there used to be an “invert mask” option that had the same functionality as the “toggle polarity” option. Since both were doing the same thing, “invert mask” is now removed.

    • The drawing of masks has been reworked to ensure that all types of masks are drawn in the same way – the central area, border, and highlighted segments are now displayed consistently. The highlighted segment is now more visible, especially for the brush mask, where the highlighted segment was barely distinguishable due to a bug.

    • In the style and copy/paste dialogs a new column has been added to show whether a module uses a mask (drawn/parametric/raster) using the standard mask icon.

    • Editing of drawn masks has been improved – it is now easier to select masks’ control points and path segments (in some cases it was easy to accidentally select the whole path mask rather than a single segment). On-canvas mask rendering has also been improved for better consistency between shape types.

    • The brush path is now slightly more transparent in order to better see the underlying image.

Performance Improvements

One of the major highlights of this release is the number of performance improvements and enhancements:

  • The following processing modules have had code cleanup and performance improvements. All SSE2 code paths have been removed (the optimized parallel code generated by the compiler is faster) or code optimized, leading to speed gains of 5-40%:

    • dithering (now called dither or posterize – see below)
    • graduated density
    • input color profile
    • color look up table
    • framing
    • surface blur
    • vignetting
    • retouch
    • denoise (profiled)
    • invert (deprecated)
    • local contrast (local Laplacian mode)
    • lowpass
    • rgb levels
    • input color profile
    • lowlight vision
    • velvia
    • split-toning
    • negadoctor
    • color calibration (CIECAM16, XYZ, and linear/nonlinear Bradford).
    • filmic (legacy – deprecated)
    • filmic rgb (including highlight reconstruction)
    • color balance (legacy)
    • color balance rgb
    • levels (legacy – deprecated)
    • fill light (deprecated)
    • liquify
    • color mapping
    • highpass filter
    • shadows and highlights
    • lens correction
    • grain
    • monochrome
    • highlight reconstruction (inpaint opposed mode)
  • Improvements to a number of core routines have also led to further speed improvements:

    • The interpolation algorithms (Bicubic, Bilinear, Lanczos2, Lanczos3) – used by “rotate and perspective”, “crop and rotate (deprecated)” and for resizing the output.

    • The gaussian generator – used by censorize, denoise (profiled), lowpass, diffuse or sharpen, defringe, RAW chromatic aberrations, base curve, perspective correction, filmic RGB, retouch, tone equalizer and zone System (deprecated)

    • The box blur filter – used by focus peaking, the guided filter for blending, the new highlight recovery algorithms, and the bloom, highpass, haze removal, and soften modules.

    • The Edge-Avoiding a-trous Wavelet – used by contrast equalizer and denoise (profiled).

    • Some parts of the bilateral filter – used in monochrome, lowpass Filter, shadows and highlights, censorize, retouch, color mapping, rotate and perspective, and local contrast.

    • All the blending modes in Lab & RGB for the display-referred and scene-referred workflows.

    • The luminance mask calculation for the tone equalizer.

    • The loader for the JPEG2000 file format.

    • The color adaptation matrices have been transposed to allow for vectorization.

    • The “acquire clusters” operation in the color mapping module has been sped up by a factor of 30 to 200, making the results perceptually instantaneous on clicking the button.

  • Pixelpipe code and caching strategies have been rewritten with significant performance gains when developing in the darkroom.

  • OpenCL support has been added to the sigmoid module.

  • OpenMP support has been added to the XCF export and RGBE loader.

  • The performance of the highlight reconstruction inpaint opposed algorithm has been improved by providing an OpenCL implementation and using internal caching in the darkroom.

  • The guided Laplacian highlight reconstruction mode is now less memory hungry (with a saving of around 40%) and its performance is significantly improved, allowing for more iterations of recovery to be applied by default.

  • Successive changes to sliders and other widgets (for example by dragging, scrolling or using shortcuts) have been made more responsive by creating fewer undo records. This also makes using undo/redo more effective because you are no longer forced to step through every micro-change.

Other Changes

  • The filter section of the preset dialog has been reworked to better show the relationship between raw/non-raw and HDR/monochrome/color. This should avoid the accidental creation of presets that can never apply to any image.

  • ISO range selection has now been improved within the auto-apply presets dialog.

  • Shortcuts assigned to presets or styles will now be shown when hovering over them in the relevant menu.

  • Long-left-clicking a preset will now keep the preset menu open so you can quickly switch between several presets to visualise the effect. You can also scroll over the preset button to switch to previous/next presets (like you already could using shortcuts).

  • Two new sharpness presets have been added to the diffuse or sharpen module – standard sharpness and one with a stronger effect.

  • The color picker code has been completely overhauled resulting in speed improvements due to code paths not being run unnecessarily. Code is now tuned for contemporary processors, using OpenMP features for more succinct code. A time-consuming denoise pass is now only executed when used from the filmic module (in which case removing noise makes the automatic tuning more robust). A monochrome image warning has been removed, along with additional code cleanup, de-duplication and optimization.

  • All remaining color-picker buttons are now accessible via shortcuts and Lua scripts.

  • Histogram calculation code has been modernized, removing SSE code paths. While this doesn’t itself provide any speed improvements, it is used as a model for optimized code using recent OpenMP features. Various pieces of unused code have been removed to provide a consistent internal API. In certain cases this code will produce marginally more accurate results, and in some cases will use substantially less memory.

  • The histogram gui has been reworked. Control buttons have been split into two groups: On the left side, a series of buttons to switch between histogram modes (histogram, waveform, rbg parade, vectorscope); On the right side, the buttons that control the parameters of each mode (RGB Channels, orientation, vectorscope). For the RYB vectorscope, a series of buttons have also been added to visualize guide lines for the most common color harmonies.

  • The zoom widget in the navigation window has been converted to a standard drop-down, better fitting the darktable style.

  • The scroll zoom logic in the darkroom has been reworked in order to make the zoom steps more perceptually-uniform for all image sizes.

  • A new option (preferences > darkroom > middle mouse button zooms to 200%) has been added to control how the middle-mouse-click zoom toggle behaves in the darkroom. Select this option to toggle between fit, 100%, and 200%; disable the option to only toggle between fit and 100%. In the latter case, you can access 200% zoom with Ctrl+middle-click.

  • Snapshots are no longer invalidated when the history is compressed or reset. All snapshot are now stored with their full history and can always be correctly reconstructed.

  • The snapshot list view been redesigned, bringing its display in line with that of the history module. At the same time the module’s label is now shown in the list and is editable with Ctrl+click.

  • The following modules have been deprecated and will be removed for selection in a future version (though they will continue to be available for old edits):

    • levels (use rgb levels instead)
    • contrast brightness saturation (use color balance RGB instead)
  • The ISO 12646 border size was too small in the previous version and this has been fixed.

  • The “default” module group has now been removed and you are now advised to use one of the scene-referred module groups instead.

  • Support has been added for loading QOI and FITS images, and for writing metadata to XCF format (see notes below).

  • The ability to read Exif metadata from AVIF, HEIC and JPEG XL images using native libraries (if not supported by Exiv2) has been added.

  • Exif data is now written to the Exif PNG chunk when using an Exiv2 version 0.28.0 and newer – this is the new standard way to store Exif data in PNG files.

  • Masks are now exported as extra channels in EXR files.

  • Loading of BigTIFF images is now re-enabled, and attempts to use the native LibTIFF-based reader first.

  • Export and thumbnail generation has been redesigned to remove some hacks that had accumulated and should result in a better export size.

  • Various improvements have been made to the debug interface when running darktable from the command-line:

    • -d common outputs most valuable information and should now be used for bug reports instead of -d all.

    • --bench-module <modulea,moduleb> performs runtime benchmarking of the specified modules.

    • --dump-pipe <modulea,moduleb> writes input and output data of the specified modules as pfm files for inspection.

  • Support for lens correction using embedded metadata has been improved:

    • Support for dng files has been added,
    • Scale and chromatic aberration correction can now be fine-tuned,
    • An auto-scale button has been added,
    • Overall module performance has been improved by approximately 8%.
    • An improved algorithm for embedded metadata lens correction has been added, providing better distortion and vignetting corrections for supported FujiFilm and Sony images.
    • Added support for Fujifilm X-Trans I/II/III raw files.
  • Section headers have been added to the “sort by” drop-down in the top panel (files, times, etc).

  • When the crop module receives focus and switches to an uncropped view of the image, the crop handles around the edges of the image now briefly light up to indicate that they can be clicked-and-dragged.

    As long as the crop covers the full image (and moving it by dragging is therefore impossible) the sensitive zone for dragging corners and edges is enlarged.

  • While the crop module shows the whole image to facilitate making adjustments, it will no longer trigger a pipe recalculation until the module loses focus (for example by switching to another module or by collapsing the crop module) at which point the new crop will be used to resize the image. If shortcuts are used to make changes to the crop without focusing the module, these will still be implemented immediately.

  • Removed the commit button from the crop module as it was no longer used.

  • The height of resizeable module areas can now be changed by clicking and dragging the bottom of the resizeable area. The previous method to achieve this, by scrolling while holding the control key, has been changed to Shift+Alt+scroll (and a note added to all tooltips). This frees up Ctrl+scroll for fine-tuning changes in RGB Levels or the histogram (to change exposure or black level). In the navigator preview Ctrl+scroll now adjusts zoom level without bounds, as it already does over the central image area.

  • The module instance name in the darkroom has been altered so it is more clearly separated from the module name (using a “bullet” separator). The label name in the history module has also been updated accordingly.

  • The display of the range rating widget in the collection filters module and top panel has been improved to give it better contrast/icons, which should make it more easily readable.

  • The search filter in the collection filters module and top panel has been improved to also allow searching for camera brand and model.

  • In the lighttable view, the “hold” and “sticky” preview shortcuts are now linked to the same action – previously there were two “toggle sticky preview mode” actions, one with and one without focus detection. Focus detection can now be selected (in shortcuts) via an element, and hold/toggle via an effect. All mapped shortcuts are shown in the tooltip of the preview layout button.

  • A full copy-and-paste is now always performed in overwrite mode (replacing the history of the target image), since append mode is often the less appropriate choice – for example, for some modules it often makes no sense to add extra instances.

  • The style tooltip now immediately shows module details while waiting for the preview image to be calculated.

  • The tooltips in the liquify module’s shape tools are now consistent with the blending drawn mask tools.

  • The “demosaicing for zoomed out darkroom mode” preference has been removed. This option is no longer necessary due to improvements in the pixelpipe cache and previously could have led to slight differences in darkroom processing.

  • The Exif focus distance field is now read for images taken with Nikon Z bodies.

  • When reading creator metadata from IPTC Information Interchange Model, darktable now prefers By-line over Writer/Editor. Date/time and description metadata are read from commonly-used properties.

  • The rendering of the arrow that joins source and target shapes in the retouch module has been reworked to be more consistent between shapes. All source/target shapes are now linked with an arrow rather than a simple line and are rendered in such a way as to avoid crossing over the shapes themselves (by connecting the closest source/target borders).

  • The full-frame-equivalent focal length and crop factor is now shown alongside the actual focal length in the image information module.

  • New options have been added to the watermark module for more fine-grained control over scaling. In conjunction with the new ‘fixed-size-text’ template it is now possible to insert text with constant font size.

  • Encoder ring and button lights of the Behringer X-Touch Compact are now supported via midi. Unmapped encoder presses fall back to reset the encoder.

  • Midi buttons mapped to the reset effect of a slider or combo (either directly or via fallback, like the row below the faders of the X-Touch Compact) now light up if the current value is not the default.

  • Resetting a combobox that has sub-headers (by double clicking or via a shortcut) will now choose the first selectable item.

  • Requests to switch images in the darkroom (via space/backspace/filmstrip) used to be quietly ignored if a recalculation was currently ongoing. Now, they will be processed as soon as the pipe is ready. Any changes that were made to the previous image while waiting will be discarded.

  • Manual per-color black point adjustment is now possible for non-CFA (a.k.a. linear) raw images. Note that file-embedded levels might still not be set automatically on import.

  • The dithering module now also includes posterization modes and masking, and is therefore renamed to “dither or posterize” to make the new functionality more discoverable.

  • Help buttons have been added to several dialogs and preference tabs to allow direct access to the relevant online manual entries.

  • A new version of fimic color science – v7 (2023) – has been added and is now the default. This version replaces the color preservation drop-down with a slider to control the saturation of the highlights. This slider is used to control a mixture between the previous “max RGB” and “no preservation” modes.

  • It is now possible to import the following additional metadata keys:

    • Iptc.Application2.Byline
    • Iptc.Application2.DateCreated
    • Iptc.Application2.TimeCreated
    • Exif.Image.ImageDescription
  • The shadows and highlights module now uses the bilateral filter by default as this avoids the halos common to the previous (Gaussian) default.

  • Some new aspect ratios have been added to the framing module:

    • CinemaScope
    • US Letter
    • US Legal
    • Standard print sizes (5x7, 8x10, 11x14)
  • A new tooltip has been added to the edges of sliders with soft limits describing how to set values outside those boundaries.

  • When deletion of a physical file (or movement of that file to trash) fails, the clarity and usability of the “further action” confirmation dialog is now improved.

  • It is now possible to see the current image’s embedded ICC profile as a tooltip in the input profile module.

  • A warning message is no longer shown when multiple color calibration module instances are used with masks. This approach is commonly used to handle multiple light sources and is considered to be correct usage of the module.

  • It is now possible to calibrate colors using the Spyder Checkr Photo color checker in the color calibration module.

Bug Fixes

  • Fixed an issue where the sort order in the top panel was reset to ‘filename’ on every collection change.

  • Fixed an issue whereby modules were not always reset to their initial state when pressing the reset button. This fix is related to the rework of the auto-application of default parameters described above.

  • XMP regions (e.g. from camera face recognition) are now properly transformed from metadata to ensure they match the image.

  • Fixed some rounding issues in the calculation of the borders in the framing module. Borders on opposite sides are now created with the same size.

  • Fixed entering a custom aspect ratio in the framing module.

  • Code maintenance and bugfixes have been made for writing dng files in the “Create HDR” functionality

  • Fixed some pixelpipe cache issues related to mask visualization and internal module histograms (e.g. within RGB curve). This ensures a better hit in the cache leading to better performance, and also avoids some refresh issues.

  • Fixed calling darktable with --threads n so that it does not permit using more OMP threads than are available on the host.

  • The raw chromatic aberrations module has been amended to always use the entire image, and so now works correctly at all darkroom zoom levels.

  • An issue with setting the active item in a combox having varying content using a shortcut (or lua’s dt.gui.action) has been fixed. It is also now possible to directly set the values of the comboboxes for the focused module’s blending mode etc. by setting the shortcut’s effect.

  • The module presets menu has been fixed to allow the currently-used preset to be updated in more situations. For example after entering the darkroom and modifying some module parameters the “update preset” entry was not previously selectable and the user had to first select the preset and then update the parameters again.

  • The color picker sample area calculation has been fixed to ensure that at least one pixel is always selected. At large zoom levels and with a very small area some rounding errors previously could result in an empty area selection and therefore an incorrect color sample.

  • The “ignore EXIF rating” import option has been fixed for images containing the XMP.xmp.Rating tag. This does not change the rating if an XMP file is found with some specific rating already entered.

  • Minor memory leaks have been fixed in some modules.

  • Fixed a possible crash when selecting the original module history state and compressing the history stack.

  • Fixed a possible crash in gradient mask creation due to an issue in the implemented parallelism.

  • Fixed an issue with the “look for updated XMP files on startup” option that caused mismatches to be incorrectly reported every time darktable was started up. The fix ensures that the XMP and database timestamps are correctly aligned.

  • The placement of the brush correction tool has been fixed in the retouch module. This issue was more visible on images that had been distorted by other modules earlier in the pipe.

  • Some differences between CPU and OpenCL output have been fixed in the PPG and VNG/VNG4 demosaicers, as well as the match greens and color smoothing options.

  • The (hidden) final scale module now properly uses the same user-defined scaling mode for image and masks.

  • Fixed import of Nikon camera make and model Exif so that opening the image in the darkroom is no longer required, and import now also works for non-raw files.

  • Fixed an issue where Canon CR3 metadata crop was not being ignored. The full visible sensor area (as determined by LibRaw) is now always used on new imports.

  • Fixed to give priority to XWayland when using Wayland, since use of native Wayland is the cause of many issues in darktable.

  • When using the spot exposure mapping mode, properly reset the mode to “correction” when changing image.

  • Fixed a bug where the highlight reconstruction module could be enabled on images for which it cannot be used, such as JPEG files.

  • Fixed a border issue in the inpaint opposed highlight reconstruction algorithm, whereby some pixels on the border of the image were not correctly handled by the algorithm. This may lead to a small difference on the border of the image and will avoid some possible reddish borders.

  • Fixed an issue in the segmentation highlight reconstruction algorithm, whereby the mask display could be broken due to the module accessing some uninitialized data.

  • Fixed to avoid writing to an XMP file if it was not requested and the image was not altered. This rule is now also properly applied when importing RAW + JPEG.

  • Fixed to make sure the database timestamp is always set when an XMP sidecar file might be written.

  • A workaround was implemented for the mouse hover effect over sliders and dropdowns, which used to cause the whole side panel (including the histogram) to be redrawn on each mouse movement between widgets. This has been fixed and should result in lower CPU consumption.

  • In the rotate and perspective module, if the current rotation is close to ±180 degrees, adjusting it by drawing a horizon line with right-click+drag could lead to it being clipped at the end of the slider. This has been fixed so that the rotation angle correctly wraps around when it reaches ±180. A manually-entered value outside the range (like 182) will be similarly wrapped (to -178).

  • Fixed loading of monochrome images.

  • Fixed the display of tiny circular masks to ensure that the mask is always visible.

  • Fixed the loading of the OpenCL library when the required symbols are not fully implemented.

  • The imported EXR image size is now set to the extent of the valid data window only.

  • Collection sort names are now properly translated in the recent collection sort history pop-up.

  • Fixed dual demosaicing options for 4-color Bayer sensor cameras where only VNG4 and PassThrough are supported.

  • Fixed to no longer truncate focal length on thumbnails to avoid loss of display precision.

  • Fixed a possible crash caused by use of detail masks when switching to the darkroom.

  • Fixed feathering masks in lens correction, retouch, liquify, and spot removal modules.

  • Fixed some rare cases where masks were not displayed when trying to edit them after just starting darktable or changing module group.

  • Fixed slideshow issues on HiDPI displays.

  • Fixed crashes when using raster masks after reordering the pixelpipe.

  • Fixed use of details mask in blown-out parts of the image.

  • Allow adding color patch on 7x7 grid of the color checker module.

  • Feathering input fixed when using distorting modules like retouch or lens correction.

  • Fixed a long-standing potential memory bug in the interpolation code, though one which never has occurred due to how that code is used in darktable.

  • Reworked the metadata editor to prevent possible data loss.

  • Fixed import of auto-applied presets where the upper bound of ISO, aperture and exposure could be incorrectly set as the lower bound.

  • Fixed the pin icon update in the collection filters module, which could crash darktable when using some specific filter combinations.

  • Fixed the rating toast message not being shown when rating a collapsed group of images using a keyboard shortcut.

  • Fixed a possible crash in the astrophoto denoise module when used on CPU (not an issue for OpenCL).

  • Fixed some minor issues with the Spyder Checkr 48 (v2 - after 2018) reference values.

  • Fixed a possible crash in the Edge-Avoiding a-trous Wavelet when handling very small image regions.

  • Properly ignore empty GPX latitude/longitude which would otherwise create bogus location coordinates.

  • Fixed saving of position in the collections module’s history and recent collections module. This fix ensures that activating a history entry correctly restores the thumbnail offset to the point at which the entry was saved.

  • Fixed to avoid possible unwanted flipping of the selected image when entering the print view due to filmstrip thumbnails being updated.

  • Fixed an issue in the crop module, where Shift+dragging on an edge only allowed the crop area to be made larger (while maintaining the aspect ratio) and could not make it smaller. Previously this feature only worked correctly when dragging a corner.


API Version

  • API version is now 9.1.0

Add action support for Lua

  • The lua call to dt.gui.action is now more flexible, with most parameters now being optional. For example you can read the focused status of a module with just dt.gui.action("iop/filmicrgb", "focus").

  • Tooltips now show the compact lua commands in mapping mode (only adding the last parameter – instance – if the module supports multi-instance) and have been added to presets and styles menus as well.

  • Lua commands can be copied to the clipboard, using Ctrl+v in the shortcuts dialog, both from a selected action/shortcut, or long right click when in mapping mode (over a widget) or in the presets/styles menus.

  • The shown/copied lua command for a slider or combobox will set the value it currently has.

  • A shortcut can now be directed to a lua script that mimics a standard slider, dropdown or button, but dynamically selects the real widget(s) that receive it based on, for example, which module is focused or enabled. The advantage is that all fallbacks work as normal, so you can assign a midi knob to it and turning it (holding shift/ctrl to speed up/down) or pressing it to reset works regardless of which widget receives it.

    Basically this is a much more flexible alternative to the fake widgets under processing modules/<focused>. This allows owners of, for example, an x-touch mini to use their scarce rotors in different, fully configurable, ways while working in different modules (which can also be focused using midi buttons which will then light up).

    Such configurations could be shared using https://github.com/darktable-org/lua-scripts. examples/x-touch.lua is a working demonstration that can be easily amended.

  • Added support for shortcuts to sliders/combos created in lua, either via visual mapping mode or in the shortcuts dialog under the lua category. Elements and effects are not supported.

Other Lua changes

  • Added an aspect_ratio field to dt_lua_image_t for image orientation retrieval support.

  • dt_lua_image_t now repects the “show time in milliseconds” setting in lighttable preferences and will return exif_datetime_taken with milliseconds when enabled.

  • Added final_height, final_width, p_height, and p_width fields to dt_lua_image_t.

  • Two new properties have been added to get the flags (category, private) and the synonyms from a tag.

  • Moved the pixelpipe-processing-complete event from the end of the image pixelpipe to the end of the preview pixelpipe to catch completion of events that only update the preview, such as spot exposure measurement in the exposure module.


  • When exporting to AVIF, EXR, JPEG XL, or XCF, selecting specific metadata (e.g. geo tag or creator) is not currently possible. For AVIF, EXR, JPEG XL, and XCF formats, darktable will not include any metadata fields unless the user selects all of the checkboxes in the export preference options.

  • In order to support the correct display of numbers in darktable, the minimum supported Gtk version has had to be increased to 3.24.15. For people who need to build darktable with an older version, this can be achieved by removing line 241 of the darktable.css file on your system. See https://github.com/darktable-org/darktable/issues/13166.

  • Starting with this release a new support policy regarding macOS versions will be in place – darktable releases will now only support those macOS versions that are also supported by Apple. Release 4.4 therefore drops support for macOS versions older than 11.3.

Changed Dependencies


  • None


  • None

RawSpeed changes

Camera support, compared to 4.2

Base Support

  • Canon PowerShot SX10 IS (dng)
  • Canon PowerShot SX160 IS (dng)
  • Canon PowerShot SX20 IS (dng)
  • Canon PowerShot SX220 HS (dng)
  • Canon PowerShot SX230 HS (dng)
  • Canon PowerShot SX240 HS (dng)
  • Canon PowerShot SX30 IS (dng)
  • Canon PowerShot SX530 HS (dng)
  • Canon PowerShot SX710 HS (dng)
  • Fujifilm FinePix F550EXR
  • Fujifilm X-A7
  • Hasselblad X1D
  • Hasselblad X2D 100C
  • Leica M10 Monochrom (dng)
  • Leica M11 (dng)
  • Leica M11 Monochrom (dng)
  • Leica Q3 (dng)
  • Nikon Z 8 (14bit-compressed)
  • Panasonic DC-GH5M2 (4:3)
  • Panasonic DMC-FZ100 (1:1, 3:2, 16:9)
  • Panasonic DMC-GF8 (4:3, 1:1, 3:2, 16:9)
  • Phase One IQ180
  • Phase One P45
  • Sony ILME-FX30

White Balance Presets

  • Canon PowerShot SX160 IS
  • Fujifilm X-H1
  • Fujifilm X-H2S
  • Fujifilm X-T200
  • Nikon Z 6_2
  • OM System OM-1
  • Pentax K-1 Mark II
  • Ricoh GR IIIx
  • Sony DSC-RX100M7
  • Sony ILCE-7C
  • Sony ILME-FX30
  • Canon EOS R7
  • Canon EOS R10

Noise Profiles

  • Canon PowerShot SX160 IS
  • Nikon Z 6_2
  • Ricoh GR IIIx
  • Sony ILCE-6100
  • Sony ILCE-7M4
  • Sony ILCE-7RM5
  • Sony ZV-E10

Missing Compression Mode Support

  • Apple ProRAW DNGs
  • CinemaDNG lossless (Blackmagic, DJI, etc.)
  • Fujifilm lossy RAFs
  • Nikon high efficiency NEFs
  • Samsung Expert RAW DNGs

Suspended Support

Support for the following cameras is suspended because no samples are available on raw.pixls.us:

  • Creo/Leaf Aptus 22(LF3779)/Hasselblad H1
  • Fujifilm FinePix S9600fd
  • Fujifilm IS-1
  • GoPro FUSION
  • Kodak EasyShare Z980
  • Leaf Aptus-II 5(LI300059)/Mamiya 645 AFD
  • Leaf Credo 60
  • Leaf Credo 80
  • Minolta DiMAGE 5
  • Olympus SP320
  • Panasonic DMC-FX150
  • Pentax Q10
  • Phase One IQ250
  • Samsung GX10
  • Samsung GX20
  • Samsung EK-GN120
  • Samsung SM-G920F
  • Samsung SM-G935F
  • Sinar Hy6/ Sinarback eXact
  • ST Micro STV680


  • New English translation with capital letters
  • German
  • European Spanish
  • French
  • Hebrew
  • Hungarian
  • Japanese
  • Polish
  • Brazilian Portuguese
  • Slovenian
  • Albanian
  • Ukrainian
  • Chinese - China
  • Chinese - Taiwan
Filed under: Announcement Darktable Release
These are comments from the old website, archived as static HTML