之前一直用的桌面是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 任务栏优雅的农历日期,一边感受着屏幕随光线柔和变化的舒适感。