我如何知道 Linux 系统使用的是 Wayland 还是 X11?
How I can find out if a Linux system uses Wayland or X11?
>使用的语言
我正在将 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
相关文章:
- enum是C++中的宏变量还是整数变量
- 如果我只是不访问queue_front节点的子节点,而是将它们推到队列中呢?还是BFS吗
- 在命名空间中定义函数还是限定函数
- 架构决策:返回std::future还是提供回调
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 异常属于C++中的线程还是进程
- 在决定是通过参考还是通过价值时,尺寸真的是一个问题吗
- 如何在C++中确定文本文件中的元素是字符还是数字
- 返回值优化:显式移动还是隐式
- 是什么原因导致它无法编译?它是声明签名还是在函数本身的实现中
- 为什么需要知道一个类是平凡的还是有平凡的构造函数
- 强枚举类型定义:Clang Bug 还是 C++11 标准不确定性?
- 'string.assign(string.data(), 5)' 是明确定义的还是 UB?
- 在哪里放置我的函数?进入我的母语 Gui 还是进入我的演示者?
- 在这种情况下,我真的复制了字节还是复制了字符?
- node-gyp 的先有鸡还是先有蛋的问题:指向依赖项中的头文件
- CIN是逻辑1还是0?
- i++还是++i更适合这个程序?
- 我应该将外部标头放在 .h 文件还是.cpp文件中?
- 我如何知道 Linux 系统使用的是 Wayland 还是 X11?