我如何知道 Linux 系统使用的是 Wayland 还是 X11?

How I can find out if a Linux system uses Wayland or X11?

本文关键字:Wayland 还是 X11 何知道 Linux 系统      更新时间:2023-10-16

>使用的语言

我正在将 C++14 与 cmake 用于我的程序。

问题:

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

注意:我知道有XWayland,但我想使用原生X11和原生Wayland,而没有像XWayland这样的东西。

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

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

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

使用环境变量XDG_SESSION_TYPE

在 x11 上

echo $XDG_SESSION_TYPE
x11

在韦兰

$ echo $XDG_SESSION_TYPE
wayland