我怎么知道Linux系统是否使用Wayland或X11?

时间:2017-08-06 20:06:33

标签: c++ linux c++14 x11 wayland

使用的语言

我在程序中使用C ++ 14和cmake。

问题:

我想知道如何知道Linux系统是否使用Wayland或X11作为窗口系统,以便能够在我的源代码中使用这两个API而不会发生冲突。 因此,当Wayland可用并以其他方式使用时,使用Wayland创建一个窗口 X11 API。

注意:我知道有XWayland,但是我想使用原生的X11和原生的Wayland而不喜欢XWayland。

编辑:澄清一些事情:我想要在编译时检查X11或Wayland ,但而不是在运行时,因为那时我只需要编译一次代码,它不需要用户考虑使用哪个版本。

3 个答案:

答案 0 :(得分:7)

X11使用DISPLAY环境变量来查找X服务器。 Wayland使用WAYLAND_DISPLAY。首先寻找Wayland变量。然后,如果您找不到它,或者您无法连接,请继续使用X11。

请勿跳过检查WAYLAND_DISPLAY变量或假设Wayland正在" wayland-0"上运行。有些人想使用嵌套合成器,你可以绕过它们。其他人可能正在运行Wayland,但希望通过删除WAYLAND_DISPLAY变量来强制执行X11渲染。

答案 1 :(得分:4)

使用环境变量XDG_SESSION_TYPE

on x11

echo $XDG_SESSION_TYPE
x11

on wayland

$ echo $XDG_SESSION_TYPE
wayland

答案 2 :(得分:0)

我在运行级别3,但在图形外壳中,我的$ XDG_SESSION_TYPE是'tty'