Как я могу узнать, использует ли система Linux Wayland или X11?

Используемый язык

Я использую C ++ 14 с cmake для моей программы.

Проблема:

Я хотел бы знать, как я могу узнать, использует ли система Linux Wayland или X11 в качестве оконной системы, чтобы иметь возможность использовать оба API в моем исходном коде без конфликтов.
Таким образом, создавая окно с Wayland, когда Wayland доступен и в противном случае используется
API X11.

Примечание: я знаю, что есть XWayland, но я хочу использовать родной X11 и родной Wayland без чего-то вроде XWayland.

РЕДАКТИРОВАТЬ: Чтобы уточнить некоторые вещи: я не хочу проверить на X11 или Wayland во время компиляции, но вместо этого во время выполнения, потому что тогда мне просто нужно скомпилировать код один раз, и пользователю не нужно думать о том, какую версию использовать.

6

Решение

X11 использует DISPLAY переменная окружения, чтобы найти X-сервер. Wayland использует WAYLAND_DISPLAY, Сначала найдите переменную Wayland. Затем, если вы не нашли его или не можете подключиться, переходите к использованию X11.

Не пропускайте проверку WAYLAND_DISPLAY переменная или предположим, что Wayland работает на «wayland-0». Некоторые люди хотят использовать вложенные композиторы, которые вы можете обойти. Другие люди могут запускать Wayland, но они хотят запустить рендеринг X11, удалив переменную WAYLAND_DISPLAY.

6

Другие решения

используйте переменную окружения XDG_SESSION_TYPE

на х11

echo $XDG_SESSION_TYPE
x11

на Wayland

$ echo $XDG_SESSION_TYPE
wayland
3

По вопросам рекламы [email protected]