温馨提示×

如何利用Compton优化多显示器设置

小樊
38
2025-12-14 02:54:25
栏目: 编程语言

Compton 多显示器优化指南

一 基础准备与显示布局

  • 使用 xrandr 正确布局多显示器(Compton 只负责合成,不负责显示模式/位置)。先查看连接与名称:运行 xrandr --query;按需设置扩展或镜像,例如将 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
    布局稳定后再启动 Compton,可减少合成器对显示变更的重复适配。以上布局与启动方式适用于 CentOS/Debian 等常见发行版。

二 配置文件骨架与关键参数

  • 建议将配置写入 ~/.config/compton.conf,按需微调。以下骨架面向多显示器,兼顾性能与一致性: backend = “glx” # 或 “xrender”,glx 在多数 GPU 上更稳 vsync = “opengl” # 或 “drm”/“none”,优先 opengl 减少撕裂 glx-no-stencil = true # 降低开销 glx-copy-from-front = false # 避免某些驱动/应用的前台拷贝开销 glx-damage = true # 仅重绘受损区域 damage = true shadow = true shadow-exclude = [ “class_g = ‘Conky’”, “class_g = ‘Polybar’”, “class_g = ‘yakuake’”, “_NET_WM_WINDOW_TYPE@:a = ‘DESKTOP’” ] fading = true fade-delta = 4 fade-in-step = 0.03 fade-out-step = 0.03 focus-exclude = [ “_NET_WM_WINDOW_TYPE@:a = ‘DOCK’” ] opacity-rule = [ “80:class_g = ‘Gnome-terminal’”, “90:class_g = ‘Firefox’” ] mark-wmwin-focused = true mark-ovredir-focused = true detect-rounded-corners = true detect-client-leader = true use-damage = true unredir-if-possible = true

    可选:若你使用较新的驱动/内核并遇到合成异常,可尝试

    backend = “xrender”

    glx-swap-method = 1 # 仅在特定驱动/硬件上尝试

  • 说明:上述为通用起点;多显示器下建议保持 一个全局 backend,并通过 shadow-exclude/focus-exclude/opacity-rule 按应用与类型精细化控制,避免不同屏幕间效果不一致。

三 针对不同显示器的差异化设置

  • 按显示器名称设置不透明度(示例将 HDMI-1 设为 95%,其余保持默认 100%): opacity-rule = [ “95:output = ‘HDMI-1’”, “100” ]
  • 排除特定显示器上的阴影(示例排除 DP-1 上的 Dock/面板类窗口): shadow-exclude = [ “output = ‘DP-1’ && class_g = ‘Polybar’”, “output = ‘DP-1’ && class_g = ‘Conky’” ]
  • 按显示器启用/禁用特效(示例仅在 eDP-1 启用背景模糊): blur-background = true blur-background-exclude = [ “output != ‘eDP-1’” ]
  • 使用提示:先用 xrandr --query 确认输出名(如 eDP-1/HDMI-1/DP-1),再按上述规则精确匹配;对全屏视频/游戏可结合窗口类型或类进行排除,减少不必要的合成与功耗。

四 启动与自启动

  • 手动测试:
    compton -c ~/.config/compton.conf --log-level=debug --log-file=/tmp/compton.log

  • 使用 systemd 用户服务(推荐,避免与登录会话脱节):
    创建文件 ~/.config/systemd/user/compton.service: [Unit] Description=Compton Compositor After=graphical-session.target

    [Service] ExecStart=/usr/bin/compton -c %h/.config/compton.conf --log-level=warn Restart=on-failure Environment=XDG_RUNTIME_DIR=/run/user/%U

    [Install] WantedBy=default.target

  • 启用与启动:
    systemctl --user daemon-reload
    systemctl --user enable --now compton.service

  • 若必须系统级服务,请确保 After=display-manager.service,并考虑以对应用户运行(如设置 User=your_username),避免权限/会话问题。

五 常见问题与性能调优

  • 撕裂与卡顿:优先 vsync = “opengl”;若仍异常,尝试 backend = “xrender” 或关闭 vsync 进行对比测试(会引入撕裂风险)。
  • 高 GPU/CPU 占用:开启 glx-damage/damage,适度提高 fade-delta,并对 Conky/Polybar/DESKTOP 等无需阴影/模糊的窗口进行排除。
  • 多显示器撕裂不一致:保持 一个全局 backend,避免不同屏幕使用不同渲染路径;必要时对问题屏幕单独做排除规则。
  • 开机未生效或闪屏:确保 Compton 在 显示管理器之后 启动(After=display-manager.service 或 After=graphical-session.target),并使用用户级服务减少会话切换导致的竞争。
  • 特定应用异常(黑边/重影/不透明):用 opacity-rule/focus-exclude/shadow-exclude 针对其 class/title 精细排除;必要时临时以 –backend xrender 验证是否为驱动路径问题。

0