温馨提示×

怎样优化Compton配置

小樊
54
2026-08-06 04:42:26
栏目: 编程语言

优化 Compton(或它的继任者 picom)配置,核心在于平衡视觉效果与性能。Compton 是一个 X11 下的复合管理器,主要用于实现窗口透明、阴影、淡入淡出和撕裂消除。

以下是分步骤的优化指南,从基础到进阶,并附带一份针对**现代桌面(高性能)老旧硬件(低性能)**的推荐配置。


1. 确认你使用的是 Picom

由于 Compton 已停止维护,大多数发行版现在使用的是它的分支 picom

  • 检查版本:picom --version
  • 如果你还在用旧的 compton,建议切换到 picom 以获得更好的性能和修复。

2. 配置文件位置

默认配置文件通常位于:

  • ~/.config/picom/picom.conf (推荐)
  • 或者 /etc/xdg/picom.conf (全局配置)

如果 ~/.config/picom/ 目录不存在,请手动创建并将示例配置复制过来:

mkdir -p ~/.config/picom
cp /etc/xdg/picom.conf ~/.config/picom/picom.conf

3. 核心性能优化参数

编辑 picom.conf,重点关注以下几个部分:

A. 后端选择 (Backend)

这是影响性能最大的因素。

  • backend = "glx";性能最好。利用 GPU 进行渲染,适合绝大多数现代显卡(NVIDIA/AMD/Intel)。
  • backend = "xrender";兼容性最好,但性能较差。纯 CPU 渲染,适合非常老的显卡或遇到 GLX 崩溃时。
  • 建议: 优先使用 glx

B. 垂直同步 (VSync)

防止屏幕撕裂(Tearing)。

  • vsync = true;
  • 如果开启后感觉鼠标卡顿或延迟,可以尝试不同的 vsync 方法(针对 NVIDIA 用户尤其重要):
    • NVIDIA 专有驱动用户:尝试 vsync_method = "none"; 并在 NVIDIA 设置中开启“Force Full Composition Pipeline”。
    • 或者尝试 vsync_method = "opengl-swc";

C. 阴影 (Shadows)

阴影很耗性能,尤其是模糊(Blur)开启时。

  • 如果不需要阴影,直接关闭:shadow = false;
  • 如果需要阴影,优化模糊算法:
    # 关闭模糊以大幅提升性能
    blur: {
      method = "none";
    }
    

D. 淡入淡出 (Fading)

窗口打开关闭时的动画。

  • 如果追求极速响应,关闭它:fading = false;

E. 不透明规则 (Opacity Rules)

强制某些全屏应用(如游戏、视频播放器)不透明,避免不必要的计算。

opacity-rule = [
  "100:class_g = 'Firefox' && focused",
  "95:class_g = 'Firefox' && !focused",
  "100:fullscreen"
];

4. 两份推荐配置模板

模板 A:高性能/现代桌面 (追求美观与流畅)

适用于日常办公、写代码,有独立显卡或较新的核显。

# ~/.config/picom/picom.conf

backend = "glx";
vsync = true;
glx-no-stencil = true;
glx-no-rebind-pixmap = true;

# 阴影设置
shadow = true;
shadow-radius = 7;
shadow-offset-x = -7;
shadow-offset-y = -7;
shadow-opacity = 0.5;
# 不给 dock 和 某些窗口加阴影
shadow-exclude = [
  "class_g = 'Conky'",
  "class_g = 'Polybar'",
  "class_g = 'Rofi'",
  "_GTK_FRAME_EXTENTS@:c"
];

# 透明度
inactive-opacity = 0.9;
active-opacity = 1.0;
frame-opacity = 1.0;

# 淡入淡出 (可选,如果觉得卡就关掉)
fading = true;
fade-in-step = 0.03;
fade-out-step = 0.03;

# 排除规则 (全屏应用不透明,提升游戏性能)
opacity-rule = [
  "100:class_g = 'mpv'",
  "100:fullscreen"
];

# 其他
mark-wmwin-focused = true;
mark-ovredir-focused = true;
detect-rounded-corners = true;
detect-client-opacity = true;

模板 B:低性能/老旧硬件 (追求极速)

适用于树莓派、旧笔记本或只想消除撕裂。

# ~/.config/picom/picom.conf

# 使用 xrender 或 glx (如果 glx 兼容)
backend = "xrender"; 
vsync = true;

# 关闭所有花哨效果
shadow = false;
fading = false;
inactive-opacity = 1.0;
corner-radius = 0;

# 模糊必须关闭
blur: {
  method = "none";
}

# 只做最基本的合成
unredir-if-possible = true; # 全屏时绕过合成器(对游戏很重要)

5. 常见疑难杂症与调试

1. 屏幕撕裂 (Screen Tearing)

  • Intel 核显: 尝试在 /etc/X11/xorg.conf.d/20-intel.conf 中添加 Option "TearFree" "true"
  • NVIDIA 独显: 必须在 nvidia-settings 中开启 Force Full Composition Pipeline,而不是单纯依赖 picom 的 vsync。
  • Picom 参数: 尝试 picom --backend glx --vsync drmopengl-swc

2. 启动失败或黑屏

  • 检查日志:picom --log-level trace
  • 如果是 GLX 错误,切换回 backend = "xrender";

3. 窗口边框消失或颜色异常

  • 尝试关闭 detect-rounded-cornersmark-wmwin-focused

4. 如何让 Picom 开机自启?

根据你的桌面环境或窗口管理器(WM)不同,方法不同:

  • i3wm:~/.config/i3/config 中添加 exec --no-startup-id picom
  • Openbox:~/.config/openbox/autostart 中添加 (picom &)
  • BSPWM:~/.config/bspwm/bspwmrc 中添加 picom &
  • 通用 (systemd 用户服务): 较为复杂,通常直接用上述方法更简单。

6. 快速测试命令

在修改配置文件之前,你可以直接在终端运行以下命令来测试效果,无需重启 X11:

# 停止当前 picom
killall picom

# 测试 GLX 后端 + 无阴影
picom --backend glx --no-fading-openclose --no-dock-shadow --shadow-off &

# 测试 XRender 后端
picom --backend xrender &

总结建议:

  1. 先用 glx 后端。
  2. 如果卡顿,关闭 shadowfading
  3. 如果撕裂,调整 vsync 设置或显卡驱动设置。
  4. 游戏时,确保 unredir-if-possible = true;(默认开启),这样全屏游戏会绕过 picom 以获得最大性能。

0