Есть ли способ узнать, использует ли пользователь 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.
См. тестовую программу здесь для перечисления и тестирования видеодрайверов.