- 首页 >
- 问答 >
-
智能运维 >
- 如何在Linux上使用Compton进行多屏显示
如何在Linux上使用Compton进行多屏显示
小樊
34
2025-12-29 20:03:53
Linux 上使用 Compton 实现多屏显示
一 前提与安装
- 确认会话类型为 X11(Compton 仅工作在 X11;Wayland 需改用 Mutter/Sway 等合成器)。
- 安装 Compton:
- Debian/Ubuntu:sudo apt update && sudo apt install compton
- Fedora:sudo dnf install compton
- RHEL/CentOS:sudo yum install compton(或 dnf)
- 安装后建议先准备配置文件:mkdir -p ~/.config && nano ~/.config/compton.conf,后续通过 compton -c ~/.config/compton.conf 测试启动。
二 配置多显示器布局
- 用 xrandr 设置物理排列(扩展/镜像),Compton 仅负责合成,不负责拓扑:
- 查看输出名:xrandr --query(常见如 eDP-1、HDMI-1、DP-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
- 将上述 xrandr 命令加入会话的启动脚本(如 ~/.xinitrc、窗口管理器 autostart)或桌面会话自启动,确保登录后即完成多屏布局。
三 多屏合成配置要点
- 渲染与同步(建议作为起点):
- backend = “glx”(OpenGL 加速)
- glx-no-stencil = true(降负载)
- glx-damage = true; use-damage = true(减少不必要重绘)
- vsync = “opengl-swc”(或尝试 “opengl”;如仍有撕裂再测试 false)
- fps-limit = 0(不限制;多屏高刷可设为 120/144/165)
- 按显示器刷新率(与 xrandr 一致):
- refresh-rate = [ “eDP-1: 60”, “HDMI-1: 144”, “DP-1: 60” ]
- 阴影与性能(跨屏常开阴影会增负载,按需精简):
- shadow = true; shadow-radius = 12; shadow-offset-x = -8; shadow-offset-y = -8; shadow-opacity = 0.35
- 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’”, “class_g = ‘gnome-terminal’”, “class_g = ‘konsole’”, “class_g = ‘xterm’”, “class_g = ‘Firefox’ && argb && !override_redirect” ]
- 透明与模糊(跨屏一致性):
- opacity-rule = [ “90:class_g = ‘Gnome-terminal’”, “95:class_g = ‘Firefox’ && argb && !override_redirect” ]
- blur-background = true; blur-radius = 3; blur-kern = “7x7box”
- blur-exclude = [ “class_g = ‘Gnome-terminal’”, “class_g = ‘Firefox’ && argb && !override_redirect” ]
- 全屏优化(视频/游戏):
- unredir-if-possible = true(全屏时绕过合成以减少延迟)
- unredir-if-possible-exclude = [ “class_g = ‘slop’” ]
- 旧显卡或兼容性问题可退回 backend = “xrender”(性能较低但更稳)。
四 启动与自启动
- 手动测试:compton -c ~/.config/compton.conf(观察跨屏阴影、透明度、撕裂情况)
- 会话/窗口管理器自启动:将 compton -c ~/.config/compton.conf 加入 Openbox/i3/bspwm 等的启动脚本或 autostart。
- systemd 用户服务(推荐,避免与登录会话不同步):
- 新建: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
- 如需系统级服务(不推荐):创建 /etc/systemd/system/compton.service,并在 [Service] 中指定 User=用户名,[Install] 使用 WantedBy=multi-user.target。
五 验证与常见问题
- 验证:拖动窗口跨屏、打开浏览器/终端/视频,检查是否出现撕裂、闪烁、错位或透明异常。
- 撕裂/卡顿:开启 vsync(如 “opengl-swc”),或把 fps-limit 设为显示器刷新率;必要时降低特效。
- 性能不足:关闭或简化 shadow/blur,对全屏应用启用 unredir-if-possible,或将 backend 改为 xrender。
- 显示器未适配:用 xrandr --query 确认连接与名称,确保 xrandr 布局命令在会话启动早期执行。
- 黑屏/异常:检查显卡驱动(如 NVIDIA 需安装 nvidia-driver 并正确配置 Xorg);排障时可临时启用日志(如 log-level = “debug”; log-file = “/tmp/compton.log”)。