在 Linux 下使用 compton(或 picom) 出现卡顿,通常不是单一原因,而是和 显卡驱动、合成器配置、桌面环境、硬件加速 等密切相关。下面按常见原因逐一说明,并给出排查/解决思路。
这是 90% 卡顿的根源。
modesetting 或 i915amdgpu,别用 radeon检查:
glxinfo | grep "OpenGL renderer"
如果不是你的真实显卡,而是 llvmpipe(软件渲染),一定会卡。
✅ 解决:
accel 开启compton 有多个 backend:
xrender:老、慢、CPU 占用高glx:推荐egl:部分显卡更好错误示例(卡):
backend = "xrender";
✅ 推荐:
backend = "glx";
或
backend = "egl";
vsync 设置不对,会导致:
常见配置:
vsync = true;
但某些显卡要:
vsync = "opengl";
或
vsync = "none"; # 配合显示器高刷新率
以下配置非常吃性能:
shadow = true;
shadow-radius = 30;
blur-background = true;
blur-strength = 10;
✅ 建议:
blur-background如果你在:
再跑 compton,会 双合成 → 卡死
✅ 解决:
tiling WM + compton 很常见,但要注意:
compton --daemon 多次启动ps aux | grep compton
NVIDIA 下:
glx backend 常有延迟unredir-if-possible = true;
并启用:
nvidia-settings
→ OpenGL → Allow Flipping = ON
✅ 临时方案:
compton 已经停止开发,问题不会再修。
✅ 强烈建议迁移到:
picom
picom --backend glx --vsync
# 1. 看驱动
glxinfo | grep OpenGL
# 2. 看 CPU 占用
htop
# 3. 看是否多实例
ps aux | grep picom
# 4. 最小配置测试
picom --backend glx --no-fading-openclose
backend = "glx";
vsync = true;
shadow = false;
blur-background = false;
unredir-if-possible = true;
如果你愿意,可以告诉我:
我可以直接帮你写一份 不卡的最优配置。