In Wayland you have multiple ways to render windows, not just the XDG top level window. It works via surfaces, and here is a list I've discovered so far:
- XDG Top Level Window
- Child Window
- Popup Surface
- Layer surface (like task-bars, shell overlays)
- Subsurface (region in another surface)
- IME Panel Surface (surface that follows text cursor)
There probably is others too.It is diffifcult to find high-level toolkits that support all of the above.
https://avaloniaui.net/blog/bringing-wayland-support-to-aval...
That and studying smithay code.
But when you try to do so, you see there's very little documentation and help out in the open, and by the commit history, you can see there's been like three dozen people who have ever contributed to the project.
The rate of code change and the obscurity means the knowledge simply does not build up over time.
So it's unclear how to fix an issue you've encountered, or add a feature, and if you've done so, how to get your changes merged.
* Core protocol drawing (lines, rectangles, arcs, the classics)
* XRender for compositing and alpha
* XShm for shared-memory blits
* GLX if you felt like bringing a GPU to a 2D fight
* XVideo for overlay video paths
* Pixmaps vs Windows, because why have one drawable when you can have two subtly different ones
* And of course, indirect rendering over the network if you enjoy latency as a design constraint
- Modern DX and old Direct Draw games often was a clusterfuck in order to keep them running fast in Windows 8 and up.
- XVideo and overlay video for Windows were 100% the same; green glitches on drawing, blue screens on screnshots et all.
- Same issue in Windows with pixmaps.
- RDP was fine there, even Gnome adopted it. But I prefer 9front's transparency, you don't need to get everything from the host to use it, with 9front you can just get the device you want, you can decouple auth from the GUI and a lot more, even the network and audio devices. Much fetter than X11's remote setups, VNC, RDP and whatnot.
It's not particularly complicated, and certainly a lot simpler and cleaner than X11 in almost every way.
The reality of the situation is that there's sort of a hateful half-knowledge mob dynamic around the topic, where people run into a bug, do some online search, run into the existing mob, copy over some of its "arguments" and the whole thing keeps rolling and snowballing.
Sometimes this innocent, like OP discovering that UIs are actually non-trivial and there's different types of windows for different things (like in really any production-grade windowing system). So they share their new-found knowledge in the form of a list. Then the mob comes along and goes "look at this! they have a list of things, and it's probably too long!" and then in the next discussion it's "Did you know that Wayland has a LONG LIST OF THINGS?!" and so on and so forth.
It's like politics, and it's cyclic. One day the narrative will shift again.
The mob will not believe me either, for that matter, but FWIW, I've worked on the Linux desktop for over 20 years, and as the lead developer of KDE Plasma's taskbar and a semi-regular contributor to its window manager, I'm exposed to the complexity of these systems in a way that only relatively few people in the world are. And I'd rather keep the Wayland code than the X11 one, which I wrote a lot of.
Perhaps https://github.com/X11Libre/xserver can revive the older ecosystem. Almost nobody writes for wayland. About two years ago I tried to switch, then gave up when I realised how many things are missing on wayland. And then I noticed that barely anyone wrote software for wayland. It feels like a corporate advertisement project really. GNOME and KDE push for wayland now.
If you write software using GTK, Qt, or FLTK then you are writing Wayland software.
The majority of Linux desktops are Wayland at this point. Nobody writes software for them?
The Steamdeck uses gamescope which is Wayland. GNOME, COSMIC, Budgie, Niri, and Hyprland are not just Wayland but Wayland only. KDE will be Wayland only soon. Cinnamon is switching to Wayland. XFCE is writing a Wayland compositor.
What percentage of Linux desktop users are not using one of the above? 10 at most?
not to mention GTK and Qt, both supporting wayland.
Most software vendors never talked to X directly either. You seem extremely misinformed
I was looking for the line: Microsoft sponsored us. Even then I would not understand why they would spend effort on a doomed project. I know Avalonia being a small company has a big task ahead of porting Avalonia UI to Wayland, which makes porting MS semi-abandonware all the more confusing.
But since these people aren't idiots, I gladly assume I am missing something.
In other words; Avalonia is coming for MAUIs turf.
Microsoft politics. Someone who’s aware please confirm but I want to say it’s something like…
Different orgs jockey for power and you can see when the wrong orgs and initiatives influence different products.
What I can’t tell is whether it’s established teams scrambling to stay relevant. Or if it’s new teams and products imposing their influence where they shouldn’t.
But the Windows team doesn’t want to see Linux get traction, so they’ll do their part to hamper any OS shims or any native-first functions in Office.
The Office org wants to expand beyond Windows but for political reasons, the only add-in tech without platform lock-in is JS so they ally with the Azure/Cloud team to allow third parties to create add-ins.
Because of this partnership, rather than making a streamlined add-in store, publishers are required to learn the full complexities of Entra and the Partner centers.
I imagine the UX and .NET orgs are caught in similar political battles; but without any direct income or product to influence.
If I had to guess, they were in the Windows team at one point; but with the platform-independent initiatives (good) it’s been a shitshow over the past 20+ years for desktop developers (bad).
Notice how many languages DevDiv supports nowadays, see languages dropdown on https://devblogs.microsoft.com.
Thus even .NET has to fight for internal relevance, most Azure contributions to CNCF are in Go and Rust, they even have a "Rust for C#/.NET Developers" (https://microsoft.github.io/rust-for-dotnet-devs/latest) tutorial.
Azure is also mostly doing Azure Linux nowadays, even if Azure Host OS is still Windows based.
Source: I made it up.
I recommend everyone to ignore all experiments, and go straight for AvaloniaUI, as it is quite similar to wpf, actively devloped and cross-platform. The only downside I see is that Wayland is still in progress yet.
When COM rolled out, every product was very much on board.
The need for Maui in-house is for…what?
By the way on macOS MAUI uses Catalyst as backend, not native macOS APIs.
Also it is kind of interesting that Miguel de Icaza, nowadays completely switched into Swift ecosystem, and is the responsible for making game development on iPad with Godot a reality. Or porting old .NET ideas of his into Swift.
What does this mean? Mac Catalyst is native. It’s just a thin bridge between iPhone’s UIKit and AppKit on MacOS, which are really the only two divergent frameworks in the entirety of the massive Apple SDK.
Also they aren't the only frameworks that are divergent, although that is another discussion.
Nowhere near production ready, got it.
We don’t expect this to graduate from a preview until November. There’s plenty of time to sort out Accessibility.
Accessibility doesn't only mean easing access to your application to people with disabilities. Accessibility makes it also easier for people with temporary or situational impairment to use your software. A simple example that comes to mind is single finger zooming on map applications, where you tap once and then hold-swipe up/down to zoom in/out, which makes it easy to be used with one hand. I know it's difficult to relate to people with permanent disabilities, but we can definitely relate to situational ones where we wish something was easier to use with one hand because the other was busy. Now imagine if it's the only way you can ever use it :-)
Ultimately, it leaves out no one and benefits everyone.
So am I understanding correctly that Avalonia, the OSS project, is contributing an AvaloniaUI backend upstream to Microsoft's MAUI library, which is itself OSS? Ergo, someone using MAUI can now use its integrated AvaloniaUI backend to target platforms that were previously not available using MAUI, mainly Linux?
Happy to be corrected if I'm misunderstanding something.
You won't need the paid offering if you build your stuff in AvaloniaUI directly.
[0] https://github.com/AvaloniaUI/Avalonia.Controls.Maui/blob/ma...
Why? Avalonia is a spiritual successor to WPF but FOSS and cross-platform.
> Avalonia renders through Skia compiled to WebAssembly
I'd guess it builds on Skia CanvasKit and renders to an HTML Canvas element.
I’m not sure platforms like Maui are necessary anymore.
I did note the comment “if you don’t want Liquid Glass” as a direct response to GenAI native development.
Time will tell.
Just like IBM, Google, Facebook, Oracle and other so beloved FOSS companies.
.NET has been on Linux for ages.