在 CentOS 上使用 Compton 提升桌面流畅度
一 适用场景与前提
- 适用于 CentOS 7/8/Stream 的 X11 会话(GNOME Shell 默认使用 Mutter,通常无需额外合成器;在 Openbox/i3/Sway 等环境下收益更明显)。
- 目标是减少撕裂、降低卡顿、提升动画与拖动窗口的顺滑度,主要通过启用合适的渲染后端、减少重绘与特效开销实现。
二 安装与快速启用
- 安装 Compton(EPEL 通常已提供该包;若未安装 EPEL,先启用 EPEL 仓库):
- CentOS 7/8/Stream:sudo yum install -y epel-release && sudo yum install -y compton
- 生成默认配置(若不存在):mkdir -p ~/.config && cp /etc/compton.conf ~/.config/compton.conf 2>/dev/null || nano ~/.config/compton.conf
- 前台试运行观察效果(便于排错):compton --config ~/.config/compton.conf --backend glx --vsync true --shadow false --fade-in-step 0.01 --fade-out-step 0.01
- 无报错后改为后台常驻:killall compton 2>/dev/null; compton --config ~/.config/compton.conf &
- 验证是否生效:glxinfo | grep “OpenGL renderer”(确认 GPU 与驱动正常),并观察拖动窗口是否更顺滑、无撕裂。
三 关键配置与加速要点
- 渲染后端:优先使用 backend = glx(或环境支持时用 wayland),避免 xrender;同时确保显卡驱动正确安装并启用,以获得 GPU 加速与更低 CPU 占用。
- 垂直同步:将 vsync 设为 true/false 依据显示器与显卡表现选择;开启可减少撕裂,但在部分驱动/应用下可能引入输入延迟,需按实际取舍。
- 减少重绘与特效:
- 关闭阴影:shadow = false
- 关闭透明度/淡入淡出:opacity = false、fade = false
- 如启用模糊(blur),仅在确有需要时使用,并优先选择轻量算法与较小半径
- 帧率与刷新率:设置 frame-rate = 60(或匹配显示器刷新率),避免不必要的高帧率导致功耗上升
- 窗口管理优化:
- 对全屏/游戏启用 unredirect = true,减少合成开销
- 使用 shadow-exclude 与 opacity-rule 精确排除不需要阴影/透明的窗口,降低无效合成
- 资源限制(可选):当个别应用触发异常重绘时,可用 cpulimit 限制 Compton 的 CPU 占用,例如:cpulimit -l 50 -p $(pidof compton)(将 CPU 占用限制在约 50%)。
四 自启动与验证
- 会话级自启动(推荐):在桌面会话的“启动应用程序”或窗口管理器配置中,加入命令:compton --config ~/.config/compton.conf
- 系统级服务(可选,适用于无显示管理器或需统一控制的场景):创建 /etc/systemd/system/compton.service
- 示例:
- [Unit] Description=Compton Compositor; After=display-manager.service
- [Service] ExecStart=/usr/bin/compton -c /etc/compton.conf; Restart=always; User=nobody
- [Install] WantedBy=multi-user.target
- 启用:sudo systemctl enable --now compton.service
- 日志与调试:启动时重定向日志便于定位问题,例如:compton -c ~/.config/compton.conf 2> /var/log/compton.log;如需前台运行加 -f,查看实时输出。
五 常见问题与替代方案
- 与桌面环境冲突:在 GNOME/KDE 等自带合成的桌面中,建议保持默认合成器;若启用 Compton 出现闪屏/撕裂,优先检查 vsync 与 backend,必要时关闭 Compton 或仅在特定会话使用。
- 性能仍不理想:尝试第三方优化配置、精简特效,或在特定硬件/环境下改用 xcompmgr、i3-compiz、Sway 等其他合成器进行对比测试。