2025-08-06 (updated 2025-08-08)
SDL3 is a great platform abstraction layer. On Linux, it compiles with support for both X Window System and Wayland. This is great because it makes your app compatible with just about any desktop environment or window manager. In the SDL3 documentation it says that
Wayland is a replacement for the X11 window system protocol and architecture and is favored over X11 by default in SDL3
However, if your compositor does not implement the wp_fifo_manager_v1
protocol SDL will fall back to XWayland. I don't know how this protocol fits into the Wayland ecosystem, but my compositor doesn't have it. Here's how I forced SDL to use Wayland anyway (for c++).
for (int i = 0; i < SDL_GetNumVideoDrivers(); i++) {
if (std::string(SDL_GetVideoDriver(i)) == "wayland") {
SDL_SetHintWithPriority(SDL_HINT_VIDEO_DRIVER, "wayland", SDL_HINT_OVERRIDE);
break;
}
}
This code will explicitly enable Wayland if it is available. Thanks to my friend Riley Beckett for helping figure it out.
Thank you for reading. If you liked this article, check out my homepage.
I don't use any trackers or analytics on this site, so I don't know how many people have read this. It would make me very happy if you would let me know at my email, or follow my GitHub.