温馨提示×

如何在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-1xrandr --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”)。

0