多屏环境里常见的问题并不只是“能不能点亮副屏”,更麻烦的是撕裂、跨屏卡顿、窗口错位,甚至启用合成后出现黑屏。Compton 这类轻量级合成管理器,适合用较低的配置成本把多显示器的画面合成、同步和性能参数统一起来。下面按安装检查、核心配置、启动自启和问题排查四个部分展开,方便你快速落地,也能根据现象判断该优先改哪一组参数。
安装前先确认:Compton 是否已就绪
正式调多屏参数前,先确认系统里已经安装 Compton。以 Debian/Ubuntu 为例,可以直接用包管理器完成安装:
sudo apt update && sudo apt install compton -y
安装完成后,通常需要创建或编辑配置文件。默认常见路径是 ~/.config/compton.conf,如果文件还不存在,手动创建即可:
nano ~/.config/compton.conf
这一步的意义很简单:后面的多屏输出、同步方式和性能选项,都会集中写在这个配置文件里,后续排障也主要围绕它展开。
多显示器优化的核心参数怎么配
Compton 在多屏场景下,重点不是堆很多选项,而是先把三类参数理顺:显示器输出与相对位置、合成性能、刷新率与同步。只要这三个方向设置正确,绝大多数日常问题都能明显缓解。

显示器输出、位置与缩放
首先要确认每块屏幕对应的输出接口名称,再写入相对位置关系。比如一台设备同时接了两个显示器,HDMI-1 在右侧,eDP-1 在左侧,可以这样配置:
screen0 {
output = "HDMI-1"; # 显示器接口名称(通过xrandr查看)
position = "right"; # 相对位置(left/right/top/bottom)
transform = "normal"; # 屏幕旋转(normal/90/180/270)
scale = 1.0; # 缩放比例(适配高分辨率屏幕)
}
screen1 {
output = "eDP-1";
position = "left";
transform = "normal";
scale = 1.0;
}
其中,output 决定你配置的是哪块屏,position 决定它与主屏的空间关系,transform 用于旋转方向,scale 则影响高分屏下的显示比例。如果这里填错,后面出现副屏不亮、窗口跨屏错位,都很常见。
显示器接口名称可以通过
xrandr --query查看,常见值包括HDMI-1、DP-1、eDP-1等。
优先处理合成性能
多屏合成对图形资源占用更敏感,因此建议先用更高效的后端,并关掉不必要的视觉效果,把资源留给实际窗口绘制:

backend = "glx"; # 使用OpenGL加速(优先于xrender)
glx-no-stencil = true; # 禁用模板缓冲区(提升性能)
glx-damage = true; # 仅合成修改的区域(减少资源消耗)
shadow = false; # 关闭窗口阴影(显著降低CPU/GPU负载)
opacity = false; # 关闭窗口透明(避免合成透明窗口的性能开销)
这组参数的思路很明确:能用 glx 就先用 glx,同时尽量减少阴影、透明度这类额外合成开销。对于日常办公、多窗口切换或外接高分辨率副屏的场景,这往往比单纯提高刷新率更有效。
刷新率与垂直同步的取舍
如果你的问题主要是画面撕裂,而不是纯粹的性能不足,那么同步参数要优先看:
vsync = "true"; # 开启垂直同步(防止画面撕裂)
refresh-rate = 60; # 设置刷新率(匹配显示器原生刷新率)
vsync 主要用来抑制撕裂,refresh-rate 则应尽量贴近显示器原生刷新率。这里不建议盲目写高,关键是和实际硬件一致;如果硬件带宽或图形性能有限,过高的刷新设置反而可能引出卡顿和延迟。
如何启动 Compton,并设置为开机自启
配置文件写完之后,先不要急着做自启动,最稳妥的方式是先手动运行一次,确认画面、窗口拖动和跨屏行为是否正常:
compton -c ~/.config/compton.conf
如果手动启动没有异常,再继续配置开机自启。文中给出的方案是创建一个 systemd 服务文件,适用于大多数 Linux 发行版:
sudo nano /etc/systemd/system/compton.service
服务文件内容如下,注意把 你的用户名 替换为实际用户名:
[Unit]
Description=Compton Compositor
After=display-manager.service
[Service]
ExecStart=/usr/bin/compton -c ~/.config/compton.conf
Restart=always
User=你的用户名
[Install]
WantedBy=multi-user.target
随后启用并启动服务:
sudo systemctl enable compton.service
sudo systemctl start compton.service
这一步的好处是,系统启动后会自动拉起 Compton,不需要每次登录后手动执行命令。对于长期接驳扩展屏、需要固定桌面布局的设备,这种方式更稳定,也更方便复现问题和统一配置。
常见问题怎么排查
多屏配置最怕的不是参数多,而是现象混杂。下面几类问题最常见,建议按“先确认硬件与输出名,再调整合成和同步,最后处理个别应用例外”的顺序排查。
副屏黑屏或没有输出
- 先检查 HDMI、DP、VGA 等线缆连接是否松动;
- 确认
xrandr输出的显示器名称,和配置文件中的output完全一致; - 如果仍无法显示,可以先临时关闭 Compton:
killall compton,通过系统显示设置重新配置多屏,再重新启动 Compton。
这类问题通常优先怀疑输出名称、连接状态或当前布局是否与系统层配置冲突,而不一定是合成参数本身出错。
窗口卡顿、延迟偏高
如果表现是窗口拖动不顺、切换发涩、输入后界面响应慢,可以从以下几个方向减负:
- 降低
refresh-rate,例如从 60 调整到 30; - 减小
shadow-radius,默认 5 时可尝试改为 3 或更低; - 关闭垂直同步,即
vsync = "false",但这样可能重新出现画面撕裂; - 切换到更轻量的后端,例如
backend = "xrender",不过通常情况下 OpenGL 的总体表现仍更好。
这里的关键不是一次把所有功能都关掉,而是先分辨问题到底来自同步、阴影透明效果,还是后端本身。逐项调整更容易找到真正的瓶颈。
跨屏时窗口错位或显示异常
如果窗口拖到另一块屏幕后位置异常、边界不对齐,优先检查布局参数:
- 确认
position是否与实际摆放一致,例如副屏在主屏右侧时应使用right; - 必要时调整
transform,某些特殊安装方式下可能需要翻转或旋转; - 针对个别应用的异常表现,可以单独加例外规则。
例如:
shadow-exclude = [ "class_g = 'Firefox'", "class_g = 'Gnome-terminal'" ];
opacity-rule = [ "class_g = 'Desktop' A" ]; # 桌面图标保持不透明
这种做法适合那些在跨屏拖动时与阴影、透明度规则冲突的程序。全局参数解决不了时,就应该把问题收敛到具体应用级别。
整体来看,Compton 的多屏配置并不算复杂,真正影响体验的往往就是输出名称、合成后端、同步方式和少量例外规则。把这几组关键参数调顺之后,多显示器环境的稳定性和流畅度通常都会明显改善。











