Как я могу узнать, использует ли система Linux Wayland или X11?
язык
Я использую C++14 с cmake для моей программы.
:Я хотел бы знать, как я могу узнать, использует ли система Linux Wayland или X11 в качестве оконной системы, чтобы иметь возможность использовать оба API в моем исходном коде без конфликта. Таким образом, создание окна с Wayland, когда Wayland доступен и в противном случае использовать Х11 API-интерфейс.
примечание: Я знаю, что есть XWayland, но я хочу использовать родной X11 и родной Wayland без что-то вроде XWayland.
EDIT: чтобы прояснить некоторые вещи: я не хотите проверить X11 или Wayland во время компиляции, а вместо этого во время выполнения, потому что тогда мне просто нужно скомпилировать код один раз, и это не требует от пользователя думать о том, какую версию использовать.
2 ответов
X11 использует DISPLAY
переменная среды для поиска X-сервера. Wayland использует WAYLAND_DISPLAY
. Сначала найдите переменную Wayland. Затем, если вы не найдете его или не можете подключиться, перейдите к использованию X11.
не пропустите проверку WAYLAND_DISPLAY
переменная или предположим, что Wayland работает на "wayland-0". Некоторые люди хотят использовать вложенные композиторы, которые вы бы обошли. Другие люди могут запускать Wayland, но хотят принудительно выполнить рендеринг X11, удалив переменную WAYLAND_DISPLAY.
используйте переменную окружения XDG_SESSION_TYPE
на x11
echo $XDG_SESSION_TYPE
x11
на Вэйланд
$ echo $XDG_SESSION_TYPE
wayland