clientgallery.io

darktable

Select Client Picks in darktable From a Filename List

The darktable collections module can match a whole list of filenames, one rule per name. This guide turns a client's picks file into a darktable collection, and shows where the names have to line up first.

Updated 18 September 2026

Your client picks photos in a web gallery. You edit in darktable. The bridge between the two is a plain list of filenames.

It is easy to assume that darktable can only search one name at a time. Its own manual says otherwise. The collections module lets you add a new rule that is combined with the previous rules "in a logical OR operation". One rule per filename therefore matches the whole list.

This guide covers both ends. On the clientgallery.io side, it covers the Export picks (.txt) file and what it does and does not carry. On the darktable side, it covers two routes, both documented in the darktable user manual: a collection built from filename rules, and the text search with an exact match.

What the picks file gives you

In your studio, a gallery shows an Export picks (.txt) button once the client has sent their picks. Before the client presses send, the button is not there, because there is nothing to export.

The download is named after the gallery, as <gallery-title>-picks.txt. It is the only export of picks that clientgallery.io offers.

In the fileNot in the file
One filename per line, no headerAny mark saying which line is a love and which is a like
Loves first, then likesThe client's colour labels
Each filename with its extension, exactly as storedThe client's comments
Every photo the client loved or likedPhotos the client only labelled, with no like or love

The order is loves first, but nothing marks where the loves end. If the difference between a love and a like matters to your edit, the file alone will not tell you.

Make the names line up before the shoot goes out

This is the step that decides whether the rest works.

A darktable studio uploads proofs through the web uploader. The gallery stores each photo under the name of the file you dropped in. So if you exported IMG_0412.jpg from darktable, the picks file will say IMG_0412.jpg.

Your darktable library holds the RAW, for example IMG_0412.CR3. The collections module "detects a match if any image's attribute contains the pattern in its full text". IMG_0412.CR3 does not contain IMG_0412.jpg, so the line as written will not find your RAW.

Two habits fix this.

  • Export proofs under the RAW's base name. Set up your export so the JPEG keeps the original file's name with only the extension changed. Then every line in the picks file is your RAW's name plus .jpg.
  • Trim the extension, keep the dot. Before you build rules, change each line from IMG_0412.jpg to IMG_0412. with the dot left on. That pattern is contained in IMG_0412.CR3. Keeping the dot stops it from also matching a longer name that starts the same way, such as IMG_04120.CR3.

A search-and-replace in any text editor does the trimming for the whole file in one pass.

The same contains rule also means one pattern can match more than one image. A darktable duplicate refers to the same original file, so it may be matched along with the original. A JPEG you exported back into the library with the same base name may be matched too. The count check further down catches both.

Route 1: one collection from the whole list

This route turns the full picks file into a single darktable collection. It is the one to use for anything past a handful of names.

  1. Open the collections module in the lighttable.
  2. Set the first rule's attribute to filename, which the manual defines as "The image's filename".
  3. Type or paste the first line of your trimmed file into the rule's text field.
  4. Click the expander button to the right of the search field and choose add more images. The manual describes this as adding "a new rule, which is combined with the previous rule(s) in a logical OR operation".
  5. Set the new rule to filename and paste the next line.
  6. Repeat until every line has its own rule.

The collection now shows every image whose filename contains any of the patterns. That is the client's selection, pulled from the whole library.

A few details from the manual are worth knowing while you build it.

  • Never leave a rule empty. The manual says to "Leave the text field empty to match all images having that attribute". An empty filename rule joined with OR brings every image back in.
  • The % sign is a wildcard. The manual states "You may use % as wildcard character". You do not need it for this job, because the contains match already behaves like a wildcard at both ends.
  • You can remove strays. The exclude images operator combines a rule "in a logical EXCEPT operation". A rule that excludes .jpg in the filename would drop exported JPEGs that share a base name with your RAWs.
  • You can get back to it. The manual points to a history button at the bottom of the module and to the recently used collections module for earlier collections.

For forty picks, this is forty rules. That is real clicking, and the page will not pretend otherwise. It is still one collection built once, rather than forty separate searches.

Route 2: exact-match text search, one name at a time

The collection filters module has a text search that covers "path, filename, filmroll, tags, metadata, camera, maker".

By default it "performs a 'fuzzy' search (wildcards are automatically added to the start and the end of the text)". For an exact match, the manual says to enclose the text in double quotes.

So "IMG_0412.CR3" in quotes finds that file, and only a value that matches it exactly. Without quotes, IMG_0412 finds anything that contains it, in any of those text properties.

This route suits a short list, or checking one name the collection did not find. For a long list it means one search per line, with a rating or label applied after each one.

