I made a mistake in understanding how wayland protocols' version numbers are reported. This commit allow checking wayland interface without requiring a version number.
Wayland idle timer use ext_idle_notifier_v1 Wayland protocol to be notified of user idle status. It will only run if the compositor implement the protocol. For ext_idle_notifier_v1 version 2, get_input_idle_notification() only tracks user input, which I think is more appropriate.
Due to the usage of qt_generate_wayland_protocol_client_sources() in CMake to generate Wayland client code, Wayland idle timer can only be compiled using Qt 6. We could take relevant part from KDE's ECM FindQtWaylandScanner, but that seem cumbersome.
With Qt 6.5 and later, we have QNativeInterface::QWaylandApplication for low level Wayland access. For older Qt, QPlatformNativeInterface is required. QPlatformNativeInterface is a private class from Qt::GuiPrivate, which isn't idea. But it was how KDE did it in the past.
FindWayland.cmake and FindWaylandProtocols.cmake are modifed version of KDE's ECM, with unused bits removed.