Ubuntu 下使用 Compton 修复画面撕裂的实用步骤
一、先完成基础检查
- 确认显示器刷新率设置正确:用 xrandr 查看并校正,例如将 144Hz 显示器设为 144Hz(如:xrandr --output HDMI-1 --rate 144)。多屏不同刷新率时,后续在 Compton 中按输出分别指定刷新率可减少卡顿与撕裂。
- 检查并安装合适的显卡驱动(如 NVIDIA 专有驱动、AMDGPU、Intel iGPU 驱动),驱动异常会直接影响合成与 V-Sync 效果。
- 确保 Compton 已安装:sudo apt-get install compton。
以上步骤能排除“设置/驱动不正确”导致的撕裂根因。
二、核心配置项与推荐值
- 启用合适的同步方式(关键):
- OpenGL 路径:vsync = “opengl-swc” 或 vsync = “opengl”(多数 NVIDIA/Intel 组合更偏好前者;若仍撕裂,逐一测试两者)。
- 若驱动/环境不支持 OpenGL 同步,可退回布尔值 vsync = true,或临时测试 vsync = false 观察变化。
- 选择 GPU 加速后端:backend = “glx”(性能与兼容性通常优于 xrender)。
- 减少不必要重绘:use-damage = true、glx-damage = true。
- 多显示器按输出设置刷新率(示例):
refresh-rate = [ “eDP-1: 60”, “HDMI-1: 144”, “DP-1: 60” ](名称与刷新率需与 xrandr 一致)。
- 可选:限制帧率上限(fps-limit),如 0 为不限制,或设为与显示器一致的 120/144/165,有助于稳定观感。
示例片段(仅展示关键项):
backend = “glx”
vsync = “opengl-swc”
use-damage = true; glx-damage = true
refresh-rate = [ “eDP-1: 60”, “HDMI-1: 144” ]
fps-limit = 144
三、全屏游戏与视频的撕裂优化
- 对全屏应用绕过合成,降低输入延迟并减少撕裂概率:
- unredir-if-possible = true
- 如有叠加/录屏工具,加入 unredir-if-possible-exclude 排除(如 “class_g = ‘slop’”)。
- 若仍遇到全屏撕裂,可尝试关闭全屏合成:no-ewmh-fullscreen = true(部分环境有效)。
- 游戏/视频场景可临时关闭阴影与透明:shadow = false、opacity = 1.0,以提升稳定性。
示例片段:
unredir-if-possible = true
unredir-if-possible-exclude = [ “class_g = ‘slop’” ]
no-ewmh-fullscreen = true
四、应用配置与排错
- 使配置生效:
- 重启 Compton:killall compton && compton -b --config ~/.config/compton.conf
- 或采用用户级 systemd 服务(推荐,避免登录会话不同步):
- 创建:~/.config/systemd/user/compton.service(ExecStart=/usr/bin/compton -c %h/.config/compton.conf)
- 启用:systemctl --user daemon-reload && systemctl --user enable --now compton.service
- 配置文件语法与弃用项检查:
- 路径:~/.config/compton.conf 或 /etc/xdg/compton.conf
- 旧选项需替换,例如:no-dock-shadow → shadow = { dock = true; };glx-swap-method 建议移除或替换为 glx-no-stencil。
- 查看日志定位问题:cat ~/.cache/compton/compton.log(排障时临时开启 log-level = “debug”; log-file = “/tmp/compton.log”;)。
- 仍异常时:更新系统与 Compton、回滚到默认配置、切换 vsync/backend 取值做 A/B 测试。