wayland.fyi

Home of minimalist wayland special interest group.

Many have claimed that wayland 'sucks', the goal of this site is to not only promote and make alternative wayland software which fits the label of 'minimalist', but also to disprove many of the claims people make against wayland.

smaller wayland

A desktop running hevel, hack and hst

it's worth adding some pre-amble that this page is mostly about the pursuit of a smaller and simpler desktop software stack. if that isn't something that you value, most of these points might seem redundant.

in conversations about minimal and simple desktops, X11 is often brought up as the primary example of the simplest unix display server, in contrast to wayland, which is sometimes percieved as less compatible, overcomplicated, and not simple. this is, frankly, not true in the slightest. this page is about rebuking those claims.

in truth, wayland at its core is a very simple wire protocol, nothing more, nothing less. the default implementation sits at just around ~10k lines of code, what is big is what is made on top of it, which usually in mainstream wayland is some sort of compositor library based around GLES or vulkan (although pixman backend is sometimes offered it is a second-class citizen), for one, bringing in such big rendering pipelines always results in complex, messy systems that are impossible to understand for mere mortals, or a buttload of protocol extensions, sometimes compositor specific or unstandardized ones, or an xdg-desktop-portal, whatever the hell that is. the point is, because wayland is a modular protocol, it can be built upon in lots of ways. some of these ways are exceedingly simple, moreso than X11 and everything that came before it, and some of it is not.

we are offering an alternative to the mainstream wayland desktop offerings. it might not be perfect, but we found omitting 'modern' renderers and some features to be good enough for our workflow. a list of Wayland.fyi Approved ™ software is available at the bottom of the page.

the case of wlroots

wlroots is the most popular library people use to build wayland compositors. in a lot of ways, it does the job it was designed to do. in others, it kinda sucks... but what are the issues?

there are a couple:

