如何确定 Linux 系统使用的是 Wayland 还是 X11?
How I can find out if a Linux system uses Wayland or X11?
使用的语言
我在我的程序中使用 C++14 和 cmake。
问题:
我想知道如何确定 Linux 系统是否使用 Wayland 或 X11 作为 window 系统以便能够在我的源代码中同时使用这两个 API没有冲突的代码。
因此,当 Wayland 可用时使用 Wayland 创建一个 window,否则使用
X11 API.
注意:我知道有 XWayland,但我想使用原生 X11 和原生 Wayland,而没有像 XWayland 这样的东西。
编辑:澄清一些事情:我不想在编译时检查 X11 或 Wayland -time,但而不是在运行时,因为这样我只需要编译一次代码,而不需要用户考虑使用哪个版本。
使用环境变量XDG_SESSION_TYPE
x11
echo $XDG_SESSION_TYPE
x11
在韦兰
$ echo $XDG_SESSION_TYPE
wayland
X11 使用 DISPLAY
环境变量来查找 X 服务器。韦兰使用 WAYLAND_DISPLAY
。首先寻找 Wayland 变量。如果找不到或无法连接,请继续使用 X11。
不要跳过检查 WAYLAND_DISPLAY
变量或假设 Wayland 在 "wayland-0" 上是 运行。有些人想使用嵌套的合成器,你会绕过它。其他人可能是 运行 Wayland,但想通过删除 WAYLAND_DISPLAY 变量来强制 X11 渲染。
我在运行级别 3,但在图形中 shell,我的 $XDG_SESSION_TYPE 是 'tty'
使用的语言
我在我的程序中使用 C++14 和 cmake。
问题:
我想知道如何确定 Linux 系统是否使用 Wayland 或 X11 作为 window 系统以便能够在我的源代码中同时使用这两个 API没有冲突的代码。 因此,当 Wayland 可用时使用 Wayland 创建一个 window,否则使用 X11 API.
注意:我知道有 XWayland,但我想使用原生 X11 和原生 Wayland,而没有像 XWayland 这样的东西。
编辑:澄清一些事情:我不想在编译时检查 X11 或 Wayland -time,但而不是在运行时,因为这样我只需要编译一次代码,而不需要用户考虑使用哪个版本。
使用环境变量XDG_SESSION_TYPE
x11
echo $XDG_SESSION_TYPE
x11
在韦兰
$ echo $XDG_SESSION_TYPE
wayland
X11 使用 DISPLAY
环境变量来查找 X 服务器。韦兰使用 WAYLAND_DISPLAY
。首先寻找 Wayland 变量。如果找不到或无法连接,请继续使用 X11。
不要跳过检查 WAYLAND_DISPLAY
变量或假设 Wayland 在 "wayland-0" 上是 运行。有些人想使用嵌套的合成器,你会绕过它。其他人可能是 运行 Wayland,但想通过删除 WAYLAND_DISPLAY 变量来强制 X11 渲染。
我在运行级别 3,但在图形中 shell,我的 $XDG_SESSION_TYPE 是 'tty'