Ubuntu 台式机亮度控制方案:xrandr + F1/F2 快捷键
替代 Brightness Controller,解决首次黑屏问题,实现丝滑无延迟的亮度调节。
问题背景
在 Ubuntu 上使用Brightness Controller时,首次调整亮度会黑屏 2-3 秒。根本原因是它底层调用xrandr修改 gamma 曲线,首次初始化时需要加载显卡 gamma 表。
本文方案通过开机预初始化解决手动黑屏,同时保留xrandr的丝滑响应。
环境信息
| 项目 | 说明 |
|---|---|
| 系统 | Ubuntu 22.04 LTS |
| 桌面环境 | GNOME |
| 显卡 | NVIDIA RTX 4070/4080 |
| 显示器 | 小米 Mi 245 HF1 × 2 |
| 连接方式 | DP-2, DP-4 |
安装依赖
sudoaptinstallbc创建亮度调节脚本
mkdir-p~/.local/bin# 亮度减(F1)cat>~/.local/bin/brightness-down<<'EOF' #!/bin/bash CURRENT=$(xrandr --verbose | grep -A5 'DP-2 connected' | grep 'Brightness' | awk '{print $2}') NEW=$(echo "$CURRENT - 0.05" | bc) [ $(echo "$NEW < 0.1" | bc) -eq 1 ] && NEW=0.1 xrandr --output DP-2 --brightness $NEW xrandr --output DP-4 --brightness $NEW EOF# 亮度增(F2)cat>~/.local/bin/brightness-up<<'EOF' #!/bin/bash CURRENT=$(xrandr --verbose | grep -A5 'DP-2 connected' | grep 'Brightness' | awk '{print $2}') NEW=$(echo "$CURRENT + 0.05" | bc) [ $(echo "$NEW > 1.0" | bc) -eq 1 ] && NEW=1.0 xrandr --output DP-2 --brightness $NEW xrandr --output DP-4 --brightness $NEW EOFchmod+x ~/.local/bin/brightness-down ~/.local/bin/brightness-up注意:将
DP-2和DP-4替换为你实际的显示器名称(通过xrandr | grep ' connected'查看)。
解决首次黑屏:开机预初始化
创建开机启动项,登录时预先加载 gamma 表:
mkdir-p~/.config/autostartcat>~/.config/autostart/init-brightness.desktop<<'EOF' [Desktop Entry] Type=Application Name=Init Brightness Exec=bash -c "sleep 3 && xrandr --output DP-2 --brightness 1.0 && xrandr --output DP-4 --brightness 1.0" Hidden=false NoDisplay=false X-GNOME-Autostart-enabled=true EOFsleep 3确保 GNOME Shell 完全加载后再执行。
立即生效(无需重启)
xrandr--outputDP-2--brightness1.0xrandr--outputDP-4--brightness1.0绑定 F1/F2 快捷键
GNOME 桌面
# 释放 F1(Help 默认占用)gsettingssetorg.gnome.settings-daemon.plugins.media-keyshelp"['<Super>h']"# 创建自定义快捷键gsettingssetorg.gnome.settings-daemon.plugins.media-keys custom-keybindings"['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/']"# F1 减亮度gsettingssetorg.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ name'Brightness Down'gsettingssetorg.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/command'/home/yiren/.local/bin/brightness-down'gsettingssetorg.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/ binding'F1'# F2 增亮度gsettingssetorg.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/ name'Brightness Up'gsettingssetorg.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/command'/home/yiren/.local/bin/brightness-up'gsettingssetorg.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/ binding'F2'注意:将
/home/yiren替换为你的实际用户名。
其他桌面环境
| 桌面 | 路径 |
|---|---|
| KDE Plasma | 系统设置 → 快捷键 → 自定义快捷键 |
| XFCE | 设置 → 键盘 → 应用程序快捷键 |
命令填写绝对路径:
/home/yiren/.local/bin/brightness-down/home/yiren/.local/bin/brightness-up
验证
# 测试响应速度time~/.local/bin/brightness-downtime~/.local/bin/brightness-up# 预期:real 0m0.0xxs(瞬间完成)原理说明
| 工具 | 原理 | 响应速度 | 黑屏问题 |
|---|---|---|---|
| Brightness Controller | xrandrgamma 调整 | 丝滑 | 首次初始化黑屏 |
| 本文方案 | xrandrgamma 调整 + 预初始化 | 丝滑 | 无 |
预初始化在登录时预先加载 gamma 表,后续 F1/F2 调整只需修改数值,无需重新初始化。
常见问题
Q: 最低亮度发灰?
xrandr是软件 gamma 调整,最低亮度时对比度会变差。这是固有缺陷,如需硬件级控制需改用 DDC/CI 方案(但有延迟)。
Q: 如何查看显示器名称?
xrandr|grep' connected'Q: 快捷键不生效?
- 确认使用绝对路径(不能用
~) - 检查 F1/F2 是否被系统占用
- GNOME 重启 Shell:
Alt+F2→ 输入r→ 回车