UI for multiple custom environments (for different category of images) and easier backup of the config
Currently, darktable save one config in one directory, which is separate from the base directory of the images, and hidden. It makes backing up the config at the same time as the images not very convenient (backup solutions don't always have the option to backup hidden directories or follow softlinks) and it only allows to define one environment (config, presets, scripts, tag vocabulary, etc.) for all your images.
Using darktable command line options, shell scripts, and tweaking part of the configs by hand, you can create different environements with their own images, config, presets, scripts, export folder and settings, etc. but it is not really user friendly. I have looked at how it could be implemented in a more "user-friendly" way and I think the following would make custom environments and config backup easy to use without disrupting too much of the current code:
What I propose is:
- the darktable config is in a subfolder of the base directory instead of .config, AppData and such;
- the current config directory contains only a minimal config file with a list of base directory(ies);
- if the base directory list has only one entry, darktable open directly using the config in this base directory;
- if the base directory list have multiple entries, darktable open a dialog box to choose the base directory before loading its config (possibly with an option to always load the previous base directory);
- Base directory can be added to the list in the session preference UI with an "Add..." button beside the current base directory field, which open a folder_select dialog box;
- A new session with a different base directory can be initiated by selecting a different base directory in a combo box in the session UI (combo box that would replace the current base directory field). Either darktable load a new config while staying open, or initiate a restart after writing the selected base directory as the default/previous base directory in the directory list.
This way, darktable would behave as usual for someone who only use one base directory and one environment, but would provide the possibility to have separate environments (images, config, presets, scripts, tag vocabulary, etc.) for the different types of images you have, like client jobs, travel images, family pictures, etc.
This approach would benefit both "regular" users and "advanced" users:
- "regular" users would be able to easily back-up the config at the same time as the images, so the entire environment can be restored in one go.
- "advanced" users would be able to have dedicated set of presets, tags, scripts for different category of images, which would make it easier to find the preset, or tag you're looking for, and you don't have to reselect presets for each modules (import, export, basic development, etc.) when you come back to clients or travel images after a session on family pictures.
Another option would be to include in darktable package a shell or python script who start darktable with different command line options based on the selection in a basic UI (dialog box), but I think it would be easier to manage if it's part of the C/C++ code because you won't need to maintain different scripts for each OS (if using a shell script) or install python dependencies on OSes who don't install python by default.