Skip to content
Waxed Display Server
Waxed Team

Introducing Waxed Display Server & LEF Desktop

A real X11 display server alternative, working together and reducing code duplication. Vulkan and KMS all the way!

After months of building in the shadows, these projects can finally step into the light. Let me introduce Waxed Display Server and LEF Desktop.

This started in late December 2025 as a proof of concept. An experiment. I wanted to play with AI and poke at the Linux display stack at the same time. The timing wasn’t random either. There had been a steady drumbeat of news about Wayland becoming the new mainstream, and I didn’t like that one bit. Then someone in a discussion threw out the classic internet challenge: “If you don’t like it, build something yourself.”

Fine. I’ll do that.

What I wasn’t expecting was for it to actually work. I went in thinking I was just messing around, entertaining the fantasy of building a Wayland competitor. The whole idea seemed stupid. The scope is massive, the domain expertise substantial, and here I was, one person thinking I could take on an entire ecosystem.

Then I got the first pixels on screen, and that changed everything. From there it became a game of stacking one working piece on top of another. Suddenly, almost without realizing it, I had something that could actually compete. A third option in the Linux display server world.

GLM Logo

If you want to try GLM 5 yourself, this link gives you 10% off and throws a little something my way too.

To be clear about what this looks like in practice: I’m a senior C++ developer (both Waxed and LEF are written in C++ too; read the Waxed about page if you’re curious why), and AI gives me superpowers. I can tackle projects that would be impossible for one person simply because the scope is too big. But I’m not generating code blind and shipping whatever comes out. I steer everything, review every line, debug the inevitable issues, and swear at the AI models when they screw things up (which happens more often than I’d like to admit). The AI handles implementation grunt work while I direct, catch mistakes, and iterate. That back-and-forth is where the actual progress happens.

A Word of Gratitude Toward Wayland

This is the only one they’ll ever get from me.

When Wayland started roughly twenty years ago, the Linux display server landscape was different. There was no real option to build something new on top of the graphics stack, and what X11 had created was the best that could be done at the time. The years of effort Wayland invested in rebuilding that stack from the ground up is genuinely appreciated. KMS, GBM, DMA-BUF, atomic mode setting, modern buffer management. These pieces exist because Wayland developers put in the work, and Waxed wouldn’t exist without them. Thank you to everyone who poured time into getting that stack working.

But Why Build Something Different?

Now for the real talk.

Wayland is making its way (and yes, that pun is intended) toward replacing X11 as the default. Initially I was on board with this. The Linux desktop felt stuck, and Wayland seemed like the right path forward.

That optimism lasted until I actually used Wayland day to day.

The issues crept in slowly. KDE Plasma had plenty of them. Hyprland had fewer, but they were still there. Window positioning that should just work became a recurring headache. Session restore (having applications remember where they were when you closed them) somehow became contentious instead of table stakes. Tiling window managers have different expectations, and in my case that worked well enough, but why should I have to change my workflow to accommodate the display server?

Problem solved? Oh hell no. These issues became a strong motivator to at least experiment with alternatives.

What’s in a Name?

Initially “Waxed” stood for “Wayland as X11 Enhanced,” a set of Wayland protocols that would bring back X11 features. Then I discovered how politically charged the Wayland ecosystem is, and how anti-anything-X11 the core maintainers seem to be. That approach died fast.

I kept the name but changed the meaning. Now Waxed means it will tear Wayland off your PC. Yes, it will hurt for a moment, but you’ll be better off without it. And to be clear, I don’t just position Waxed as a Wayland replacement. I want it to be the beginning of Wayland’s end.

What Makes Waxed Different?

If you build a compositor these days, you build everything from scratch. There’s almost no code sharing between projects. Every desktop environment reimplements VSync, VRR, multi-monitor handling, input processing, cursor management, buffer allocation. On and on and on.

Does that sound efficient to you? It sounds wasteful to me.

Waxed tries something different. It’s a plugin architecture where your compositor is a plugin, but not in the Wayland sense where you’re still on the hook for everything. Waxed implements the common features itself: VSync, VRR, triple buffering, multi-monitor support, hardware cursor planes, input handling, DMA-BUF management, Vulkan integration. All built in.

When you build a plugin, you focus on what makes your desktop unique: the compositing logic, the window management philosophy, the visual style. You don’t worry about KMS planes or DRM property negotiation. Any fix in Waxed benefits everyone using it.

The dependency footprint is small too. Vulkan 1.3 is a hard requirement, which means Waxed isn’t limited to traditional desktops. It could power media centers, digital signage, embedded displays. It runs on a Raspberry Pi 5. Any hardware with Vulkan 1.3 support and a working Linux graphics stack is fair game.

How Plugins Work

