Why "Automatically adapt to environment" (ambient light sensor auto-brightness) doesn't appear on X11 in KDE Plasma 6.6+
Plasma 6.6 shipped automatic screen brightness adjustment driven by an ambient light sensor (ALS). The feature requires iio-sensor-proxy to be installed (it's an optional dependency of qt6-sensors and not pulled in automatically on Arch). Once installed and the Plasma session restarted, a checkbox labelled "Automatically adapt to environment" is supposed to appear in the display brightness controls.
If you're on X11, it won't appear — even if iio-sensor-proxy is installed, the service is running, and monitor-sensor confirms the sensor is working correctly. This is not a configuration problem. The feature was never implemented for X11.
The feature was implemented entirely within KDE's custom Wayland output management protocol stack. The implementing KWin commit (0570b33, tracked in Bug 502122) touches the following files:
src/backends/drm/drm_output.cpp ← DRM backend (Wayland only)
src/wayland/outputdevice_v2.cpp ← Wayland protocol server
src/wayland/outputmanagement_v2.cpp ← Wayland protocol server
src/utils/lightsensor.cpp ← new: sensor abstraction
src/utils/lightsensor.h
src/core/backendoutput.cpp ← brightness curve logic
There are no corresponding src/backends/x11/ changes. The feature was wired into the DRM backend (which runs under Wayland) and exposed via two KDE-specific Wayland protocol extensions:
kde-output-device-v2— advertises what capabilities a display has.auto_brightnesswas added as a capability entry (protocol spec). kscreen reads this to decide whether to show the checkbox.kde-output-management-v2— allows a client (kscreen) to toggle that capability on a given output (protocol spec).
X11 has no equivalent output management protocol. On X11, kscreen has no way to query whether auto-brightness is available, and KWin has no path to apply the curve to the backlight.
The feature is not inherently impossible on X11. The brightness curve solver (AutoBrightnessCurve) and sensor abstraction (lightsensor.cpp) already exist in src/utils/ and are backend-agnostic. What's missing is the wiring:
- A call site in KWin's X11 backend — connecting
lightsensor.cpp→AutoBrightnessCurve→ backlight write via sysfs or XRandR/PowerDevil. - A capability discovery mechanism for kscreen — on Wayland this is the
auto_brightnessflag inkde-output-device-v2. On X11 a D-Bus interface on KWin would be the natural equivalent, since that's already how kscreen and KWin communicate for other things on X11. - Coordination with PowerDevil — on X11, backlight writes typically go through PowerDevil. The two would need to not fight each other.
The absence of this feature on X11 is an implementation gap, not an architectural limitation. A bug report or MR to KDE would be the right path.
To confirm this is your situation:
echo $XDG_SESSION_TYPE # prints "x11" → feature unavailable
kscreen-doctor -o # will not report auto_brightness as a supported capability
monitor-sensor # if this shows illuminance readings, your sensor is fine