Victoria Brekenfeld: “Hi! My name is Victoria and I have worked on a Wayland compositor library called “smithay” for the past 5 years. Right now I am working for system76 on their new desktop environment, I am member of wayland-protocols and have been contributing to the wider ecosystem. So if you even wanted to learn about the wayland ecosystem and linux desktops, I can and will try to do my best to explain. Even better, I want to give you a reason to use this technology for your projects! The Talk is roughly divided into two parts: First off the background, to get everybody on the same page - What exactly is wayland? - How is it different from X11 in the most important ways? - Technical details! Or how a modern linux desktop is build! - We’ll be talking about the “Direct Rendering Manager”, “EGL”, “libinput”, “Client-side-decorations?”, “nvidia?!”, “WSL?!?” You name it! - THE Showcase! Hopefully you’ll understand a lot about the stack now, but you have no idea what to use it for or feel like nothing of it is relevant for you work? Don’t be deceived, people use wayland in embedded and automotive applications, for automated testing and continuous integration, for virtualization, XR Applications, Game streaming, Remote Computing, …! Let me show you, what weird things did people build with it and let’s unlock more of its potential together!”
The first concrete example mentioned (18 minutes in) seems to neatly sum up the difference in design philosophy.
X11: Four different keyboard input focus modes, where two would suffice.
Wayland: Only one input focus mode, where two would suffice.
Why YOU should write a Wayland compositor
I don’t really know how to do that
Hahaha I also dont think we need more of them. But improving the already existing ones for sure is good!
We DEFINITELY need more of them. There’s Hyprland, Qtile, River, DWL and Sway on the tiling side. There is no real alternative to BSPWM (though river uses a similar config style) or to HerbsluftWM (though I don’t know anyone that uses it, but still), or an alternative to AwesomeWM, or XMonad (though the XMonad devs are willing to pay someone to work on porting XMonad to Wayland)
There’s also Strata, Niri, and to some extent Cosmic. My problem has been that they tend to be very opinionated and limited in the customization of the layouts. Having used XMonad for a long time, I may be a bit spoiled in that regard…
I do think there’s a middle ground for configuration without requiring programming skills, which can be off-putting for many users. After all, most layouts are just a combination of rows and columns. 😛
River is great for layouts. My main issue is that some of ghese projects need furthed stability and others are still adding features, changing and breaking configs, which could make for a painful experience because of version mismatch between distros, for people like me, who constantly hop between a few distros and can’t settle on either of them because none are perfect.
Yeah, lack of XWayland support has been an issue for me. Versioning the config API is something I’ve been considering, or at least ensuring backwards compatibility.
I’d be interested in other ideas or pain points you’ve experienced. Not to suggest I’ll ever have something production-grade, but my hope is to get to a point that I have a working daily driver and potentially share it with others.
I don’t really know how to do that
- Install rust
- Create a directory somewhere
- Change to that directory
- Run: cargo init
- Open a text editor and do stuff in there
- Save the file(s)
- Run cargo build
- Run the executable
Hope it helps!
I actually started working on one a few weeks ago. It’s amazing how easy it was to get the basics working. Still a long way to go, but it’s a fun project in the meantime and hopefully can result in something that supports my desired flow.
Respectfully, I will just leave it to those who know how it works and are generally better at coding. My result would anyway be subpar, unstable and inefficient.
It can be useful to try to make one just to learn how it works
If you want to tweak something that works out of the box, maybe check-out Louvre:
https://github.com/CuarzoSoftware/Louvre
It is C++ which some will love and some will not.
Getting to a few fully working Wayland compositors has been a long and painful journey. Once we get there though, I am pretty excited to see the innovation it enables.
The talk mentions that there was effectively only one implementation of X due to the complexity. There are already quite a few independent implementations of Wayland. That still kind of sucks for the moment but at some point it is going to be awesome.
Or cosmic-comp, based on her work on smithay, also fully working!
Lol, wtf?
Here is an alternative Piped link(s):
https://piped.video/watch?v=FUif2GxwgBc
Piped is a privacy-respecting open-source alternative frontend to YouTube.
I’m open-source; check me out at GitHub.