Module groups organize IOP modules into logical categories (Technical, Grading, Effects, etc.) in the darkroom view. This helps users find tools relevant to their current task.
Darktable uses a tabs-based interface in the right panel. Each tab corresponds to a Module Group.
- Favorites: User-selected modules.
- Technical: Basic corrections (demosaic, lens, crop).
- Grading: Color and tone grading.
- Effects: Artistic effects.
- Quick Access Panel: (Special case, detailed in Quick_Access_Panel.md).
The referencing of modules into groups is handled by src/libs/modulegroups.c.
Each IOP module declares its default group(s) via the default_group() callback function in its source file.
// in src/iop/mymodule.c
int default_group()
{
return IOP_GROUP_TONES | IOP_GROUP_COLOR;
}Predefined groups (in iop_api.h):
IOP_GROUP_TECHNICALIOP_GROUP_GRADINGIOP_GROUP_EFFECTSIOP_GROUP_NO_GROUP(hidden by default)
Users can override these defaults by creating Module Group Presets.
These are stored as presets for the modulegroups module.
The internal logic (modulegroups.c) checks the active preset to decide which modules appear in which tab.
When creating a new module:
- Implement
default_group()in your.cfile. - Choose the most appropriate category. Don't add to too many groups to avoid clutter.
- The module will automatically appear in that tab when the "default" module group preset is active.