Yocto/Poky Weston双屏环境下,如何在副屏启动Wayland应用?
解决方法与调试手段
一、验证有效Wayland Display ID的方法
- 检查XDG_RUNTIME_DIR目录
/run/user/1000下的wayland-N文件是当前活跃的Wayland显示套接字,仅存在wayland-1说明系统中只有一个Wayland compositor实例在运行——双屏是该实例管理的两个输出,而非多个独立的display。 - 确认Weston进程状态
执行命令查看Weston进程数量与启动参数:
若输出仅一个Weston进程,即可确认双屏属于同一compositor实例,无需指定不同的ps aux | grep westonWAYLAND_DISPLAY。
二、调试双屏输出的具体手段
- 查看Weston运行日志
若Weston以系统服务运行,通过系统日志查看输出设备识别情况:
日志中会包含类似以下的输出设备信息,确认两块屏幕被正确识别:journalctl -u weston[weston] Output HDMI-A-1 (crtc 0) enabled with mode 1920x1080@60Hz [weston] Output DP-1 (crtc 1) enabled with mode 1920x1080@60Hz - 用weston-info获取实例详情
指定有效display参数运行weston-info,查看当前Wayland实例的所有输出设备:
输出会列出所有可用输出的名称、分辨率等参数,证明双屏属于同一个Wayland display。WAYLAND_DISPLAY=wayland-1 XDG_RUNTIME_DIR=/run/user/1000 weston-info - 指定应用到特定屏幕显示
无需切换WAYLAND_DISPLAY,可通过以下方式让应用显示在目标屏幕:- 若
weston-simple-egl支持,使用--output参数指定输出设备:WAYLAND_DISPLAY=wayland-1 XDG_RUNTIME_DIR=/run/user/1000 /usr/bin/weston-simple-egl --output DP-1 - 通过窗口坐标调整:在扩展模式下,第二屏的坐标通常是第一屏分辨率的偏移值(比如第一屏1920x1080,第二屏的x坐标从1920开始),可通过调整应用窗口的位置参数实现屏幕切换。
- 若
三、关键误区说明
Wayland的双屏扩展模式下,compositor会将多块屏幕合并为一个虚拟桌面,而非创建多个独立的display实例。你看到的wayland-1是唯一有效的display,其他wayland-N不存在,因此指定这些值会触发连接失败的断言错误。
内容的提问来源于stack exchange,提问作者jpx
相关产品推荐
相关产品推荐

