如何在Wayland环境下获取显示器ConnectorType与ConnectorNumber等连接信息?
在Wayland环境中没有像X11下xrandr那样的统一标准工具/接口,不同 compositor(窗口管理器)提供了各自的实现方式,以下是针对你需要的ConnectorType和ConnectorNumber信息的常用方案:
一、命令行工具方式
1. 基于wlroots的Compositor(如Sway、Hyprland)
使用wlr-randr工具,添加--verbose参数可获取详细信息:
wlr-randr --verbose
示例输出片段:
HDMI-A-1 connected 1920x1080@60Hz Physical size: 527x296 mm Connector type: HDMI Connector: 1 ...
其中:
Connector type对应Xrandr中的ConnectorTypeConnector字段对应Xrandr中的ConnectorNumber
2. KDE Plasma环境
使用kscreen-doctor工具,通过--outputs参数查看详细输出:
kscreen-doctor --outputs
输出中会包含connectorType和connectorId字段,分别对应你需要的ConnectorType和ConnectorNumber。
3. GNOME环境
可通过D-Bus调用Mutter的DisplayConfig接口获取信息:
gdbus call --session --dest org.gnome.Mutter.DisplayConfig --object-path /org/gnome/Mutter/DisplayConfig --method org.gnome.Mutter.DisplayConfig.GetCurrentState
返回的结构中,connectors数组里的type和id字段分别对应ConnectorType和ConnectorNumber。
二、应用程序API方式
1. wlroots系Compositor
使用Wayland扩展协议wlr-output-management-unstable-v1,通过zwlr_output_head_v1对象的以下属性获取:
connector_type:对应ConnectorTypeconnector:对应ConnectorNumber
你需要在代码中绑定该协议,通过zwlr_output_manager_v1枚举输出设备,再获取每个zwlr_output_head_v1的属性。
2. KDE应用
使用KScreen框架的Qt API,通过KScreen::Output类的:
connectorType()方法获取连接类型connectorId()方法获取连接编号
3. GNOME应用
通过org.gnome.Mutter.DisplayConfig D-Bus接口的GetCurrentState方法,解析返回的结构中的connectors字段,提取对应信息。
内容的提问来源于stack exchange,提问作者Andrew Marshall

