简单(粗暴),只要全部按照最高 DPI 去渲染,然后在低分辨率上压缩后呈现就行了。这种方案下低 DPI 的屏幕会被“超采样”,会有一点点模糊,但是比起让高分屏呈现低分辨率画面的方案,损失不算大。

具体怎么做的话,比如我这里是两个 27 寸的显示器,分别接驳在 DP1 和 HDMI2 上(可以使用 xrandr 查看)。其中,DP1 是一块 Dell 的 2K 显示器(2560x1440),HDMI 2 是联想的一个 FHD 显示器(1920x1080)。屏幕的位置关系的话,FHD 在左侧,2K 在右侧。

首先你需要禁用窗口管理器自带的多屏幕管理器(比如 KDE 有 Kscreen2),如果没有那就不用管了。之后,在 ~/.xinitrc ,或其他等效的 X11 启动脚本中,中添加以下命令:

xrandr \
  --output HDMI2 \
    --panning 2400x1350 \ # 左侧屏幕的渲染分辨率
    --pos 0x0 \           # 左侧屏幕左上角的位置
    --scale 1.25x1.25 \   # 左侧屏幕的缩放倍数
  --output DP1 \
    --panning 2560x1440 \ # 右侧屏幕的渲染分辨率
    --pos 2560x0 \        # 右侧屏幕左上角的位置
  --fb 4960x1440          # 整个 framebuffer 的大小

这里的一些数值都是我这里的参数,不同的多显示器配置可能需要稍微自己算一下,没啥难度的。

完成后,重启 Xorg 即可完成调整,不出意外两块屏幕就能比较正常的工作了。效果如下图:

1555313541445-dual-screen.jpg