hg Use ID
A helper tool for the Pigment Lab in A Tale in the Desert.
Statistics are disabled for this repository
Downloads are disabled for this repository
Jason Maltzen c4151b335d1f
6 months ago
Malkyne 35683a714f6b
6 months ago
Malkyne f419334a476f
6 months ago
Malkyne 7117d2e703c8
6 months ago
Malkyne 40eaee10ae56
6 months ago

Desert Paint Codex

(Formerly Desert Paint Lab)

This is a tool for players to record their Pigment Laboratory ingredient reactions in A Tale in the Desert.

Latest Releases

You can find the latest releases at


  • Scans your screen for the Pigment Lab reaction values, without any math, measuring, or manual number entry.
  • Warns you when a reaction clipped outside of readable range.
  • Supports multiple character profiles.
  • Can export to PracticalPaint data format.
  • Includes simulator for experimenting with recipes without spending ingredients.
  • Includes a recipe generator

Tale 10

  • Desert Paint Lab is now Desert Paint Codex, and has a whole new UI, for Tale 10.
  • Untested reactions are now kept in a list to the left, so you can immediately see what still needs testing.
  • The application has not yet been updated for ATITD's new UI. This will be coming soon.

Tale 9

  • New papyrus texture in interfaces
  • Earth Light was replaced by Falcon's Bait mushrooms. Practical Paint still uses the name EarthLight internally, so the data files still use that name here as well.
  • macOS is now a 64-bit app. Windows remains 32-bit due to incompatibilities with the UI library.
  • macOS build does not support Catalina (is not notarized)

Known issues

  • A batcher installed on a Pigment Lab will prevent finding the right part of the screen with the resulting color.


Download Desert Paint Lab

You can always find the available downloads, on the download page.

Desert Paint Codex now uses Net Core, instead of Mono. The package should come with everything you need to make it work.

Set Up a Profile

The first time you run Desert Paint Lab, it will prompt you to make a profile. You may either create a new profile, or import an existing PracticalPaint reactions.txt file.

Start Testing!

Add two ingredients to your Pigment Lab. Select those same ingredients in Desert Paint Lab. Then, with the Pigment Lab dialog unobstructred, select the Capture button. Once you are satisfied with the result, click the Record button. The data will automatically be added to your profile.

Clipped? Huh?

Occasionally, you will see a warning dialog that informs you that a "Reaction clipped." That means that one or more of the color components moved outside of the testable range. This makes it impossible to calculate the reaction from these two ingredients.

You can solve this by doing a three-way test.

  1. In your clipped reaction, let's call your 1st ingredient A and your 2nd ingredient B.
  2. Select a non-catalyst ingredient C for which you have already tested C + A and C + B. It is OK if there was a reaction in those earlier tests. Desert Paint Lab can work out the math.
  3. In Desert Paint Lab, select ingredients as follows:
    1. C
    2. A
    3. B
  4. Add the ingredients in your Pigment Lab in exactly that order.
  5. Capture.
  6. Record.

For clipped reactions, your C ingredient should be one that corrects for the clipped color. Here are some suggested C ingredients for clipping correction:

Clip Color Clip Direction Correction Suggested "C" Ingredient
Red Low +Red Carrot (224) or Red Sand (144)
Red High -Red Silver Powder (16) or Toad Skin (48)
Green Low +Green Falcon's Bait (240) or Copper (192)
Green High -Green Red Sand (16) or Silver Powder (16)
Blue Low +Blue Falcon's Bait (224) or Copper (192)
Blue High -Blue Red Sand (24) or Clay (32) or Carrot (32) or Silver Powder (32)

In many cases, it may be easiest to go back and do these three-way tests after you have finished all of your other testing.


For catalyst to catalyst reaction tests, follow the three-way instructions, as above.

Finishing Up

When you're done testing your reactions, you can either use the built-in Pigment Lab simulator (Window > Run Simulator) to experiment with recipes, without dipping into your precious ingredient stocks. Alternatively, you can export your reactions in PracticalPaint format.

Generating Recipes

