Есть ли способ узнать, использует ли пользователь Wayland вместо X11, БЕЗ переменных среды? (С)

В настоящее время я работаю с C и SDL2, и мне нужно знать, используется ли Wayland в настоящее время в качестве оконной системы (очевидно, потому что я хочу использовать Wayland, но по умолчанию SDL2 использует Xwayland). ПокаSDL_VIDEODRIVER=waylandработает, не будет работать, если вы находитесь в X11, говоря, что видеодрайвер недоступен. Итак, что я ищу, так это низкоуровневый способ получить текущую оконную систему (возможно, попросив компоновщика?) в GNU/Linux. Он также должен быть неизменяемым, то есть ни приложение, ни пользователь не смогут его изменить, пока сеанс не завершится.

1 ответ

Инициализировать SDL без подсистемы черезSDL_Init(0)затем попросите SDL подключиться к любому сеансу Wayland черезSDL_VideoInit("wayland"); если этот вызов увенчается успехом, вы можете использовать обычныйSDL_Init(SDL_INIT_EVERYTHING)& создание окна.

Хотя для большей надежности вы должны перебиратьSDL_GetNumVideoDrivers()/SDL_GetVideoDriver()список строк для проверки используемой установки SDL был даже создан с поддержкой Wayland.

См. тестовую программу здесь для перечисления и тестирования видеодрайверов.

Другие вопросы по тегам