I see what you mean, fair point.
Since Kotlin/Native has C interop, you can technically create native Windows apps with it through the win32 APIs, and Linux apps through the GTK library. You can also fo macOS through the Objective-C interop as well.
However, its gonna be a very "raw"and manual experience for now, as there are no good libraries abstracting away the C APIs.
For Linux, there’s a new project aiming to create high-level bindings for GTK called gtk-kn, by using the introspection data in GTK’s C API (GTK is optimized for bindings, and has many officially supported one, making codegen easier). Since GTK is multiplatform, that’s the closest you can get.
Of course any multiplatform toolkit, no matter its language, will not look and feel native out of the box, and GTK is no exception. You can still try to mimic the look and feel of the host operating system as close as possible through custom styles. For now the most mature thing would be to use libadwaita with GTK, to match the GNOME style with good adaptivity as well.
There’s also a proposal to integrate the Compose Compiler / Runtime with gtk-kn for reactivity and declarative UI creation, but it’s just a proposal for now.
When it comes to Compose Multiplatform, I understand the concern about it being mobile-focused, but Compose is modular, and the real “mobile” part is compose-material, which is an implementation of Material Design. If you remove that (and it’s encouraged for apps with custom design systems), you can build your own on top of compose-ui and compose-foundation, which are unopinionated for the most part, and build a set of desktop-centric components (I’m actually in the process of doing just that, implementing the Adwaita design system for Compose, will hopefully open-source soon).
If it’s performance that matters, that’s a hairy subject when it comes to UI, as it’s all very relative. UI in general doesn’t tend to be too much of a problem (unless you’re into embedded development, but that’s a different conversation), as it delegates the tough stuff to the GPU anyways, even if you use the JVM for example (e.g. Compose uses Skia under the hood). The other important logic is what matters.
So yeah, trying to get native controls everywhere would mean writing different code for every OS, but if that’s what you want, you can try to glue things together to get it to work. My preferred approach in this case would be to use the languages that are officially supported by each operating system, and then do interop with a shared Kotlin/Native module for all business logic, but IDK how doable is that to be honest. Even in Rust, a systems language with high-level ergonomics, there’s no one-size-fits-all solution, and all their “native” multiplatform UIs use custom drawing, with some mimicking the host OS’s style. Otherwise, the paradigms of each platform are so different which makes getting good, true native UIs from the same code very hard if not impossible.