之前一直用的桌面是gnome,也用的挺习惯,gnome很简洁,通过插件系统可以实现很多功能。前几天博客群里有聊到KDE桌面的问题,我安装后,体验了一下,也非常不错,特别是日历系统,相当的惊艳。 原生支持农历,还有中国的节假日,也是非常准确的。目前最新版的linux系统,不知道怎么回事,我的屏幕自动亮度失效了,在早些时候的版本里是可以的。在gnome下,有个插件可以解决这个问题,但是kde下没有类似的插件。我问了一下AI,它给我给出了一个方案,我使用了以后,发现非常完美的解决了我的问题。


核心痛点

  • 硬件环境:Fedora 43 / KDE Plasma 6 (Wayland)
  • 问题:系统内核可以识别环境光传感器(ALS),但 KDE 系统设置中没有自动亮度选项。
  • 诉求:保留 KDE 完美的日历体验,同时实现亮度的平滑、自动调节。

第一步:确认硬件传感器是否工作

在折腾软件前,首先要确认 Linux 内核是否能读取到传感器数值。安装 iio-sensor-proxy 并运行测试:

1
2
sudo dnf install iio-sensor-proxy
monitor-sensor

如果看到 Light changed: XX.XXXXXX (lux) 的输出,说明硬件层已经打通,剩下的只是逻辑控制问题。


第二步:安装底层控制工具

为了绕过不稳定的 D-Bus 接口,我们选择直接与系统底层驱动对话的工具:brightnessctl。它在 Fedora 下非常稳定,且支持 Wayland。

1
sudo dnf install brightnessctl

第三步:编写“平滑过渡”自动亮度脚本

这个脚本会潜伏在后台,实时监控 monitor-sensor 的输出,并根据你设定的光照阶梯,平滑地(以 1% 为步长) 调节屏幕亮度。

脚本路径: ~/bin/auto_brightness.sh

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/bin/bash

# 1. 初始化当前亮度
current_brightness=$(brightnessctl -d intel_backlight -m | cut -d, -f4 | tr -d '%')

# 2. 持续监控传感器输出
monitor-sensor | while read -r line; do
    if [[ "$line" == *"Light changed:"* ]]; then
        # 提取 Lux 数值并转为整数
        lux_float=$(echo "$line" | awk '{print $3}')
        lux=$(printf "%.0f" "$lux_float" 2>/dev/null)
        [ -z "$lux" ] && continue

        # 3. 设定你的个性化亮度阶梯 (Lux vs 亮度百分比)
        if [ "$lux" -gt 200 ]; then target=100
        elif [ "$lux" -gt 100 ]; then target=85
        elif [ "$lux" -gt 50 ]; then target=70
        elif [ "$lux" -gt 25 ]; then target=55
        elif [ "$lux" -gt 12 ]; then target=35  # 针对室内办公优化
        elif [ "$lux" -gt 5 ]; then target=20
        else target=10; fi

        # 4. 平滑过渡逻辑:让亮度“滑”到目标值
        if [ "$target" -ne "$current_brightness" ]; then
            step=$(( target > current_brightness ? 1 : -1 ))

            while [ "$current_brightness" -ne "$target" ]; do
                current_brightness=$((current_brightness + step))
                brightnessctl -d intel_backlight set ${current_brightness}% > /dev/null 2>&1
                sleep 0.02 # 调节此数值改变过渡速度
            done
        fi
    fi
done

第四步:实现开机静默自启

为了让它像原生功能一样工作,我们需要在 KDE “系统设置” -> “启动和关闭” -> “自动启动” 中添加该脚本。

为了保证后台运行且不弹窗、不留日志,启动命令建议设置为:

1
/home/你的用户名/bin/auto_brightness.sh > /dev/null 2>&1

结语

通过这段脚本,我不仅找回了遗失的“自动亮度”,还获得了比 GNOME 插件更高的自由度:我可以精确控制在多少 Lux 下显示多少亮度,甚至可以控制亮度变化的速度。

这就是 Linux 的魅力:如果你不喜欢现有的规则,你可以自己写一个。 现在的我,可以一边看着 KDE 任务栏优雅的农历日期,一边感受着屏幕随光线柔和变化的舒适感。