为何在Ubuntu GNOME与i3环境下执行xrandr显示列表不同?
问题背景与疑问
- 我使用一台System76 Ubuntu笔记本电脑
- 尝试让2台外接显示器与该笔记本正常配合工作
- 未外接显示器启动时,所有环境下运行均正常
- 启动至Ubuntu GNOME桌面时,显示器可正常工作,支持正确的最大分辨率等
- 启动至i3时,暂无法使其以正确的最大分辨率正常工作(此为独立问题)
- 在Ubuntu GNOME桌面下执行
xrandr,仅显示2台标注为WAYLAND0和WAYLAND1的外接显示器(与实际情况相符) - 在i3下执行
xrandr,则得到一长串其他显示名称(如e-DP-1、DP-1-1等)
疑问:基于上述情况,为何xrandr在这两种不同环境下表现不同?
原因解析
这本质是显示服务器协议差异导致的:
Ubuntu GNOME默认使用Wayland显示服务器:
Wayland是新一代显示协议,架构和传统Xorg完全不同。xrandr原本是Xorg专属工具,在Wayland环境下仅通过兼容性层模拟运行,它不会直接枚举硬件级别的显示端口,而是显示Wayland compositor(即GNOME Shell)提供的逻辑输出节点,所以你看到的是WAYLAND0、WAYLAND1这类标识,对应系统当前激活的显示输出。i3窗口管理器依赖Xorg显示服务器:
常规版本的i3原生不支持Wayland,运行时依赖传统Xorg显示服务器。在Xorg环境下,xrandr直接与X服务器交互,会枚举显卡硬件暴露的所有物理显示端口(包括未连接显示器的空端口),因此会列出e-DP-1、DP-1-1这类对应硬件接口的名称。
简单来说,Wayland下的xrandr呈现的是“上层逻辑输出”视图,Xorg下的xrandr呈现的是“底层硬件端口”视图,这就是两者输出差异的核心原因。
内容的提问来源于stack exchange,提问作者user1460739
相关产品推荐
相关产品推荐

