CentOS 下 Compton 多显示器设置指南
一 核心原则与准备
- Compton 是 X11 的窗口合成器,不负责显示器的连接与排列;多显示器的物理布局与刷新率需先用 xrandr 配置好,Compton 会自动适配已连接的输出。使用命令查看输出名称:xrandr --query(常见名称如 eDP-1、HDMI-1、DP-1)。若使用 Wayland 会话,请改用 picom(Compton 的 Wayland 分支)。
二 安装与基础配置
- 安装 Compton(CentOS 7/8 常用 yum,较新版本可用 dnf):
- sudo yum install -y compton 或 sudo dnf install -y compton
- 创建配置文件并写入基础项(启用 OpenGL 加速、减少重绘、基础阴影与透明规则):
- mkdir -p ~/.config && nano ~/.config/compton.conf
- 示例关键项:
- backend = “glx”
- glx-no-stencil = true
- glx-damage = true
- use-damage = true
- vsync = “opengl-swc” # 如仍有撕裂,可改为 “opengl” 或 false 测试
- shadow = true
- shadow-exclude = [
“_NET_WM_WINDOW_TYPE@:a = ‘desktop’”,
“_NET_WM_WINDOW_TYPE@:a = ‘dock’”,
“_NET_WM_WINDOW_TYPE@:a = ‘tooltip’”,
“_NET_WM_WINDOW_TYPE@:a = ‘notification’”
]
- opacity-rule = [
“90:class_g = ‘Gnome-terminal’”,
“95:class_g = ‘Firefox’ && argb && !override_redirect”
]
- 说明:上述配置为多屏通用起点;如需按输出单独设置刷新率,可在配置中加入 refresh-rate(见下一节示例)。
三 多显示器布局与刷新率设置
- 用 xrandr 设置扩展/镜像与相对位置(示例将 HDMI-1 放在 eDP-1 右侧,DP-1 放在 HDMI-1 右侧):
- xrandr --output HDMI-1 --auto --right-of eDP-1
- xrandr --output DP-1 --auto --right-of HDMI-1
- 如需镜像:将 --right-of 替换为 –same-as eDP-1
- 在 Compton 中按输出指定刷新率(与 xrandr 一致可减轻卡顿与撕裂):
- refresh-rate = [
“eDP-1: 60”,
“HDMI-1: 144”,
“DP-1: 60”
]
- 可选:将 xrandr 参数通过 Compton 传递(一般不需要,除非有特殊需求):
- xrandr-args “–output HDMI-1 --auto --right-of eDP-1 --output DP-1 --auto --right-of HDMI-1”
四 启动与自启动
- 会话/窗口管理器自启动:将 compton -c ~/.config/compton.conf 加入 Openbox/i3/bspwm 等的启动脚本或 autostart。
- 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 -c %h/.config/compton.conf
Restart=on-failure
Environment=DISPLAY=:0
- [Install]
WantedBy=graphical-session.target
- 启用并启动:
- systemctl --user daemon-reload
- systemctl --user enable --now compton.service
- 如需系统级服务(不推荐,易与用户会话不同步),可使用 systemd 系统服务并在 [Service] 中指定 User= 与 Environment=DISPLAY=:0。
五 常见问题与优化
- 撕裂/卡顿:
- 确认显示器物理刷新率与 Compton 的 refresh-rate 一致;切换 vsync(“opengl-swc”/“opengl”/false)逐一测试;高刷屏可将 fps-limit 设为显示器刷新率或 0(无上限,视 GPU/驱动而定)。
- 性能优先:
- 关闭或简化阴影/模糊(如 shadow = false 或仅顶层窗口启用);对全屏应用启用 unredir-if-possible = true 并在 unredir-if-possible-exclude 中排除录屏/叠加工具;通过 shadow-exclude/blur-exclude/opacity-rule 对终端、浏览器、视频等进行差异化处理。
- 多屏不同 DPI/缩放:
- 使用 xrandr 缩放或桌面环境缩放后,保持 backend = “glx” 与 glx-damage 开启,必要时适度提高 shadow/blur 半径以适配视觉一致性。
- 快速排障:
- 临时开启日志:log-level = “debug”; log-file = “/tmp/compton.log”; 复现问题后用 systemctl --user status compton.service 或 journalctl --user -u compton.service 查看运行与错误信息。