温馨提示×

linux compton为何闪屏

小樊
42
2026-08-31 20:36:02
栏目: 智能运维

在 Linux 下使用 Compton(或更常见的分支 Picom) 时出现闪屏(flickering),通常不是单一原因,而是和显卡驱动、合成方式、窗口管理器、配置参数有关。下面按常见原因 → 对应解决办法给你梳理。


一、最常见原因 & 解决

1️⃣ 没开启「透明合成」对应的后端(backend)

Compton 默认可能用了 xrender,在部分驱动下会闪。

✅ 解决:改用 glxegl

backend = "glx";
# 或
backend = "egl";

然后重启 compton:

killall compton
compton &

2️⃣ 垂直同步(VSync)问题

闪屏很多是 撕裂 + 重绘不同步 导致的。

✅ 推荐配置:

vsync = true;

如果你用的是 glx

glx-swap-method = "exchange";

⚠️ 注意:

  • NVIDIA 用户有时 vsync=true 反而更闪
  • 可尝试 vsync = false + 驱动层开启

3️⃣ NVIDIA 私有驱动特有闪屏

NVIDIA + Compton 是经典闪屏组合

✅ 解决方式之一:

backend = "glx";
vsync = true;
unredir-if-possible = true;

或者:

nvidia-settings
→ OpenGL → Allow Flipping = ON

4️⃣ 全屏窗口(游戏 / 视频)闪屏

Compton 在全屏时还在合成,会冲突。

✅ 解决:

unredir-if-possible = true;

或游戏启动器里加:

compton --unredir-if-possible

二、窗口管理器相关

5️⃣ 用了“非主流”或老旧 WM

如:

  • openbox
  • fluxbox
  • i3(部分情况)

✅ 建议:

  • 确保 WM 支持 EWMH
  • 不要在 WM 里再开合成(如 KWin / Mutter)

6️⃣ 双显卡 / PRIME 切换

双显卡(Intel + NVIDIA)容易闪。

✅ 检查:

xrandr --listproviders

✅ 解决:

  • 锁定使用一个 GPU
  • 或用 picom 替代 compton(维护更好)

三、配置层面的坑

7️⃣ shadow / fade 配置不合理

过于复杂的阴影和动画会闪。

✅ 最小化测试配置:

backend = "glx";
vsync = true;
shadow = false;
fade = false;

8️⃣ Compton 太老

原版 compton 已停止维护

✅ 强烈建议换:

picom

配置文件基本兼容:

picom --config ~/.config/picom.conf

四、快速排查流程(推荐)

  1. picom
  2. 用最小配置
  3. backend = glx
  4. vsync
  5. 全屏程序开 unredir-if-possible

五、如果你愿意,我可以更精确帮你

你可以贴出来:

  • 显卡型号(NVIDIA / AMD / Intel)
  • 驱动(开源 / 闭源)
  • 窗口管理器(i3 / openbox / dwm)
  • 当前 compton 配置

我可以直接给你一份不闪屏的配置

0