gpt4 book ai didi

c++ - 检测 X11 与 Wayland 的有效方法,最好使用 CMake

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:08:52 27 4
gpt4 key购买 nike

因此,我进行了一些 Google 搜索,发现这方面的知识很少。什么是检测是否正在使用 X11 或 Wayland 的有效且万无一失的方法,最好是在编译时使用 CMake?我需要将它应用到我的 C++ 项目中。

最佳答案

接受的答案非常不准确且危险。它只是运行 loginctl 来转储大​​量用户 session ,并用用户名或与当前用户名匹配的其他字符串对每一行进行 gres,这可能会导致误报和多个匹配行。调用 whoami 也是一种浪费。所以它是有害的,而且不准确。

这是获取用户 session 详细信息的更好方法,方法是查询您的确切用户名详细信息并获取他们的第一个 session 范围的 ID。

这是一种与 Bash/ZSH 兼容的单行解决方案:

if [ "$(loginctl show-session $(loginctl user-status $USER | grep -E -m 1 'session-[0-9]+\.scope' | sed -E 's/^.*?session-([0-9]+)\.scope.*$/\1/') -p Type | grep -ic "wayland")" -ge 1 ]; then
echo "Wayland!"
else
echo "X11"
fi

我真的希望 loginctl 有一个“只为特定用户列出所有 session ”的功能,但它没有,所以我们不得不求助于这些技巧。至少我的技巧更强大并且应该总是有效!

关于c++ - 检测 X11 与 Wayland 的有效方法,最好使用 CMake,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45135228/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com