Linux 上优化 Compton 的实用指南
一 基础准备与环境确认
- 确认会话类型:Compton 是 X11 的窗口合成器,在 Wayland 会话下通常不生效;请切换到 Xorg 会话后再进行配置与测试。
- 安装与配置路径:常见发行版安装命令为 Debian/Ubuntu 系 sudo apt-get install compton,Arch 系 sudo pacman -S compton,Fedora/RHEL 系 sudo dnf install compton;配置文件通常位于 ~/.config/compton.conf(不存在可创建)。
- 启动与热重载:手动启动可用 compton --config ~/.config/compton.conf;会话自启动可加入窗口管理器(如 i3/Openbox)的启动脚本;更推荐使用用户级 systemd 服务管理(见下文)。
二 关键参数与性能取舍
- 渲染后端:优先使用 backend = “glx”(或构建支持时的 egl),在驱动正常时通常更流畅;兼容性需求或异常时可退回 xrender。
- 垂直同步:设置 vsync = true 可减少撕裂,但可能带来输入延迟;对延迟敏感的场景可尝试关闭并验证实际观感。
- 阴影与模糊:关闭 shadow = false 与(若可用)bg_blur = false 能显著降低开销;需要柔和阴影时再开启并控制半径与范围。
- 淡入淡出:关闭 fade = false 或减少 fade-delta 可降低 CPU/GPU 负担。
- 不透明度:减少全局或规则化的 opacity/opacity-rule 使用,避免频繁 alpha 混合;必要时只对少数窗口设置固定不透明度。
三 配置示例与场景化建议
- 最小可用示例(保存为 ~/.config/compton.conf):
# 渲染与同步
backend = "glx";
vsync = true;
# 阴影
shadow = true;
shadow-radius = 2;
shadow-offset-x = 2;
shadow-offset-y = 2;
shadow-opacity = 0.5;
# 淡入淡出
fade = true;
fade-delta = 10;
# 背景色(无透明时生效)
background = "#000000";
# 窗口不透明度规则(示例)
opacity-rule = [
"90:class_g = 'Firefox'",
"90:class_g = 'Alacritty'"
];
# 排除阴影的窗口(示例)
shadow-exclude = [
"class_g 'GtkMenu'",
"class_g 'GtkDialog'",
"class_g 'Notification'"
];
| 场景 |
建议设置 |
| 极致性能 |
backend = “xrender”;shadow = false;bg_blur = false;vsync = true |
| 平衡性能与画质 |
backend = “glx”;shadow = true;bg_blur = false;vsync = false |
| 兼容性优先 |
backend = “xrender”;必要时 disable-gpu-compositing = true |
- 提示:部分构建才提供 bg_blur/screen_edge_blur 等开关,若配置项不存在请先确认所用版本与构建配置。
四 启动与自启动的正确方式
- 手动热重载:先结束旧进程再启动,例如 pkill compton && compton --config ~/.config/compton.conf &。
- 用户级 systemd 服务(推荐):创建 ~/.config/systemd/user/compton.service
[Unit]
Description=Compton Compositor
After=graphical-session.target
[Service]
ExecStart=/usr/bin/compton --config %h/.config/compton.conf
Restart=always
[Install]
WantedBy=default.target
启用并启动:systemctl --user daemon-reload && systemctl --user enable --now compton.service。
- 注意:若在 Wayland 会话中,Compton 不会生效;请切换到 Xorg 会话测试。
五 故障排查与进阶优化
- 快速定位:在终端直接运行 compton 观察输出;或暂时改用最小化配置,逐项恢复以定位问题。
- 画面撕裂或卡顿:切换 backend(glx/xrender),并尝试 glx-damage / glx-fbo / glx-no-stencil / glx-vsync 等 OpenGL 细粒度选项组合。
- 阴影异常:完善 shadow-exclude 规则,排除菜单、通知、Dock/面板等不需要阴影的窗口。
- 资源占用控制:必要时用 cpulimit 限制 CPU,例如 cpulimit -l 50 -p $(pidof compton)(将占用限制在约 50%)。
- 版本差异:部分选项(如 bg_blur、screen_edge_blur)依赖构建配置;若不可用请先确认版本与构建。