使用语言

我在我的程序中使用带有cmake的C++ 14。

问题:

我想知道如何确定Linux系统是使用Wayland还是X11作为窗口系统,以便能够在源代码中使用两个API而不会发生冲突。
因此,在Wayland可用时使用Wayland创建一个窗口,否则使用
X11 API。

注意:我知道有XWayland,但是我想使用 native X11和 native Wayland,而不要使用XWayland。

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

最佳答案

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

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

10-08 07:56