some interesting talk and work that could potentially make wlroots suck a fair bit less (while not solving the fact that it's overengineered):

NOTE: despite claiming to be "60,000 lines of code you were going to write anyway." it is closer to 80k and swc proves even then it is not true :P

TL;DR it could be worse, but it could be also way better. still, even a wlroots based compositor is miles better than anything based on the diaster that is the X.org server...

the case of X11

A graphic featuring a rising sun behind a hill with Wayland 'w' logo on it, featuring text saying 'as the Xorg Sun sets, Wayland rises not to go back down byt to be the new Sun. The sun that earth depends on.'

All graphics on UNIX are bad, that's because modern UNIX is barbaric technology, but X11 is the worst offender of being barbaric.

full X11 stack is millions of legacy lines of code, workarounds, portability to systems that don't exist anymore, and wasn't even a good design in theory. they made a library called libXfixes. when you need a library just for fixes you know it's bad. or libXfont2... Xorg is so old they made a sequel to the font library! The reason that these need to exist is that the X11 is not modular, and needs baked-in extension libraries to add new functionality. these libraries need to exist because X was designed so long ago, the original designers did not for see these use cases, nor did they design the server in such a way that it could be easily extended. these libraries on X exist in 2 ways: client side helper libaries, which X11 client program link against, which help them communicate these extensions to the corresponding server-side code. this server side code (obviously) cannot be changed at runtime: to add new functionality to X, you always need to expand the X server.

this is in stark contrast to wayland, which does not implement the display server at all, but simply provides a way for clients (your graphical programs) to communicate with compositors (not the same as X compositors, more like the X11 server. more on that in the next section.). because this protocol was designed by the maintainers of X11, with the the hindsight of all the problems they faced it is fully extensible in such a way that almost any new features can be added to wayland-based display servers without much effort. the server exposes a registry of versioned global protocols, which the client can bind too. on X, the client has to ask for the extension by name, rather than the server exposing what it has to the clients. extension versioning also differs between the two. on X, there is some versioning, but it's typically implemented inside each extension. on wayland, each interface is always versioned as part of the standard. this is much more robust.

on top of that, have you ever tried to look at the source code of any of the main components of X11? it's not a pretty sight, to say the least...

Essentially (for better or worse) it’s not the 1990s anymore.

X11 client code often looks simpler because there is a lot that you do not see (nor do you want to), and even more which you will never use.

Wayland makes what you do more explicit rather than relying on crusty abstractions (and boy, are they crusty).

it's also much smaller and easier to extend.

overall, X11 is the antithesis of small, minimalist software.

misinformation

Often in discussions around wayland vs X, various weird, wonderful, and incorrect claims appear, this disproves them, you can link directly to any of the sections below

# "Wayland is a display server"

No, wayland is a communication protocol for 'clients' (graphical programs) to communicate with 'compositors' (somewhat analagous to display servers, of which there are multiple wayland-based implementations)

# "Compositing on X and Wayland is the same thing."

Compositing is not fancy animations or transparency, in effect it usually means drawing just what you need, where you need. X11 Compositors are separate from the X server, runs as a client, redirects all windows into offscreen pixmaps, and re-draws with effects or v-sync. On wayland, there is no unified server. the compositor is the server. it handles all drawing, input management, and compositing the final scene. Although the same word is used, compositing on X and Wayland are not the same thing!

# "X11 is minimal/good/better than Wayland"

Here's a quote about X from 1998, just to illustrate how not only is it not good, it was actually never good!

"X-Windows: ...A mistake carried out to perfection. X-Windows: ...Dissatisfaction guaranteed. X-Windows: ...Don't get frustrated without it. X-Windows: ...Even your dog won't like it. X-Windows: ...Flaky and built to stay that way. X-Windows: ...Complex nonsolutions to simple nonproblems. X-Windows: ...Flawed beyond belief. X-Windows: ...Form follows malfunction. X-Windows: ...Garbage at your fingertips. X-Windows: ...Ignorance is our most important resource. X-Windows: ...It could be worse, but it'll take time. X-Windows: ...It could happen to you. X-Windows: ...Japan's secret weapon. X-Windows: ...Let it get in your way. X-Windows: ...Live the nightmare. X-Windows: ...More than enough rope. X-Windows: ...Never had it, never will. X-Windows: ...No hardware is safe. X-Windows: ...Power tools for power fools. X-Windows: ...Putting new limits on productivity. X-Windows: ...Simplicity made complex. X-Windows: ...The cutting edge of obsolescence. X-Windows: ...The art of incompetence. X-Windows: ...The defacto substandard. X-Windows: ...The first fully modular software disaster. X-Windows: ...The joke that kills. X-Windows: ...The problem for your problem. X-Windows: ...There's got to be a better way. X-Windows: ...Warn your friends about it. X-Windows: ...You'd better sit down. X-Windows: ...You'll envy the dead."

let me add one more: X-Windows: ...Begging for replacement since 1998.

See also: The case of X11, up above.

# "Wayland and X11 are similar in any way"

very false, the whole model is fundamentally different. X11 is a network-transparent unified display server with window management and composting handled by clients, Wayland is not network-transparent, because it’s not 1985. wayland is also not a display server at all, but a communication protocol for clients to talk to compositors. On Wayland compositors ARE the server, and it handles window management, input handling, etc. on X, clients speak a rich (lit: overcomplicated) protocol that tells the server what to draw in the client window. On wayland, clients simply submit fully rendered buffers to the compositor. you can read more differences in "The case of X11" , up above,

# "Wayland has built in security policy/CSD support/something I don't like"

Wayland does not have much “built in”. What you probably don't like is a compositor or a compositing library. Wayland itself provides very little, and it's trivial to omit the parts you dislike. one thing that's brought up often is input handling. Although inputs on Wayland are usually only sent to the client they are intended for (nooo!!! my keylogger!!), this could also be solved if you so desired. Because the compositor handles all input, it could easily forward said input to all clients.

# "We can save X if we reimplement it in zig for some reason"

Phoenix is a pretty cool idea, but reimplementing the X11 protocol in Zig doesn't fix the underlying issues with X. on top of that, shoehorning wayland inspired security/permissions features into X might be nice in theory, but im unsure how it will be handled in practice, as 'anyone can do anything' is one of the core principles of X. even so, I hope the project can be completed, as it will surely be nice for those users who refuse to let X11 die to have a server that isn't the age of their dad. This also mostly applies to other X11 forks and implementations in other langauges: the core problems with X11, as explained in "The case of X11 section" up above, won't be fixed by re-doing it in another language.

wayland.fyi approved

ok, so most wayland software sucks, X sucks more, what can you do about it? well, here’s a list of some actually simple and well designed wayland software you can use, from libwayland, to compositor libraries, to compositors, to applications. The criteria are:

libraries:

compositors:

utilities:

misc:

contribute

A figure pointing a finger at a viewer with a text 'NEEDS YOU' along the wayland 'W' logo

Do you know or made a program which fits our criteria? Have you find a typo or formating issue, or just want to add something?

Call 1-800-WAYLAND or send a patch to our mailing list on sourcehut

community

#derive on ergo.chat

/derive/ on 9larp forum

#swc on libera.chat (please mind this is the original channel made by mcf, respect everyones time here, low quality discussions should go to #derive)

recommended reading

as seen on...