Programs running graphically (Firefox, your file browser, etc.) need a way to tell the system "draw these pixels here". That's what the display server does; it takes all these applications, works out where their windows are and manages that pixel data.
XOrg has historically been the display server in common use, but it's very old and very cobbled together. It generally struggles with "modern" things that must people expect today. Multimonitor setups, vsync, hdr and all that. They work, but support is hacked together and brittle.
Wayland is a replacement for XOrg that was designed from scratch to fix a lot of these issues. But it's been an uphill battle because XOrg is the final boss of legacy codebases.
tl;dr They're both software that manages drawing pixels from applications to the display.
So it's software that handles software wanting to display things on the screen. Because having each piece of software do it itself would be not only chaos but a massive security concern. And it's a big deal because it fixes (by replacing) the old software with something that's easier to work with than the old ways of doing things (due to all new code that's not spaghetti that's hacked together over decades).
Because having each piece of software do it itself would be not only chaos but a massive security concern.
Not really, the main point is that (most) apps don't know where they are on the screen, whether they're minimized, on the active workspace, ... and they don't care either. That's the responsibility of the window manager.
The app tells the display server "I need a window to display these pixels" and that's it. And the window manager, well, manages these windows.
On the topic of security, X11 doesn't handle security at all, that's one of the main issues. So any graphical app can read the other windows' pixels, grab everything you type, everything you copy, ... OTOH Wayland isolates apps so they can't do that by default. Apps that really need to (screenshot apps, ...) can use "portals" to ask for these permissions.
But it's been an uphill battle because XOrg is the final boss of legacy codebases.
Also because Wayland forces every compositor to be an unmodifiable monolith instead of following the UNIX philosophy. For example I'm currently running i3 inside of Xfce because the de, wm, compositor, and every other part are doing their own thing and can be replaced. With Wayland I'd need to fork the compositor and spend a ridiculous amount of time on something that's trivial in xorg.
And let's not forget the garbage pile of tools that got abandoned a week after release because Wayland introduces breaking changes on a regular basis. You want unified shortcuts across multiple compositors like with sxhkd? Tough luck, the only tool was abandoned after the first version and doesn't work anymore. On the other side you've got 15 rofi alternatives you need to dig through to find out which ones are still maintained and might work on your device.
On top of that Nvidia GPUs have so many issues, and while that's not solvable by Wayland, it's still a major issue that still hasn't been fixed after 15 years, but might maybe soon™.
Finally, the security improvements have gave me nothing but headaches whenever I tried using Wayland. No matter the distro or compositor, screen sharing and recording never worked for me. Give permissions, share whole screen or just window, it's either black or the program is not showing I'm trying to share ate all.
You can't blame it all on xorg when Wayland is still simply far worse for a large part of the community.
The Wayland protocol board can never agree on anything. It takes them years to decide to consider adding something.
Also Wayland is just a protocol at the end of the day so implementation is up to the software developers. I also think that the Unix philosophy holds back software that could be good. You shouldn't prioritize it over good battery life and low overhead.
Q1: No, it does not require X. But some software even if not graphical, requires X libs for whatever reason (e.g. Using Qt)
Edit: to answer Q2: I don't think there is technically a way to interact with the system without a TTY but thats technicalities. Your more practical answer is to use SSH to log in and interact. This is how most IoT things work which run Linux and have no display capability at all.
Wayland isn't software as it is just a set of protocols. The desktops and window managers take the place of X on Wayland. That's why it has better performance.
In the past we only had text terminals without a graphical interface ~1990 (sh / bash / tty). so the display server (Xorg / formaly known as X11) was born. it's a piece of software that allows programs to not only print text to screen but to draw complex geometrical shapes. This allowed for gui programs that use frameworks like qt or gtk or motif... to draw buttons and shit using Xorg.
For having mutliple "windows" / "programs" running they invented a window manager, that drew a border around the windows with some min / max /close buttons and the modern gui was good to go. btw. the next step are desktop environments like kde or gnome but that would be too much for this post.
Back to display server (Xorg) and window manager (kwin, mutter, metacity, dwm, awesome, i3...):
the design of xorg is super old and has many shortcomings like hdr, variable refreshrate or security: every window can read the contents of or produce input for other windows which is a nightmare for todays security standards.
So wayland was invented to use state of the art concepts and design. Here comes the big problem: State of the art concepts required wayland to not be a display manager like Xorg. wayland is more like a protocol that defines how to draw windows, resize and close them or how they are allowed to talk to each other. Since wayland is only a protocol+ the window manager now needs to do the heavy lifting of coordinating this protocol, drawing and stuff like that, which in turn results in way less window managers that support wayland because they are complex as hell.
Since modern software needs to support a heck of a lot of different ways for applications to interact with each other rewriting these functionality for wayland needs time. thats the reason desktop sharing/recording or muting your mic with a keyboard shortcut when the webex window was not in focus wasn't possible at first. new solutiones needed to be developed for that (pipewire for example). Many programs would run in an xorg window that was implemented as a wayland window (xwayland) which made transitioning to wayland much easier but introduced new problems.
At the moment we are in a transitional phase. many programs already work without problems, but many software still require features wayland doesn't have and might never implement. Everyone needing that software is hating on wayland. everyone needing variable refreshrate, fractional scaling or security prefers to use wayland. And the fighting begins.
Disclaimer: There might be errors, simplifications or misunderstandings on my side but thats the way i understood if. Feel free to correct any mistakes on my part.
XOrg and Wayland are two different programs that serve the same purpose, which is to act as a sort of middleman between the graphics driver, the window manager(s), and the many programs you're running.
XOrg is ancient. Early 80s ancient. It's been added to since those days as need arose, and is therefore full of weird messy legacy stuff and jury-rigs. But it is also what Linux has used for a very, very long time, and is therefore like. Ol' Reliable workhorse, yanno?
Wayland is a new and bold step that rewrites the entire system from the ground up to address the shortcomings of XOrg (don't ask me to specify, I actually don't know), it has, however, been criticised for not having (and devs downright not wanting it to have) certain features that XOrg has. But it can also run applications that expect XOrg with a thing (jargon escapes me) called XWayland.
Personally I've used both. And... Uh...
Wayland was a bit faster and smoother maybe? But it also caused some specific applications to misbehave and get all crashy-buggy. But that was a personal experience and may well have been my fault.
Wayland is not a single program. It’s specification and set of basic client/server libraries that can be used to implement a compositor. Compositor are implementations of the Wayland protocol and there are multiple such programs that are different one from another, but generally serve the same purpose and are compatible with the same clients. General idea behind Wayland compositor is that it blends images from different clients into single frame that is then sent to kernel
Wayland is a lot more secure and the way it handles clients is a lot more sane in todays age, but thing is, it is a hell of a lot more complicated if you come from a window manager background, and your choice of applications is incredibly small. Sure you can run a lot of your stuff in XWayland, but what exactly is the point of running wayland if you are going to run less secure X apps with 94% of the same vulnerabilities?
X is less secure, but the security of your system from the outside is far *faaar more important than the security on the inside. Only when an intruder actually infiltrates your system do you have a real concern, and that's only talking about remote access. Physical access given enough time is root access.
A lot of people tout X as being considerably more bloated than wayland which is why the project is basically in maintenance mode, wayland is definitely a lot quicker than X, but X has many reasons including support from literally every single linux application out there, something wayland is very likely never going to acheive even with XWayland.
what exactly is the point of running wayland if you are going to run less secure X apps with 94% of the same vulnerabilities?
When running Wayland, one X server is started per X application. So that application won't be able to e.g. keylog others.
I personally don't care about security here, it's all about a flicker free Multi-monitor experience with different refresh rates per monitor. X just can't do that under any circumstances.
This is false. X is not less secure than Wayland. It does have a different security model, which can become insecure if you misuse it. I don't think people really care about situations where multiple user accounts access the same display.
In my opinion, the benefits of xdotool far outweigh any benefits gained by Wayland's security model. It's impossible to make xdotool in Wayland, because of its security model.
Waland is the British half of the mega corp Waland-Yutani. Sometimes called Wa-Yu, or simply "the company"
Founded by Charles Bishop Wayland, the totally not evil billionaire industrialist, Wayland LLC was known for energy production, computer technology, and planetary terraforming before it was acquired in a hostile takeover by the Japanese Yutani corp in 2099.
The system that Linux uses to draw anything on the screen (showing the desktop, your windows, their contents, etc) is called a display server.
Linux has been using a display server called the X Window System (or x11) since its inception, but it's ancient and has limitations that can't be fixed without breaking everything that depends on it.
The Wayland compositor is the new display server that will be replacing x11, improving security and adding support for newer features like HDR. It's nearly ready for a full release now, and is already the default for some Linux distributions.
Wayland is not a server or a program. It is a set of protocols implemented by the desktop. Basically your desktop draws to the display and then your apps connect to the desktop
It's a standard to display programs and let them interact with each other. The old way is X11 which is a big program handling all of that. With Wayland every desktop and window manager (like KDE, Gnome, i3wm, Sway, etc) take up the role of Xorg themselves, giving them better control.
Every program has to be changed to work with Wayland. Those that don't run through Xwayland, a program mimicking the old X11 standards on Wayland.
It draws on the screen what programs and the desktop environment tell it to -- including opacity, tiling, clicks, drags, updates, etc. Everything you visually perceive on the monitor is the product of the compositor.
Like you are 5: Wayland is the thing that brings the beep boop from the computer to a screen. It's the son/daughter from Xorg which is old af, and needs to die because no one wants to work on it trillions lines of code.
Wayland is a display protocall. What does that mean? Well, it describes how a program on linux tha displays graphics to a user should work. Examples of programs which do this include kwin, mutter, and sway. It's why you see stuff on your monitor and why when you open an app, it's in a window, which can be moved.
All that along with a good amount of supplementary tools, makes up wayland.
Currently we are transitioning from a 40 year old protocal called X11 which has many issues and few people willing to work on. Wayland offers a codebase without the spaghetti, more security, easier feature development, and to a point backwards compatibility.
That's technically true but not the whole picture since it was missing huge (some would say basic) features I wouldn't say it was really "released"
It was quite a while after that they called it and it's libraries feature of complete. With wm DE integration and multiple monitors coming a while after that, it's only been in the last maybe 5 years it was really usable? A solid option for a lot of people for maybe half that?
I am also a noob, but here is how I think it is:
What your Computer is doing is not what you see.
Until now we were using an oldschool way to display stuff called X11 aka. Xorg.
But this is very old and has 3 problems:
It is very old and hard to improve (code very complex, spagetthi, whatever)
Has security problems (I dont know what or how)
No modern features yet (HDR, and so on)
Because people want to use new display features to work and security, people built this display software code whatever new from scratch. And this is Wayland.
Eli5: Wayland is a new way for Linux to make things appear on your screen, things like windows, graphics, and even your whole desktop.
The old way was called Xorg. It has been around for a very long time, and works pretty well, but the code is veryyyy messy and many developers wanted a new and easier way to make things appear on your screen, so they made Wayland.
(It's debatable how much easier Wayland actually is vs Xorg, but at this point most major distros are switching over to Wayland, so it's a moot point)
Wayland is the replacement for X11, it's getting pretty close to what I consider pretty good, I only have 2 more desires for Wayland, I'd like it to be able to remember where my windows were placed, and I'd like scaling to not suck.
Basically, you should try it, if it works, keep using it; if it doesn't, switch to xorg to see if that fixes your problem.
Wayland is newer, have better support for multi-monitor, and application cannot see what you are typing in other app (so they cannot log your key and send your password to someone else).
In my experience, it's way worse than Xorg. With Wayland, I cannot turn off my laptop screen but keep the external display, and having both monitors on at once can cause crashes when GPU acceleration is needed (videos or games). Somehow this is nVidia's fault, yet it works on Xorg with the same hardware.
If a driver doesn't behave properly, the things that are built on top of it won't work properly either. When that misbehaving driver is not open source, you're at the mercy of the vendor..
It's common knowledge for over a decade that nVidia drivers are problematic with Linux - especially on laptops. Bad drivers are entirely nVidia's fault.
I've been running Wayland with Intel graphics on my laptop and my desktop runs a Radeon. I've had 0 Wayland issues in the past years.
I use a laptop to run home console, and its display can turn off just fine.
I was intentionally vague in my response, since I don't want to confuse the reader. Specifically, the improvement I was referring to is when you run two monitor with different refresh rate or different scaling factor.
Wayland is a modular communication protocol that specifies how a compositor interacts with its clients, as well as a replacement for X11.
Wayland does not aim to provide a commonly used compositor implementation that could be used by everyone.
This modular approach allows for different desktop environments to have their own Wayland compositor implementations that reliability produce the same or virtually the same output based on the communication specifications without the increased challenges of integrating it into existing Desktop Environments or Window Managers as it allows for more flexibility in implementation. As an analogy, it's like if several people were making the same type of sandwich in different ways, as long as the "client" (the application) gets the sandwich they asked for, the specific process doesn't matter.
In contrast, Xorg is a single, monolithic X11 implementation. Due to Xorg's dated, non-modular design, maintaining and extending it's functionality is extremely difficult. Infact, it's lack HDR support to this day is due to its inflexible architecture.
Wayland compositors combine the functionality of a display server, window manager, and compositor into a single component. This simplified architecture is one of the main design goals of Wayland compared to Xorg/X11 where the display server, compositor & window manager are separate components. This approach ultimately streamlines the rendering pipeline where applications render locally and communicate directly with the compositor, cutting out the X server entirely. Wayland's client-side rendering is more modern and cleaner than Xorg's approach.
So you wanna go from home to school. The whole distance/trip can be done on a bus or your moms car. That's a means of transportation. But, now people are creating a train and soon you will have another means of transportation that you can go to school with, by train.
That's it, Wayland is another means of transportation (newer) than the older means of transportation that existed for a long time, x11 or xorg.
The route is how can applications show stuff on a screen, what transport should they use.
I'm guessing it's kinda like: you've got a couple people sitting there wanting to play with Legos and only so much room to play. They don't have direct access to the play area because of security reasons so they have to ask someone to place the Legos for them. Wayland, X11, and Xorg are all different people they can talk to to place the Legos in a way where no one is fighting for space.
So basically it's a new way for programs to negotiate who has what part of the screen?
I'm guessing Wayland is either more feature rich or lighter on resources and that's why it's a big deal?
Yeah, it's a new way that programs use to draw their stuff on the screens.
In the middle usually are other stuff that abstract away that part from normal application development, so in general, most applications don't need to care with the low level thing that is being used to draw their stuff, but there is always somethings that some apps will do to bypass or expect to work in a certain way, so sometimes changes and time are need to adjust those applications to play well with the new way of drawing.
The core idea of why Wayland matters is that it is designed to take advantage of the hardware features and how hardware is designed in this century. On xorg, since it was designed around the architecture and expectations of what people thought things should work in the 70s, it was becoming really hard to add features related to how newer hardware worked. Things like multiple gpus, prime architectures, multiple surfaces/screens with multiple aspect ratios and dpis, varying refresh rates, taking advantage of hardware acceleration for graphics drawing, etc, were all really hard things to do because the code had multiple concepts not applicable to the modern age. So, essentially developers were already bypassing 99% of the internals of xorg architecture and hacking things in a very hard way. They basically decided/experimented with stripping apart all the things they didn't need and didn't matter and reduced it to the most basic and core thing that mattered: "how to push these pixels to that surface".
It ended up being a successful experiment, in that it showed it was possible to do.
Now, in the current world, there are solutions that need to be implemented to bring some features up to speed since the wayland thing is so core and barebones. And this is a good thing. It allows developers and applications to think really hard about what they need to do and how they should do and how things should work across all toolkits and desktop environments. Obviously this takes time to make decisions and ensure everyone is onboard, experiment and reiterate on it until good solutions are found.
This last point is what makes end users frustrated when trying wayland because some things are lacking or not ready yet. For the general use, users without really specific needs, they can already use wayland now, but for others they can't because of their particular needs or specific hardware situation.
If xorg is working for you, then there's no need to worry. If it's invisible to you then most likely you shouldn't care, because the desktop environments are changing their sessions to use wayland by default and most users will not perceive any difference. If users see problems and then notice that it's related to using wayland they can choose explicitly to use the xorg version since it will still work for a while.
It's an entirely different design than X11. It gains features not possible to implement on X11, while losing many features exists in X11. People that like those new features love Wayland, while people that use those missing features hate it.
On one end, in the kernel, there's a big array of pixels that is a picture that gets drawn on your monitor (or monitors). On the other end are a bunch of programs that want to draw stuff, like pictures of your friends and web pages. In between is software that decides how the stuff the softwares want to draw get put into the pixel array. This is Wayland; it was written to replace Xorg, which is what did that job for decades prior to Wayland.
If you understand the concepts of Xorg and window managers, Wayland + a compositor = Xorg + a window manager. Wayland abdicated a lot of work to the compositors, making it simpler and easier to maintain (and compositors more complex and harder). But together, they all do basically the same job. If one of the compositors implemented a network protocol, then you could declare equivalency.
I have been sort of following Wayland's development for over 10 years now. I have been using Wayland for over 2 years now. I have been reading and watching various lengthy arguments online for and against it. I still don't feel like I actually know it even is, not beyond some handwavey superficialities. Definitely not to the extent and depth I could understand what X11 was and how to actually work with it, troubleshoot it when necessary and achieve something slightly unusual with it. I feel like, these days, you are either getting superficial marketing materials, ELI5 approaches that seem to be suited at best to pacify a nosy child without giving them anything to actually work with, or reference manuals full of unexplained jargon for people who already know how it works and just need to look up some details now and then...
Maybe I'm getting old. I used to like Linux because I could actually understand what was going on…
Okay, I’m not OP but a follow up question that occurs to me reading the explanations of what Wayland is, is are there any distros or spins of distros that use Wayland by default?
Fedora uses it by default on KDE Plasma and Gnome. It even removed Xorg support for Gnome (and maybe Plasma. Can't remember). Ubuntu uses it by default with Gnome. Any distro which leaves the DEs on their default settings gets Plasma and Gnome running Wayland by default.
Like you are 5: Wayland is the thing that brings the beep boop from the computer to a screen. It's the son/daughter from Xorg which is old af, and needs to die because no one wants to work on it trillions lines of code.