Plasma 6.6 ships adaptive display brightness using a 6-point ambient-light-to-brightness curve with hysteresis, time delays, and asymmetric animation speed.
Key Takeaways
Hardware scarcity blocked the feature for years; the Framework Laptop 13’s built-in ambient light sensor finally gave a developer the test platform needed.
Linear scaling failed: display luminance curves are non-linear, firmware tuning varies, and user preferences differ – a learned curve was required.
KWin stores 6 control points (one per 20% brightness step), interpolates linearly between them, and updates the curve when the user manually adjusts brightness.
Stability required enforcing strict monotonicity, a minimum 1-lux or 10% gap between control points, and allowing sub-zero lux values internally.
Flickering on trains or near light sources is suppressed by a ±10% hysteresis band, a 2-second delay before applying changes, and slower dimming animations.
Hacker News Comment Review
ChromeOS solves the same problem with a shipped online learning model that trains the ambient-light-to-brightness transfer function per user, a more sophisticated approach than Plasma’s explicit curve.