在 Linux 下使用 Compton(或已停止维护,常见继任者为 picom) 做多屏(多显示器)合成,核心思路是:让它覆盖所有屏幕 / 指定屏幕的 X Root 窗口区域。下面分情况说明。
很多发行版里:
compton:旧版picom:新版(命令通常是 picom,配置兼容 compton)下面以 compton / picom 通用配置 说明。
如果你用 xrandr 把多个屏幕拼在一起(例如 HDMI + eDP),默认 compton 就已经覆盖所有屏幕,一般无需特殊设置。
xrandr
如果看到:
Screen 0: minimum ...
eDP-1 connected 1920x1080+0+0
HDMI-1 connected 1920x1080+1920+0
说明是一个 Screen,compton 默认全屏生效。
在 ~/.config/compton.conf 或 ~/.config/picom.conf 中:
# 使用 xinerama(多屏)
xinerama = true;
# 或者更现代的方式(RandR)
use-damage = true;
如果你只想在某几块屏启用(高级):
# 指定显示输出(picom 支持)
output = "eDP-1";
# output = "HDMI-1";
⚠️ 旧版 compton 对
output支持不好,picom 更稳。
如果你的多屏是:
Screen 0: eDP-1
Screen 1: HDMI-1
(不是 xrandr 拼起来的)
那么:
compton --display :0.0 &
compton --display :0.1 &
原因:
解决:
xinerama = true;
shadow = true;
shadow-exclude = [
"name = 'Notification'"
];
backend = "glx";
vsync = true;
xinerama = true;
backend = "glx";
vsync = true;
shadow = true;
fade = true;
compton --diagnostics
# 或
picom --diagnostics
如果你愿意,可以告诉我:
xrandr 输出我可以给你一份完全适配你机器的配置。