To support Wayland, the entire window and event handling stack, along with screen capture and input handling functionality, needs to be rewritten. Compared to Xorg, Wayland has a number of limitations that are part of the new design, such as the inability to position the window, the lack of server-side window decorations on most distributions, the inability to capture screens with native system calls, the inability to capture or inject mouse and keyboard input.

Any missing functionality, where possible, will be replaced with the use of external components, such as PipeWire+Portal. For now, I have already rewritten the entire part relative to window creation, drawing and managing client-side decorations (in place of server-side ones). I also wrote the part about managing pointer and keyboard input, and it’s possible now to change the pointer icon with the system cursor or any image, with animation support as well. Now there is support for Cairo and Vulkan surfaces, with decorations drawn by the graphics context, while the windows can be dragged and resized. Some framework applications are already able to start and function normally, and TMD Viewer works already. The next step is to get the TMD Server up and running, supporting the missing components for screen capture, input handling, and the system clipboard.