Install and apply darktable styles

G — 01 · Guide · updated

A darktable style is a saved set of processing modules and their settings, shared as a .dtstyle file [1]. This guide shows how to import the Grain Archive styles into darktable 5.6, apply them to one or many images, and remove them. Each step follows the darktable 5.6 user manual; where the manual says nothing, we checked the darktable 5.6.0 source code.

How to import styles into darktable

  1. Unzip the pack. It contains one .dtstyle file per style, for example Pellicules - N&B - Kodak Tri-X 400.dtstyle.
  2. Open the lighttable view. The styles module sits in the right-hand panel [1] [13].
  3. Click import… and select the files. The file dialog accepts several files at once, so the whole pack can be imported in one go [13].
  4. If a style with the same name already exists, darktable asks whether to overwrite it [1]. Answer yes when you update to a newer version of the pack.

darktable copies each style into its own database, the file data.db in its configuration directory [7] [12]. It does not read the .dtstyle file again after the import.

Where the Grain Archive styles appear in the list

darktable turns the | character in a style name into a level of the tree: “print|tone curve +0.5 EV” shows up as “tone curve +0.5 EV” inside a “print” group [1]. The Grain Archive style names use French group names:

Group in darktable Contents
Pellicules › Couleur Color negative films
Pellicules › Cinéma Motion picture films
Pellicules › Diapo Slide films
Pellicules › N&B Black-and-white films
Pellicules › Instantané Instant film
Pellicules › Effets Special-effect films
Film Couleur › Contrasté grain The generic look, not tied to one film

The search field above the list finds a style by name or description [1].

Where is the darktable styles folder?

darktable keeps its settings, presets, styles and library database in a configuration directory. Its location depends on the system and on how darktable was installed [5]:

System Configuration directory
Linux, package manager or AppImage $HOME/.config/darktable
Linux, Flatpak $HOME/.var/app/org.darktable.Darktable/config/darktable
Linux, snap $HOME/snap/darktable/current/
Windows %LOCALAPPDATA%\darktable, e.g. C:\Users\<username>\AppData\Local\darktable
macOS $HOME/.config/darktable
  • The styles subfolder holds the styles you create [5]. darktable writes a .dtstyle copy there each time you create or edit a style [12].
  • Imported styles are not copied there. They are stored in data.db, next to the presets [7] [12].
  • Copying a file into the folder does not install it. At startup, darktable only loads the camera styles shipped with the program, from its own installation directory [17]. Use import… instead.

How to apply a style to one or several images

In the lighttable

  1. Select the images, one or many.
  2. In the styles module, double-click a style, or select one or more styles and click apply [1] [13]. The style is applied to every selected image.
  3. To see the look first, hover over a style name: darktable shows a preview of the first selected image with the style [1].

Two options sit above the buttons [1]:

  • create duplicate: darktable duplicates each image and applies the style to the duplicate. The original stays as it was, which makes it easy to compare several styles.
  • mode: append or overwrite, explained below.

In the darkroom

Click the styles button in the bottom panel. It opens a menu of your styles; hover over a name to preview it on the current image [3], and click it to apply it [16]. In the darkroom, the style is always added to the image’s existing history: the create duplicate and mode options of the lighttable module do not apply there [12].

With a keyboard shortcut

You can assign a shortcut to a style in preferences › shortcuts. Pressing it in the lighttable or the darkroom applies the style to the selected images [1] [4].

Append or overwrite: which mode to use?

Use append, which is the default [13].

  • Append keeps your edit. Your exposure, tone mapper (sigmoid or filmic), white balance, crop and every other step stay in place; the style’s modules are added at the top of the history stack [2]. The Grain Archive styles contain none of these base modules.
  • How the modules are merged. For each module in the style, darktable looks for an instance of that module with the same name on the image. If it finds one, that instance takes the style’s settings; if not, darktable creates a new instance [2]. Before creating one, it also reuses an instance that is switched off or still at its default settings [14]. In practice:
    • The Grain Archive color balance rgb instance is named “film”, so a color balance rgb you have already set up is left alone.
    • The other instances in the styles have no name: tone curve, grain, rgb primaries, color equalizer and, in a few styles, local contrast or split-toning. If your edit already uses one of these modules, the style’s settings replace yours in that module. Your settings stay in the history stack.
    • A second Grain Archive style applied after a first one replaces the first style’s instances with the same names instead of stacking on top of them. Modules that only the first style used stay active. To compare styles, use create duplicate instead.
  • Overwrite discards your edit. darktable deletes the image’s history stack before applying the style, and the manual warns that the previous edits cannot be recovered [1] [2]. darktable’s automatic default processing is added back the next time the image is opened in the darkroom [2]. With a Grain Archive style, you would lose your exposure, crop and other adjustments: avoid it.

Styles at export and in darktable-cli

The export module can apply a style while exporting, without changing the image’s history, and darktable-cli has the same feature with --style and --style-overwrite [6] [7]. There, append mode adds each module of the style as a separate new instance on top of the existing ones [6] [15]. On an image that only has darktable’s default processing, this ends with the same modules as applying the style in the lighttable, because none of the style’s modules is in use yet. If your edit already uses a tone curve or grain, the export keeps yours and adds the style’s.

