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 file | Not in the file |
|---|---|
| One filename per line, no header | Any mark saying which line is a love and which is a like |
| Loves first, then likes | The client's colour labels |
| Each filename with its extension, exactly as stored | The client's comments |
| Every photo the client loved or liked | Photos 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.jpgtoIMG_0412.with the dot left on. That pattern is contained inIMG_0412.CR3. Keeping the dot stops it from also matching a longer name that starts the same way, such asIMG_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.
- Open the collections module in the lighttable.
- Set the first rule's attribute to filename, which the manual defines as "The image's filename".
- Type or paste the first line of your trimmed file into the rule's text field.
- 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".
- Set the new rule to filename and paste the next line.
- 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
.jpgin 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
| Question | Collections module rules | Collection filters text search |
|---|---|---|
| Whole list at once | Yes, one filename rule per line, joined with add more images (OR) | No, one search per name |
| How it matches | The filename contains the pattern | Fuzzy by default, exact inside double quotes |
| Fields searched | Filename only, when the rule is set to filename | Path, filename, film roll, tags, metadata, camera, maker |
| Handles .jpg in the list against RAW files | Yes, once each line is trimmed to the base name and dot | Only if you edit each name to the RAW's extension |
| Best for | A full set of picks | A 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.
- darktable user manual, collections module (filename attribute, contains match, % wildcard, empty field matches all, narrow down search, add more images as OR, exclude images as EXCEPT, expander button, history button and recently used collections), fetched 18 September 2026, https://docs.darktable.org/usermanual/5.2/en/module-reference/utility-modules/shared/collections/
- darktable user manual, collection filters module (text search fields, fuzzy search, double quotes for an exact match, colour label filter modes, rating filter operators), fetched 18 September 2026, https://docs.darktable.org/usermanual/5.2/en/module-reference/utility-modules/shared/collection-filters/
- darktable user manual, star ratings and colour labels (number keys for stars, F1 to F5 for red, yellow, green, blue and purple, rating and labelling several selected images at once), fetched 18 September 2026, https://docs.darktable.org/usermanual/5.2/en/lighttable/digital-asset-management/star-color/
- darktable user manual, sidecar files (duplicates as separate XMP files of the same image, database takes precedence after import, optional search for updated XMP files at startup), fetched 18 September 2026, https://docs.darktable.org/usermanual/5.2/en/overview/sidecar-files/sidecar/
- clientgallery.io product facts, checked in code 18 September 2026: the Export picks (.txt) button shown after the client sends picks; the file named after the gallery with one filename per line and no header; loves first then likes with nothing marking which is which; no colour labels, comments or label-only photos in the file; filenames kept with their extensions as uploaded; the Lightroom Classic plugin writing likes as 3 stars and loves as 5 stars plus a Pick flag, with colour labels; JPEG hosting with no RAW or master video; no print store; 10 $ a month or 100 $ a year. https://clientgallery.io/
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