很简单,只要全部按照最高 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 即可完成调整,不出意外两块屏幕就能比较正常的工作了。效果如下图: