Linux下Compton配置错误的排查与修复
一 快速定位问题
ps -e | grep compton;前台启动:compton -b(后台)或 compton(前台)。前台能直接看到语法或显卡驱动报错。backend = "glx"
vsync = false
shadow = true
保存后用 compton -c /tmp/minimal.conf 前台启动,若无报错再逐步恢复自定义项。killall compton && compton &。如使用会话/自启动,请重启会话或重新登录。二 常见报错与修复对照
| 症状或日志关键词 | 可能原因 | 修复建议 |
|---|---|---|
| 启动即退或提示未知选项 | 使用了已移除/弃用的选项 | 删除或替换:clear-shadow(已移除)、paint-on-overlay(已移除)、glx-swap-method(已弃用,直接删除该行)、vsync 仅用布尔值(true/false) |
| 阴影异常(全黑/缺失/错位) | 阴影被错误排除或窗口类型不匹配 | 检查 shadow-exclude 规则;用 wintype 精确控制:例如 wintype = { dock = { shadow = false }; popup_menu = { opacity = 0.95 }; dropdown_menu = { opacity = 0.95 } } |
| 菜单/提示层透明度无效 | 使用了已弃用的 menu-opacity |
改为 wintype 的 popup_menu/dropdown_menu 的 opacity |
| 撕裂或卡顿 | vsync 与驱动/合成器不匹配 |
将 vsync 设为 true 或 false 分别测试;必要时切换 backend 为 xrender 或 glx |
| 模糊/背景异常 | 模糊与阴影/不透明规则冲突 | 先关闭 blur-background 验证;逐步开启并调整 blur-kern、blur-radius |
| 特定应用渲染异常(白屏/黑边/拖影) | GPU 驱动或特定窗口属性不兼容 | 更新显卡驱动;尝试切换 backend;为该应用添加 opacity-rule 或 shadow-exclude 例外 |
三 配置语法与弃用项修正要点
no-dock-shadow → 使用 wintype { dock = { shadow = false } }menu-opacity → 使用 wintype { popup_menu, dropdown_menu { opacity = 0.xx } }vsync → 仅接受布尔值:true/false(旧写法如 "none" 仅为兼容,后续会移除)glx-swap-method → 已弃用,直接删除该行clear-shadow → 已移除,无需配置paint-on-overlay → 已移除,无需配置# 基本
backend = "glx"
vsync = true
shadow = true
# 用 wintype 替代已弃用项
wintype {
dock = { shadow = false }
popup_menu = { opacity = 0.95 }
dropdown_menu = { opacity = 0.95 }
}
# 阴影与排除
shadow-radius = 5
shadow-offset-x = 1
shadow-offset-y = 1
shadow-opacity = 0.3
shadow-exclude = [
"name 'Notification'",
"class_g ? 'Dmenu'",
"class_g ? 'Dunst'"
]
修改后重启 Compton 并观察是否还有警告或报错。四 仍无法解决时的建议
compton 使用内置默认;确认默认能正常工作后再逐项加回自定义项。compton -c /path/to/compton.conf 前台启动,复制终端输出用于进一步排查。