An exact match needs the exact name, extension included. If your picks file says .jpg and your library holds .CR3, edit the extension before you search.

The two routes side by side

QuestionCollections module rulesCollection filters text search
Whole list at onceYes, one filename rule per line, joined with add more images (OR)No, one search per name
How it matchesThe filename contains the patternFuzzy by default, exact inside double quotes
Fields searchedFilename only, when the rule is set to filenamePath, filename, film roll, tags, metadata, camera, maker
Handles .jpg in the list against RAW filesYes, once each line is trimmed to the base name and dotOnly if you edit each name to the RAW's extension
Best forA full set of picksA few names, or one missing name

Lock the picks in, then check the count

A collection built from forty rules is a view. Turn it into something you can filter on later.

Select all the images in the collection. The manual states that to rate multiple images at once you "select those images in the lighttable or filmstrip and then press the appropriate shortcut key". The manual documents the colour label keys for a single image under the cursor, so a star rating is the safer bulk marker.

  • Number keys set star ratings.
  • F1 to F5 set the red, yellow, green, blue and purple labels, in that order.

Choose one marker for "client pick" and keep it for every job. Later, the collection filters module finds them again: its rating filter takes comparison operators, and its colour label filter can require all selected labels or at least one.

Then check the count. The picks file has one line per pick, so the number of lines is the number of images you expect. Fewer means a name did not match, for example because of the extension. More means a pattern also caught a duplicate, an exported JPEG or a longer name.

One more point from the darktable manual on sidecars. "Once an image has been imported into darktable, the database entries take precedence over the XMP file." So do the marking inside darktable. Editing the XMP files with another tool will not show up in darktable unless you set it to look for updated XMP files at startup.

Who should use which tool

You edit in darktable and deliver JPEGs. This workflow is for you. The client picks in the gallery, and the picks come back as a list darktable can match in one collection.

You edit in Lightroom Classic. Do not use this page. The clientgallery.io plugin for Lightroom Classic writes the picks straight into the catalog: likes become 3 stars, loves become 5 stars plus a Pick flag, and the client's colour labels come across too. That is covered in getting client picks back into Lightroom.

You edit in Capture One. Capture One has its own command for a list of filenames, covered in the Capture One filename list guide.

You need love and like kept apart, or labels and comments in your editor. The .txt file does not carry any of that. Outside Lightroom Classic, those stay in the gallery. If that split drives your whole edit, weigh it before you build a darktable workflow around this file.

You sell prints or deliver RAW files through your gallery. clientgallery.io has no print store and hosts JPEG proofs, not RAW files or master video. A studio whose income runs through a gallery store should stay on a platform that has one.

On price, clientgallery.io is one plan at 10 $ a month or 100 $ a year, with unlimited galleries under fair use.

Sources

Every darktable quote and behaviour on this page comes from the darktable user manual pages below, fetched 18 September 2026. clientgallery.io behaviour was checked in the product code on 18 September 2026.

Frequently asked

Can darktable select images from a list of filenames?

Yes. In the collections module, set a rule to the filename attribute and enter one name, then use add more images to add the next rule. The darktable manual says each rule added that way is combined with the previous rules in a logical OR operation, so one rule per filename matches the whole list.

How do I search for an exact filename in darktable?

Use the text search in the collection filters module and put the name in double quotes. The darktable manual says the search is fuzzy by default, with wildcards added to the start and end of the text, and that double quotes give an exact match.

Why does my picks file not find my RAW files in darktable?

The file lists each photo with the name and extension it was uploaded under, so a JPEG proof appears as IMG_0412.jpg. The collections module matches when the filename contains the pattern, and IMG_0412.CR3 does not contain IMG_0412.jpg. Trim each line to the base name and the dot, such as IMG_0412., and it will match the RAW.

Does the Export picks (.txt) file say which photos were loved?

No. The file lists loves first and likes after, one filename per line, but nothing marks where the loves end. It carries no colour labels and no comments either. Only the Lightroom Classic plugin brings the two levels across, as 5 stars plus a Pick flag for loves and 3 stars for likes.

Can I export the client's picks as a CSV?

No. The only export is the Export picks (.txt) file, which appears in the studio once the client has sent their picks. It is a plain list of filenames, one per line, with no header.

Will darktable pick up ratings another app writes to the XMP files?

Not by default. The darktable manual says that once an image is imported, the database entries take precedence over the XMP file. darktable can be set to search for updated XMP files at startup. The simpler route is to rate or label the client's picks inside darktable.

Your client galleries, under your name

Unlimited galleries, your branding, one-click Pixieset import, and a Lightroom plugin, all on a flat 10 $/month with everything included. Your first gallery is free.

Create your studio

Related guides

darktable: Select Images by Filename From a Client Picks List