darktable-cli needs the path to the configuration directory to find a style [7]. The full style name, with its groups, is the one to use:

darktable-cli photo.CR2 photo.jpg --style "Pellicules | N&B | Kodak Tri-X 400" --core --configdir ~/.config/darktable

How to apply a style on import

darktable 5.6’s import module can add metadata and tags to new images, but it has no option to apply a style [8]. Two ways around it:

  • Apply it right after the import. The default collection shows the last imported film roll [9]. Select all of its images in the lighttable and apply the style.
  • Use a Lua script. The autostyle script, from the darktable Lua scripts collection, applies a chosen style at import to the images whose Exif data contain a value you define. It requires exiftool [10].

Module presets, unlike styles, can be applied automatically (see below).

Style vs preset: what is the difference?

Preset Style
Content The settings of one module [11] History stack items from one or several modules [1]
Where to find it The presets menu of the module [11] The styles module in the lighttable, the styles button in the darkroom [1] [3]
Automatic use Can be applied automatically to images that match Exif rules (camera, lens…), when they are first opened in the darkroom [11] No built-in automatic application [8]
Sharing – Exported and imported as .dtstyle files [1]

Both store whether each module is switched on or off [1] [11]. A film look needs several modules working together (a tone curve, color adjustments, grain and, in black and white, a channel mix), which is why the Grain Archive presets are darktable styles, not module presets.

What black-and-white styles do to color calibration

The styles in the Pellicules › N&B group contain two color calibration instances [20]:

  • one named “N&B”, which converts the image to gray with weights computed from the film’s spectral sensitivity;
  • one switched off, set like darktable’s default (“as shot in camera”, CAT16).

When the style is applied, the switched-off instance takes the place of your main color calibration instance and turns it off [14]. This is on purpose. Otherwise, the chromatic adaptation would run on the gray image and tint it: on our test images we measured a blue cast of b* −4 to −8 [20]. darktable’s own black-and-white presets for color calibration also bypass chromatic adaptation [19].

What it means for you:

  • While the main color calibration is off, changing its white balance has no effect on the image.
  • If you had tuned color calibration by hand, the style replaces your settings with the defaults above. Yours remain in the history stack.
  • To go back to color, switch the main color calibration back on and switch off the “N&B” instance, or step back in the history stack.

How to remove (uninstall) darktable styles

  • Remove styles from darktable. In the lighttable styles module, select one or more styles and click remove [13]. darktable asks for confirmation unless you turned off “ask before deleting a style” in preferences › security; it is on by default [18].
  • What removal does. It deletes the style from darktable’s database only [12]. Images you already processed keep their edits, and your .dtstyle files are not touched.
  • Remove a style’s effect from one image. In the darkroom’s history stack module, click the step just before the style’s modules, then click “compress history stack” to discard everything above that step [4]. You can also simply switch off the style’s module instances.

Which darktable version do I need?

The Grain Archive styles are built and tested for darktable 5.6 [20]. A style stores the version of each module’s parameters. When darktable cannot convert them, it shows a “module version mismatch” message and skips that module [12].

Sources

  1. 1M darktable 5.6 user manual: styles (lighttable module) Accessed September 29, 2026.
  2. 2M darktable 5.6 user manual: history stack (lighttable module) Accessed September 29, 2026.
  3. 3M darktable 5.6 user manual: darkroom view layout Accessed September 29, 2026.
  4. 4M darktable 5.6 user manual: history stack (darkroom module) Accessed September 29, 2026.
  5. 5M darktable 5.6 user manual: configuration directory Accessed September 29, 2026.
  6. 6M darktable 5.6 user manual: export Accessed September 29, 2026.
  7. 7M darktable 5.6 user manual: darktable-cli Accessed September 29, 2026.
  8. 8M darktable 5.6 user manual: import Accessed September 29, 2026.
  9. 9M darktable 5.6 user manual: collections Accessed September 29, 2026.
  10. 10M darktable Lua scripts manual: autostyle Accessed September 29, 2026.
  11. 11M darktable 5.6 user manual: presets Accessed September 29, 2026.
  12. 12M darktable 5.6.0 source code: src/common/styles.c (import, apply, remove) Accessed September 29, 2026.
  13. 13M darktable 5.6.0 source code: src/libs/styles.c (styles module) Accessed September 29, 2026.
  14. 14M darktable 5.6.0 source code: src/common/history.c (merging a module into the history) Accessed September 29, 2026.
  15. 15M darktable 5.6.0 source code: src/imageio/imageio.c (style applied at export) Accessed September 29, 2026.
  16. 16M darktable 5.6.0 source code: src/views/darkroom.c (styles button) Accessed September 29, 2026.
  17. 17M darktable 5.6.0 source code: src/common/darktable.c (styles imported at startup) Accessed September 29, 2026.
  18. 18M darktable 5.6 user manual: preferences, security Accessed September 29, 2026.
  19. 19M darktable 5.6.0 source code: src/iop/channelmixerrgb.c (built-in black-and-white presets) Accessed September 29, 2026.
  20. 20B The Grain Archive: how the styles are built

M: manufacturer · B: Grain Archive measurement