1. 安装Compton
在CentOS上,首先需要安装Compton。可以通过EPEL仓库安装(若未启用需先执行sudo yum install epel-release),命令如下:
sudo yum install compton -y # CentOS 7及以下
# 或
sudo dnf install compton -y # CentOS 8及以上
安装完成后,Compton即可用于图形合成。
2. 配置Compton以加速渲染
Compton的配置文件通常位于~/.config/compton.conf(用户级)或/etc/compton.conf(系统级)。若文件不存在,可手动创建。以下是关键性能优化参数:
启用GPU加速(核心优化)
设置backend为glx(OpenGL加速),而非默认的xrender(CPU密集型)。添加以下配置:
backend = "glx";
glx-no-stencil = true; # 禁用模板缓冲区,减少GPU负载
glx-copy-from-front = true; # 从前景复制图像,避免不必要渲染
glx-fbo = true; # 启用帧缓冲对象,提升合成效率
glx-hardware = true; # 强制使用硬件加速
vsync = "opengl-swc"; # 使用OpenGL交换控制,减少屏幕撕裂
注:若使用NVIDIA显卡,需确保驱动已正确安装(如
akmod-nvidia),并启用OpenGL支持。
禁用不必要的视觉效果
关闭阴影、透明度等耗资源的特效,或通过shadow-exclude排除特定窗口(如通知栏、桌面图标):
shadow = false; # 完全禁用阴影(显著提升性能)
inactive-opacity = 1.0; # 非活动窗口不透明(避免透明度计算)
opacity = false; # 禁用全局透明度
shadow-exclude = [
"name = 'Notification'",
"class_g = 'Conky'",
"class_g = 'Notify-osd'"
]; # 排除通知、Conky等窗口的阴影
优化窗口合成规则
使用unredir-if-possible自动跳过静态窗口(如桌面、文档)的合成,减少GPU负担:
unredir-if-possible = true; # 自动跳过不需要合成的窗口
unredir-if-possible-exclude = [ "class_g = 'Firefox'" ]; # 排除需要透明的应用(如Firefox)
调整帧率与同步
限制帧率(如60FPS)以避免过度渲染,根据显示器刷新率设置:
fps = 60; # 限制帧率为60,匹配多数显示器
xrender-sync-fence = true; # 启用X11同步栅栏,减少撕裂
3. 启动与自启Compton
手动启动:保存配置文件后,通过以下命令启动Compton:
compton -b -c ~/.config/compton.conf # -b表示后台运行,-c指定配置文件
设置开机自启:创建systemd服务文件/etc/systemd/system/compton.service,内容如下:
[Unit]
Description=Compton Compositor
After=graphical.target
[Service]
ExecStart=/usr/bin/compton -b -c /home/your-username/.config/compton.conf
Restart=always
User=your-username
[Install]
WantedBy=multi-user.target
替换your-username为实际用户名,然后启用并启动服务:
sudo systemctl enable compton.service
sudo systemctl start compton.service
4. 验证与调试
检查运行状态:
systemctl status compton.service # 查看服务状态
journalctl -u compton.service -f # 实时查看日志(排查错误)
测试性能:
打开多个窗口、播放视频或运行图形密集型应用(如游戏),观察帧率(可通过glxgears工具测试)和CPU/GPU使用率(top或nvidia-smi)。若出现屏幕撕裂,可尝试调整vsync参数(如改为"opengl"或"drm");若CPU使用率过高,可启用paint-on-overlay = true(部分驱动支持)。
注意事项
shadow-exclude或opacity-rule以避免显示异常;wm参数(如wm = "gnome")或禁用桌面环境的自带合成器。