您的位置:首页 >如何利用Compton优化多显示器设置
发布于2026-04-25 阅读(0)
扫一扫,手机访问

在启动Compton之前,有个关键前提必须明确:Compton只负责窗口合成,显示器的物理排列和模式设置,得靠另一个工具——xrandr。所以,第一步永远是先搞定显示布局。
首先,打开终端,运行 xrandr --query 命令。这个命令会列出所有已连接的显示器及其系统识别的名称(比如 eDP-1, HDMI-1)。记下这些名字,后续配置全靠它们。
接下来,按照你的需求排列显示器。例如,想把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在大多数独立显卡上更稳定
vsync = “opengl” # 也可选 “drm” 或 “none”,首选opengl能有效减少画面撕裂
glx-no-stencil = true # 关闭模板缓冲,能降低一些GPU开销
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’” ] # 排除DOCK类窗口的焦点变化效果
opacity-rule = [
“80:class_g = ‘Gnome-terminal’”, # 给终端设置80%透明度
“90:class_g = ‘Firefox’” # 给Firefox设置90%透明度
]
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 这些规则,针对不同应用和窗口类型进行精细化控制。这样才能确保各种视觉效果在各个屏幕之间保持一致,不会出现“一个屏幕有阴影,另一个没有”的尴尬情况。
这才是发挥Compton多显示器威力的精髓所在——针对每块屏幕进行个性化设置。
1. 按显示器设置透明度: 比如,想让HDMI-1上的窗口整体透明度为95%,其他屏幕保持100%不透明,规则可以这样写:
opacity-rule = [
“95:output = ‘HDMI-1’”,
“100”
]
2. 排除特定显示器的阴影: 假设你不想在DP-1显示器上为Polybar或Conky这类状态栏显示阴影,可以这样排除:
shadow-exclude = [
“output = ‘DP-1’ && class_g = ‘Polybar’”,
“output = ‘DP-1’ && class_g = ‘Conky’”
]
3. 按显示器启用/禁用特效: 背景模糊比较吃资源,如果只想在笔记本主屏(eDP-1)上启用,可以这样配置:
blur-background = true
blur-background-exclude = [“output != ‘eDP-1’”]
操作前,务必再用 xrandr --query 确认一遍你的显示器输出名称(比如 eDP-1、HDMI-1)。对于全屏游戏或视频播放器,可以结合窗口类(class)或类型(type)进行规则排除,这样能有效减少不必要的合成计算,降低功耗。
手动测试: 配置好后,建议先手动运行测试一下,带上调试日志会更方便排错:
compton -c ~/.config/compton.conf --log-level=debug --log-file=/tmp/compton.log
使用systemd用户服务(推荐): 这是最稳妥的自启方式,能确保Compton和你的图形会话绑定在一起,避免登录、注销时出问题。
首先,创建文件 ~/.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进行对比测试(注意,关闭vsync可能会引入画面撕裂)。
GPU或CPU占用过高: 确保 glx-damage 和 damage 已开启。适当增大 fade-delta 的值。最关键的是,务必在 shadow-exclude 等规则中,将Conky、Polybar、桌面窗口这类不需要阴影或模糊效果的元素排除出去。
多显示器之间撕裂不一致: 再次强调,坚持使用一个全局的 backend,避免不同屏幕走了不同的渲染路径。如果某块屏幕问题特别严重,可以尝试单独为它设置排除规则。
开机后Compton未生效或出现闪屏: 这通常是启动顺序竞争导致的。确保Compton的服务配置了 After=display-manager.service 或 After=graphical-session.target,并且强烈推荐使用用户级(user)服务,这能最大程度减少会话切换带来的影响。
特定应用显示异常(黑边、重影、透明度失灵): 这是精细化配置派上用场的时候。利用 opacity-rule、focus-exclude、shadow-exclude 规则,针对这个应用的窗口类(class)或标题(title)进行排除。如果怀疑是驱动兼容性问题,可以临时用 --backend xrender 参数启动Compton来验证。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
9