Linux Compton 配置常见问题与解决
一 快速排查流程
ps -e | grep compton;未运行时执行 compton &。killall compton 后执行 compton &。grep -i compton /var/log/syslog,X11 日志查看 /var/log/Xorg.0.log,关注包含 error/failed 的行。二 配置语法与弃用项修正
no-dock-shadow 已弃用 → 改用 wintype shadow of dock 配置。menu-opacity 已弃用 → 改用 wintype opacity of popup_menu / dropdown_menu,或用 inactive-opacity / active-opacity 控制。vsync 现在只接受布尔值:true/false;旧写法 "none" 虽被兼容解释为 false,但将停止支持。glx-swap-method 自 v6 起弃用 → 直接移除该选项,由后端选择(如 backend "glx")决定。clear-shadow 已移除且默认始终启用 → 从配置中删除该选项。paint-on-overlay 已移除 → 在可能的情况下会自动启用,无需配置。shadow = true 正确,shadow true 在某些解析器中可能报错)。shadow-exclude = [ "name 'Notification'", "class_g ? 'Dmenu'" ];。三 高频症状与对应修复
glx 切换到 xrender 以提升兼容性;必要时更新显卡驱动。vsync = false 的权衡。shadow false、blur-background false、fading false),或将 backend 调整为更适合你硬件的选项(OpenGL 环境优先 glx,兼容性优先 xrender)。shadow-exclude 是否误伤目标窗口;确认 shadow = true 且未设置 clear-shadow;必要时调整 shadow-radius、shadow-offset-x/y、shadow-opacity。inactive-opacity / active-opacity 设置整体透明度;菜单类用 wintype opacity 针对 popup_menu/dropdown_menu 设置,避免再用已弃用的 menu-opacity。detect-transient = true、detect-client-leader = true 以提升跨窗口/应用识别;对问题应用添加 focus-exclude 或 shadow-exclude 规则。四 性能优化与资源控制
cpulimit -l 50 -p <compton_pid>(将 CPU 占用限制在 50%)。五 最小可用配置模板
# 基本
backend = "glx"
vsync = true
shadow = true
inactive-opacity = 0.93
active-opacity = 1
alpha-step = 0.01
fade = false
# 阴影
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'",
"_NET_WM_STATE@:32a * '_NET_WM_STATE_HIDDEN'",
"_GTK_FRAME_EXTENTS@:c",
"_NET_WM_STATE@:32a * '_NET_WM_STATE_STICKY'",
"class_g ? 'i3-frame'"
]
# 其他
detect-transient = true
detect-client-leader = true
unredir-if-possible = true
focus-exclude = [ "class_g 'Cairo-clock'" ]
使用方法:保存为 ~/.config/compton.conf,执行 killall compton && compton & 生效;若 glx 后端异常,改为 backend = "xrender" 再测试。