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