What do all these settings do?

  • Minimum Ingredients is the minimum number of ingredients the generator will use in a recipe. It's best to leave this at 1 so the simple single-ingredient recipes are included (like 10 carrots for 'carrot')
  • Maximum Ingredients limits how many ingredients will be used in a recipe. Ingredients after the 5th will still affect the resulting color, but won't use their reactions.
  • Silk Ribbon Recipes sets the generator up to create recipes for silk ribbons. Ribbons use a base concentration of 50 instead of the 10 that is used for paint.
  • Maximum Concentration is the maximum recipe concentration. Recipes with a concentration above 10 will still produce a single db of paint, but can use larger quantities of ingredients to make smaller color adjustments. Increasing this will increase the time required to search all the possible combinations.
  • Full Quantity Depth is the number of ingredients in the recipe that will use up to the "full quantity" value as the limit for those ingredients over the ingredient's maximum.
  • Full Quantity is the maximum quantity of any ingredient to use up to the Full Quantity Depth. For example, with a Full Quantity of 15 and a Full Quantity Depth of 3, a recipe could use up to 15 of each of the first 3 ingredients. After that it will be limited by the setting for that specific ingredient.

Known Issues


If you are running on a multi-screen system, or a very high-resolution screen, you may find that Desert Paint Lab is rather slow in determining paint reactions. That's because you have a lot of screen real-estate to scan, to look for the Pigment Lab dialog. You can speed up the scanning process by ensuring that your Pigment Lab Dialog is as far to the upper-left of the screen as possible. Also see the advanced settings (below) for some additional options that may help.

Multiple Displays

When Desert Paint Lab asks for the resolution for a multiple-display setup, enter the combined resolution of all displays. Generally the detected default for this will be correct. For example, two 1920x1080 displays in a side-by-side configuration would be a combined resolution of 3840x1080. In a stacked configuration, they would be 1920x2160.

Retina / High-Density Screens

High DPI screens may be displaying the game at something other than a 1:1 game-pixel to screen-pixel ratio. These screens didn't exist, back when Desert Paint Lab was created. The current version now prompts you for your screen resolution when it starts to work around this. If you see a crash when trying to capture a reaction, it's likely because the resolution is incorrect. For example, Snoerr's MacBook Pro has a retina screen with a resolution of 2880x1800. Mono (and therefore DesertPaintLab) detects it as having a resolution of 1440x900. He enters his resolution as 2880x1800 and sets the Game pixel width in screen pixels to 2.

Mac user FAQ

Q: How do I find my native screen resolution?

A: You can find it by opening up "About this Mac" from the Apple menu and clicking on the "Displays" tab. That should show the screen size and resolution to enter.

Advanced Settings

The settings file has several advanced options that are not available in the interface. Some of these are for debugging, while others are useful for improving the speed of finding the pigment lab interface. The settings file is found in AppData\Local\DesertPaintLab\settings on Windows, and in ~/.local/share/DesertPaintLab/settings on macOS.

  • scanarea.min.x sets the starting horizontal offset when searching for the pigment lab. This is useful in multi-screen setups to skip any leftmost displays. For example, a dual-screen setup with two side-by-side 3840x2160 displays where the game runs on the right screen would set this to 3840 to bypass scanning the left display.
  • scanarea.min.y Like scanarea.min.x, but skips the upper section of display
  • scanarea.max.x defines the rightmost edge of the area to scan
  • scanarea.max.y defines the bottom edge of the area to scan
  • enabledebugmenu enables debug tool menu to help track down problems. This also causes DPL to write debug log files during scanning and recipe generation. This can slow down scanning and recipe searching.
  • debugscreenshot automatically saves out a screenshot when searching for the pigment lab to help in debugging
  • logging.verbosity sets the verbosity of the logging between 0 and 3. The higher the value, the more detail is included in the log file.

For Developers

This application is written in C#, and it uses the Avalonia UI Framework. You can learn more about getting set up to use Avalonia here.

Older Versions

The old Desert Paint Lab repository is still publicly available, in case anyone wishes to reference the old code, or tinker with it. However, it will no longer be maintained in any way by Afrah.