Synchronizing between digiKam and darktable

Here I will be sharing my insights and findings while trying to work out how to best synchronize my work between the great programs digiKam and darktable.

Background: Using DK for years with JPGs. Now my wife is becoming more and more professional with her photography hobby and I need to update the infrastructure to work with RAWs (JPG and RAW, multiple instances of DK and DT). We use darktable for all RAW related work and DK for DAM.

First step is how to synchronize between those two. Adding pictures works out of the box. Sharing tags took some work. Hope that helps others on the same path since I could find some topics with partly the same problem but no complete solution. Please correct me or add information.

Current versions:

  • Date: 2022-11-20
  • DT darktable 4.0.1
  • DK digiKam 8.0.0-git

First of all, nothing important seems to be missing after both programs interact. The order and format may change, but the content stays readable. And for that I want to thank the Developers. They have done really good work!
Attention: Tags and color labels can be overwritten by digikam if you explicitly call “Export Metadata” from the menu. But even then the RAW editing steps of darktable stay untouched.

Reading any changes by the other tool

DK only needs to “Album/Reread Metadata from Files”.
DT needs to be closed and reopened. Then it shows, where the XMP file has modifications over the Database. Select all and “keep the XMP edit”.
Darktable sometimes needs a redisplay of the thumbnail to show the correct metadata (just scroll away and back again).

Stars

Star ratings can be set by both programs in any order. They will be read by the other. Darktable sometimes needs a redisplay of the thumbnail to show the correct stars (just scroll away and back again).

Tags

The initial set of tags including hierarchies is read by the other program. Equally so, all subsequent edits by the same program are read by the other.
But: Whenever you start editing tags or labels with the other program, each will keep its own state. Both states are in the XMP file but each reads and writes only his own copy of the set.
Explicitly exporting the metadata in digikam will overwrite the changes of darktable. Now DK will not read changes by DT anymore.
Labels and Ratings can be changed without interfering with the tags.

This can be corrected by adsjusting settings in both tools.
To synchronize between, DK can be disabled to write and consequently read only his own metadata:

  • Config/Metadata/Behavior: tick all information aspects and “rescan files”
  • Config/Metadata/sidecars: enable reading and writing to xmp sidecars only
  • Config/Metadata/Advanced/Tags: untick all, except
    • Xmp.lr.hierarchicalSubject
    • Xmp.dc.subject
    • Iptc.Application2.Keywords
  • Config/Metadata/Advanced/Tags: disable “read all metadata for tags”

DT needs the following settings:

  • Storage/XMP: enable “look for updated xmp files on startup”
  • miscellaneous/tags: enable “omit hierarchy in simple tag list”
    • DTs default is to add all hierarchies as seperate tags. This leads to DK correctly ticking all hierarchies on the reimport instead of just the leaf. With this setting both tools behave equally.

With those settings DK and DT can freely edit the tags and share with each other.

Explaination on why those three:

Explaination the DT settings:

Color Labels

Colors of DK are shown in DT. Not the other way around. DK will overwrite the DT labels on ANY change to the XMP file, even if you just change the star rating or add a tag. Also DT can have multiple color labels on one image. DK has exactly one or none.
DT uses his own metadata to set the color label. Once you set the color in DT, DK cannot read or change it anymore. So there seems to be no way to have a 2 way synchronisation here.

Flags

There is no equivalent of flags in DT.

Captions

Work right away with 2 minor differences:

  • Publisher: This field is not available in DK, only in DT. I disabled this field in DT (until we really have a publisher :wink: ).
  • Author works only for single authors. It is a list in DK with a semicolon as a delimiter. Editing the author in DT leads to all items concatinated in one line. This could probably be corrected by disabling some import mechanisms in DK/Config/Metadata/Advanced/Tags. But since we only have one Author and not multiple, I dont care.

Conclusion:

With a few settings, DT and DK harmonize very neatly. It now should even be possible to synchronize different instances of both on different workstations with a simple file synchronization of all RAW, JPG and XMP files.
Of course it will not support concurrent editing. But since we do not work on the same pictures at the same time, this is fine.

Open Issue

  1. How can I import the changes in the XMP files in DT automatically or at least with less clicks?
2 Likes

Dear Bastian,

welcome and thanks for the nice summary and explanations. I am using a similar setup and it works nicely with small collections. With larger collections the DT option " Storage/XMP: enable “look for updated xmp files on startup" will make DT unresponsive for quite some time. My strategy was to use two libraries in Darktable: A small “current” one and a larger “archive” one, that doesn’t look for XMP files on startup. However, I see my workflow changing because although collections and collection filter in DT have some issues (see other posts in the forum: A calm, rational and respectul discussion about the new collection filters), they are nevertheless quite powerful, and I am mainly using darktable for tagging etc. nowadays.