Waxed doesn’t render anything itself. Instead, it hands a framebuffer to a plugin and says “here, draw on this.” The plugin does its compositing work and hands the buffer back, then Waxed gets it to the screen through atomic KMS commits with proper fencing and synchronization.

It’s a different mental model entirely. Plugin developers think in terms of “what should the desktop look like” instead of “how do I negotiate a DRM plane.”

Enter LEF Desktop

LEF Desktop is the reference plugin that shows what Waxed can do, but it’s also aiming to be a fully functional desktop in its own right. Think closer to tiling window managers than the full GNOME or KDE experience, but capable.

The name has a double meaning. Take K, D, E and increment each letter by one. You get L, E, F. Draw your own conclusions. But “lef” also means courage in Dutch, which felt right for a project attempting this.

LEF pushes the plugin philosophy even further. Where Waxed is a plugin architecture for display servers, LEF is a plugin architecture for desktops. Every component is a plugin: panels, window decorations, notification system, workspace switcher. All replaceable. LEF itself becomes a compositor with a scenegraph.

And that scenegraph is built entirely with shaders. Hardware all the way, animating everything. Why build a flat, static desktop when even cheap 2026 hardware has solid Vulkan support? LEF shows what happens when you stop limiting yourself to decade-old constraints.

Here’s where it gets interesting. Other desktops can take the LEF plugin (which itself consists of a dozen or so smaller plugins) and make their own. GNOME, KDE Plasma, Cinnamon, COSMIC, XFCE, MATE, Budgie, Hyprland, Sway. All of them could live as Waxed plugins instead of standalone compositors.

It gets even better when you think about virtual desktops. The Waxed architecture allows each virtual desktop to be backed by a different plugin. Initially this would just be one plugin across all desktops, working as you’d expect. But imagine this: virtual desktop 1 is LEF, desktop 2 is Hyprland, desktop 3 is KDE Plasma, desktop 4 is GNOME. You’re already logged in, so there’s no permission issue. It’s just a matter of loading a plugin, any plugin.

Try doing that in Wayland.

I also have to admit something. While I aim to start the end of Wayland, this whole system I’m building could technically help it too. Waxed and LEF can do everything Wayland can and more, which means they can also be a subset of it. You could implement a plugin that simulates Wayland and build from there. It wouldn’t even be that hard. Definitely not my intent, but the possibility exists.

LEF is just one plugin for Waxed. Waxed itself can also serve as a login manager, which is a plugin under planning for the future. That would make for a butter smooth transition from the login screen straight into your desktop.

Video of LEF with a tiling setup:

[Coming soon]

Video of LEF with floating windows:

[Coming soon]

Everything animates. Windows don’t appear, they flow. Transitions don’t happen, they glide.

Current Status and Release Planning

A quick note on where LEF stands right now. The current code is very much hacked together and not yet split into individual plugins. The time between now and the start of the more structured bi-weekly release snapshots will first be spent getting some needed features hacked in, then refactoring everything out into their individual plugins. It’s a bit messy at the moment, but that’s early development for you.

Both Waxed and LEF are in heavy development right now, with major changes landing daily. Those videos might make you want to try it, but I’d advise against running either as a daily driver just yet. LEF isn’t ready for primary desktop use. Give it a few months.

That said, I’m happy to accept help and pretty liberal with patches. Use AI to write your code? Fine by me. My only policy is don’t break anything and don’t degrade existing functionality. Beyond that, I’ll probably accept your contribution.

The Road Ahead

Starting in April we enter a rapid release cycle. The goal isn’t to get things into people’s hands, though releases do open that possibility. The real aim is rapidly developing the features needed to make LEF usable while battle-testing the Waxed API to see if its state design actually works.

SnapshotFocus
1 (week 2)New features
2 (week 4)More features
3 (week 6)Bug fixes and performance (the more stable snapshot)

This 6-week cycle repeats until Waxed and LEF reach feature complete status, meaning LEF runs stable and reliably as a day-to-day desktop and Waxed has full toolkit support. Toolkits implement support through Waxed, not LEF, so any desktop built on Waxed gets toolkit support automatically.

Once mature, both projects will follow a release cycle very loosely inspired by the Linux kernel:

WeeksFocusRelease
1-3Breaking featuresAlpha
4-5Late features and stabilizationAlpha 2
6-7Stabilization and bug fixesRC1
8-9Final stabilizationRC2 (final if clean)
10OfficialStable release

The Bigger Picture

This project exists because I think the Linux desktop deserves better than where it’s headed. Wayland’s political baggage and architectural choices created fragmentation and user-hostile design.

Waxed and LEF offer a different path. Common infrastructure shared. Developers focusing on innovation instead of reinvention. Features users actually want, not ideological purity.

Is it ambitious? Yeah. A little crazy? Probably.

But the code runs.


Waxed and LEF are in active development. Check out the code on GitHub (waxed-project, lef-desktop) or browse the documentation.