Evan's Blog
EvanZhu0721 / 公开仓库

SBMS

镜像已同步

SBMS complete the calculation rules for the default logical desktop topology relationship and the physical dimensions of the displays in the Windows multi-screen collaboration system.

上游 GitHub
READ-ONLY MIRROR

README、源码与 Release 已保存到本站;源码视图固定到 commit a37d6c4b。

docs/logical-desktop-size-observation.md
来源 commit a37d6c4b 阅读模式 查看源码

SBMS 逻辑桌面尺寸观察报告

观察背景

观察日期:2026-08-13

观察对象为当前运行的 SBMS 1.4.3 实例,以及其中配置的两块串流虚拟屏:

  • 15.3 英寸,原生分辨率 2880 × 1800;
  • 14.6 英寸,原生分辨率 2960 × 1848。

两者均采用竖屏方向、120 Hz 刷新率、相同的参考显示器和 match_physical_size 尺寸策略。

现场结果

SBMS 当前实际创建的桌面模式如下:

目标屏幕 SBMS/DisplayConfig 桌面模式 Windows 200% 缩放后的逻辑尺寸
15.3 英寸 1770 × 2832 885 × 1416
14.6 英寸 1848 × 2960 924 × 1480

14.6 英寸虚拟屏在两个维度上都大于 15.3 英寸虚拟屏,总桌面像素数也更高。该现象可在当前 Windows 显示拓扑和 SBMS 运行日志中直接观察到,并非界面显示误差。

原因分析

SBMS 不直接按照屏幕对角线大小排列逻辑桌面尺寸。其几何计算会综合目标屏物理尺寸、参考显示器像素密度、目标屏原生像素比例以及输出模式的整数对齐要求。

计算过程首先根据目标屏物理宽度和参考屏像素密度得到理想模式宽度:

理想宽度 = 目标屏物理宽度 × 参考屏每毫米像素数

15.3 英寸配置得到的理想宽度约为 1766.43 像素。其竖屏原生比例 1800:2880 可以约分为 5:8,模式生成步长较小,因此 SBMS 能生成接近理想尺寸的 1770 × 2832 模式。

14.6 英寸配置得到的理想宽度约为 1685.61 像素,原本应当小于 15.3 英寸配置。但其原生分辨率 2960 × 1848 并不是精确的 16:10;旋转后的像素比例 1848:2960 只能约分为 231:370。SBMS 保持这一整数比例并向上取整时,模式只能以较大的步长变化,最终直接得到完整的 1848 × 2960 模式。

因此,物理尺寸计算使用的声明比例 16:10 与模式生成使用的实际像素比例 2960:1848 存在轻微差异。该差异经过整数约分和向上取整后被放大,使物理尺寸更小的 14.6 英寸配置产生了更大的桌面模式。

Windows 缩放影响

当前两块虚拟屏使用相同的 200% Windows 缩放。Windows 只是将 SBMS 已经生成的桌面模式按相同比例转换为逻辑坐标:

  • 15.3 英寸:1770 × 2832 ÷ 2 = 885 × 1416;
  • 14.6 英寸:1848 × 2960 ÷ 2 = 924 × 1480。

因此,该尺寸反转不是由不同的 Windows DPI 或缩放设置造成的,而是在 SBMS 输出显示模式时已经形成。

结论

当前 14.6 英寸逻辑桌面大于 15.3 英寸,主要由以下因素共同造成:

  1. 14.6 英寸屏幕的原生像素数本身更高;
  2. 2960 × 1848 与配置声明的 16:10 存在轻微比例差异;
  3. SBMS 按实际原生像素比例约分并向上取整,导致 14.6 英寸配置的可选模式步长过大;
  4. 该模式最终停留在完整原生分辨率,而 15.3 英寸配置能够生成更接近物理匹配目标的中间模式。

这一现象属于 SBMS 几何模式计算中的离散取整边缘情况,而不是屏幕物理尺寸与 Windows 逻辑桌面之间存在直接的反向关系。

相关实现

  • src/geometry.rs:物理尺寸、参考像素密度和虚拟模式计算;
  • docs/geometry.md:SBMS 几何尺寸模型说明;
  • %LOCALAPPDATA%\SBMS\config-v2.json:当前目标屏参数;
  • %LOCALAPPDATA%\SBMS\logs\sbms.log:当前映射计划与实际显示模式记录。