Sha*_*gon 6 c++ linux x11 wayland c++14
我正在使用C++ 14和cmake来完成我的程序.
我想知道如何知道Linux系统是否使用Wayland或X11作为窗口系统,以便能够在我的源代码中使用这两个API而不会发生冲突.因此,当Wayland可用时,使用Wayland创建一个窗口,否则使用X11 API.
注意:我知道有XWayland,但是我想使用原生的X11和原生的Wayland而不喜欢XWayland.
编辑:澄清一些事情:我不想在编译时检查X11或Wayland ,而是在运行时,因为那时我只需要编译一次代码,它不需要用户考虑哪个要使用的版本.
使用环境变量 XDG_SESSION_TYPE
在 x11
echo $XDG_SESSION_TYPE
x11
Run Code Online (Sandbox Code Playgroud)
在路上
$ echo $XDG_SESSION_TYPE
wayland
Run Code Online (Sandbox Code Playgroud)
X11使用DISPLAY环境变量来查找X服务器.Wayland使用WAYLAND_DISPLAY.首先寻找Wayland变量.然后,如果你没有找到它或你无法连接继续使用X11.
不要跳过检查WAYLAND_DISPLAY变量或假设Wayland正在"wayland-0"上运行.有些人想使用嵌套合成器,你可以绕过它们.其他人可能正在运行Wayland但希望通过删除WAYLAND_DISPLAY变量来强制执行X11渲染.
| 归档时间: |
|
| 查看次数: |
2170 次 |
| 最近记录: |