在 Debian 上使用 Compton 提升显示效果
一 安装与准备
- 更新系统并安装 Compton:
- sudo apt update && sudo apt install -y compton
- 确认显卡驱动正常(尤其是 OpenGL),后续才能选择更合适的渲染后端并获得更好的性能与视觉一致性。
二 配置要点与示例
- 配置文件路径:~/.config/compton.conf(不存在则创建)。
- 建议先启用基础合成与同步,再按需求逐步开启阴影、淡入淡出与模糊等效果,便于定位问题。
- 示例配置(可直接保存为 ~/.config/compton.conf 并按需微调):
# 基本
backend = "glx"
vsync = "true" # 减少撕裂;若出现卡顿可改为 "false" 试验
fade = true
shadow = true
shadow-opacity = 0.35
shadow-radius = 8
shadow-offset-x = 0
shadow-offset-y = 4
# 模糊(可选,性能开销较大)
blur-background = true
blur-method = "gaussian"
blur-radius = 8
blur-strength = 14
# 窗口透明度(可选)
opacity-rule = [
"90:class_g = 'Alacritty'",
"0.92:class_g = 'Firefox'"
]
# 排除不需要阴影/模糊的窗口(示例)
shadow-exclude = [
"name = 'Notification'",
"class_g = 'Conky'",
"role = 'toolbox'"
]
# 性能相关
unredirect-blit = true
glx-no-stencil = true
说明:
- backend 建议优先 glx(若驱动异常再回退 xrender)。
- 模糊与透明度会占用更多 GPU/CPU,低配或高刷新屏可按需关闭或降低强度。
三 启动与自启动
- 手动前台运行(便于查看输出与排错):
- compton --config ~/.config/compton.conf
- 使用 systemd 用户服务(登录即自动启动,推荐):
- 创建服务文件:
- mkdir -p ~/.config/systemd/user
- nano ~/.config/systemd/user/compton.service
- 写入内容(注意替换 你的用户名):
[Unit]
Description=Compton Compositor
After=graphical-session.target
[Service]
ExecStart=/usr/bin/compton --config %h/.config/compton.conf --log-level=warn
Restart=always
Environment=DISPLAY=:0
[Install]
WantedBy=default.target
- 启用并启动:
- systemctl --user daemon-reload
- systemctl --user enable --now compton.service
- 若不使用 systemd,也可在会话启动脚本(如 Openbox autostart、i3 config、~/.xprofile)中加入:
- compton --config ~/.config/compton.conf &
四 常见问题与优化
- 撕裂或卡顿
- 先开启 vsync = “true”;若仍撕裂,尝试 “drm” 或 “opengl-swc”(部分驱动/环境支持),或临时关闭 vsync 试验。
- 降低/关闭 blur、shadow、opacity-rule 等开销项。
- 与桌面环境冲突
- GNOME/KDE/Xfce 等自带合成器可能与 Compton 冲突,建议二选一(保留系统合成器或改用轻量 WM 如 Openbox/i3)。
- 性能与资源占用
- 优先使用 backend = “glx”;必要时开启 unredirect-blit = true、glx-no-stencil = true。
- 通过日志定位问题:compton --config ~/.config/compton.conf --log-level=debug,或查看 systemd 日志:journalctl --user -u compton.service -b。
- 快速重载
- 修改配置后可用:killall compton && compton --config ~/.config/compton.conf &;若使用 systemd:systemctl --user restart compton.service。