在 CentOS 下使用 compton(或现在更常见的 fork:picom)做窗口合成器时,优化目标通常是:更流畅、更低延迟、更低 CPU/GPU 占用、避免闪屏/撕裂。下面从安装、配置、参数、常见坑几个方面说明。
先确认你用的是哪种:
lspci | grep -i vga
compton + nouveau 组合(问题多)yum install epel-release
yum install compton
dnf install compton
# 或
dnf install picom
建议优先用 picom(compton 已停更)
~/.config/compton.conf
backend = "glx";
glx-no-stencil = true;
glx-no-rebind-pixmap = true;
shadow = false;
fade = false;
menu-opacity = 1.0;
inactive-opacity = 1.0;
vsync = "opengl-swc";
unredir-if-possible = true;
✅ 说明:
shadow=false:大幅降低 CPUfade=false:减少延迟unredir-if-possible:全屏视频/游戏时直出,不合成vsync = "opengl-swc";
vsync = "none";
并在 nvidia-settings 中开启:
paint-on-overlay = true;
sw-opti = true;
use-damage = true;
这些能显著减少重绘区域。
opacity-rule = [
"100:class_g = '.*'"
];
refresh-rate = 60;
❌ 不推荐:
backend = "xrender";
✅ 用 glx 或 egl
exec --no-startup-id compton --config ~/.config/compton.conf
设置 → 会话和启动 → 自启程序 → 添加:
compton --config ~/.config/compton.conf
compton --config ~/.config/compton.conf -b --log-level trace
| 问题 | 解决 |
|---|---|
| 闪屏 | 关 shadow / 换 backend |
| 视频卡 | 开 unredir-if-possible |
| 登录黑屏 | 先 --no-startup-id 测试 |
| 高 CPU | 关 fade/shadow |
backend = "glx";
vsync = "opengl-swc";
shadow = false;
fade = false;
unredir-if-possible = true;
use-damage = true;
glx-no-stencil = true;
paint-on-overlay = true;
sw-opti = true;
如果你愿意,可以告诉我:
我可以给你一份完全针对性的 compton 配置。