Brightness
Brightness control uses the kernel backlight interface by default. ddcutil support is opt-in for external monitors that expose DDC/CI brightness.
[brightness]enable_ddcutil = falseignore_mmids = [] # e.g. ["ACI-ROG_PG279Q-10220"] - skip in all ddcutil commandsminimum_brightness = 0.0 # never let brightness drop below this floor (0.0 to 1.0)sync_all_monitors = false # if set to true, makes every display have the same brightness
[brightness.monitor.eDP-1]backend = "backlight" # auto | none | backlight | ddcutilbacklight_device = "intel_backlight" # explicit sysfs device name or path
[brightness.monitor.DP-1]backend = "ddcutil"scheduled_day_brightness = 0.8 # override [brightness].scheduled_day_brightness for this monitorscheduled_night_brightness = 0.25 # override [brightness].scheduled_night_brightness for this monitorNotes:
enable_ddcutil = trueonly enables DDC/CI discovery - it does not force every monitor toddcutil.ignore_mmidspasses--ignore-mmidto everyddcutilinvocation. Runddcutil --verbose detectto find monitor model id strings.minimum_brightnessis an opt-in floor (default0.0= disabled). Any brightness change is clamped to at least this value, and the control center slider cannot go below it - useful to keep the screen from going completely dark.sync_all_monitorsonly syncs the brightnesses when one of the display brightnesses change, it does not actively sync them every now and then- Per-monitor overrides use the same connector/description matching rules as bar monitor overrides.
backend = "auto"prefers kernel backlight when available and falls back toddcutil.backend = "none"hides brightness control for the matched monitor.backlight_devicepins a monitor to a specific sysfs backlight device when a connector exposes more than one - accepts a bare name (intel_backlight) or a full path; runnoctalia msg brightness-list-backlight-devicesto list the available device names.scheduled_day_brightnessandscheduled_night_brightnessoverride the global scheduled brightness targets for the matched monitor only (see Night Light); omit them to inherit the global values, they are ignored whilesync_all_monitors = true. They are also editable per monitor in Location → Monitors with the advanced toggle enabled.ddcutilis treated as best-effort - repeated DDC failures cool down that monitor to avoid hammering the bus.
DDC/CI discovery runs in the background. If a monitor is not ready when Noctalia starts or outputs change, Noctalia retries discovery up to three times, waiting one, two, and four seconds after each completed attempt. Working brightness controls remain available while other monitors are being discovered. Command timeouts can extend the total recovery time.
If controls are still missing after those retries, open Control Center → Monitor and use Rescan DDC/CI monitors (the refresh icon) to start another discovery attempt and retry cycle. Changing brightness configuration also starts a new cycle. Outputs configured with backend = "none" or backend = "backlight", and outputs already served by kernel backlight in auto mode, are excluded from DDC recovery.
Related IPC
Section titled “Related IPC”For brightness commands, targets, accepted value formats, and OSD behavior, see System Controls → Brightness.