If anyone wants to give an ELI5 or a link to a video that ELI5 I’d be incredibly thankful
I swear that all the stuff I find is like super in depth technical stuff that just loses me in no time flat
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.
Like you are 5: Wayland is a bunch of commands that your computer needs to draw the things that appear on your monitor.
The important part that they are a bunch of new commands. We had old commands for this things, but they were written a long-long time ago, and computers evolved a lot since that, we can’t fix the old commands anymore.
There is only a 4 year difference between the initial releases of wayland and xorg.
I know it’s not comparable due to many factors, but I feel like people overstate how old xorg is compared to how new wayland is.
X1 was released in 1984, 2004 is when x.org foundation was formed.
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.
Okay I think I’m following so far
And the whole “show stuff on screen” thing
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?
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.
What kinds of features does it gain and lose?
The most obvious, user-visible loss of features are applications no longer able to grab/mess with contents of another application’s window. Screen sharing and remote desktop was broken for a long time in wayland until it’s fixed via pipewire recently. Under X11, rendering is free-for-all, where any app is free to do whatever it wants to other app’s window. Heck, you can even tell mpv to play video on a cell in librecalc if you feel like it. Such shenanigans is now impossible in wayland because it’s a big security risk (though I’m not sure if it’s actually exploited in the wild).
The most hyped feature of wayland is better support for high resolution “retina” display. Also, you can use multiple monitors with different dpi/scaling in wayland. IIRC it’s not possible on X11, though you can use xrandr to force the scaling on each monitor, though it’ll result in blurry texts because the scaling is not done natively.
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.
Hope I didn’t make it too complicated now.
The part about negotiation is a bit off-track.
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.
Display Server + Compositor + Window Manager = Wayland Compositor = Implementation of Wayland Protocol
Display Server = Xorg = X11 Implementation
Xorg + Separate Compositor + Separate Window Manger = the X11 equivalent of a Wayland Compositor
Wayland is X11’s little brother.
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.
Aw dang. You beat me to it.
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.
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.
I also think that the Unix philosophy holds back software that could be good.
IMO the UNIX philosophy is the reason why Linux survived. Imagine if every distro had a single DE, or you had issues with pulseaudio and couldn’t replace it with pipewire.
You shouldn’t prioritize it over good battery life and low overhead.
And why would separating functionality into different tools cause you to have a worse battery life? You don’t get to have tlp on other OS because it’s all integrated
XOrg is the final boss of legacy codebases.
Pretty sure the IRS still holds that title.
I think the uphill battle is just making it work.
Not bashing wayland, but it just seems like such a gargantuan task to think through, plan, formalize and implement all the shit a display server has to do with all the whacko edgecases.
For reference, the initial release of wayland was in 2008, nearly 16 years ago. Initial release of xorg was 2004. So xorg had technically only a 4 year lead. (But the amount of man hours per year was probably very skewed in favour of xorg before 2015)
That hill has a name. GNOME. Wayland’s governance on the whole is a fucking disaster (alternatively, the best sitcom you’ll ever see), but GNOME is a particularly malignant growth on the project’s taint, with completely baseless NACKs that have delayed some protocols by months, and missing/incomplete features in Mutter.
Xorg is from 2004, but it is an implementation of X11/X Windows which dates as far back as 1984. Wayland replaces both of that.
Initial release of xorg was 2004
Yeah, but XOrg was forked from XFree86.
And the X11 Protocol was released in 1987. We’re not replacing Xorg specifically as much as we are replacing X11.
Good lord, it’s been 4 lustrum already? My, how the olympiads fly.
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.
It seems an opportunity to ask my stupid questions.
Q1. If I am going to build my minimum linux installation without a GUI, does this require a display manager?
Q2. is there other way to interact with my machine other than tty
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. Youvmore practical answer is probably to just use SSH to log in and interact. This is how most IoT things work which run Linux and have no display capability at all.
thanks, but is there way to address some limitation (e.g. only one came to my mind scroll back.)
Use
screen
?Maybe I don’t understand what you’re after. But 99.9% of Linux systems don’t use X. But none of those are desktop PC’s.
tmux
is your friend.https://wiki.archlinux.org/title/Fbterm can take care of some of the limitations (use TTF fonts, for example) but support in general for nongraphical environments on Linux at the moment is not amazing
How do I check which one my OS uses?
It’s not os based, usually you can switch between the 2 on your login screen. To check if you are in a wayland session, type this in a terminal:
echo $XDG_SESSION_TYPE
The answer should be
wayland
orx11
Huh, it’s x11… Isn’t Wayland also better for gaming? I would want to switch.
afaik with nvidia x11 is still recommended for gaming
The TLDR was really helpful NGL
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).
Am I close?
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.
That’s really interesting and thank you
I think I’m beginning to get it now, and Wayland does sound better than X11 at least
I use wayland, but be warned that there are downsides.
X11 is 40 years old. Which means that even though it has 40 years of bad decisions baked into it, it also has 40 years of features and tooling built around it.
And in some cases, things are purposefully broken in the name of security as mentioned above. Writing a keylogger on X11? Easy. Every app can watch the keyboard even when they aren’t in focus. So if I type my password into firefox, Discord can listen. Hope you don’t have any malicious apps just patiently listening to all your keystrokes.
Getting rid of input listening sounds great! … Except for the concept of global keybinds. Have a Push to talk button in discord that you need it to be able to listen to while youre playing a game? Sorry, the game is in focus, so discord can’t see ANY of your input. Including the push to talk button. Different wayland servers have different ways of handling this with their portals. Some don’t have it at all. And the ones that do don’t always have great solutions.
One major issue that has been in wayland debate hell… how do multi-window apps communicate with each other. For example GIMP. The editor window is a separate window from the toolkit which is a separate from the layer view. GIMP on X11 knows where all of its windows are because it can see everything. if you wanted GIMP to save all the window positions, it could. GIMP on Wayland has no idea where each window is relative to each other. Each window knows its own size and shape. And thats it. It doesnt know where on the screen it is. Which means it doesnt know where it’s other sub windows are relative to itself. Which means GIMP on Wayland can’t really save the window positions for next run. Wayland is working on a protocol for handling this, but its been caught up in debate hell last I saw. This is a prime example of a thing X11 had. And Wayland will someday have, but the 40 year headstart and disregard for security gives X11 a huge headstart.
Most of these problems have workarounds and solutions, but you might find yourself in a situation where you do in fact need to implement a workaround instead of having everything Just Work.
“Better” means different things to different people. Architecture and security and technologically? Wayland is better. Just Works and its what your apps were probably built to run on so less weird edge case issues? X11 is still better just due to inertia. (And again, I use Wayland, I’m willing to deal with the workarounds, but you do you).
Does it also handle key and mouse inputs to make sure they’re interpretted by the right programme in the right context?
Yep that’s also the WM’s job.
No matter! Pick a side now and join the jihad!
It’s not even hard picking sides when Wayland sucks so bad…
(I don’t know what Wayland is either)
Wrong choice buddy (wayland is the best thing ever happened trust me 100%!!!)
I love this whole comment thread.
Edit: Made the Yutani joke before I realized I’d been beaten to it.
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 Windows Manager 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 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.
They replace the penguins with whales.
Just don’t ask what hyprland is.
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.
Super-short version:
The system that Linux uses to draw anything on the screen (showing the desktop, your windows, their contents, etc) is called a display server.
Since the 80’s, Linux has been using a display server called the X Window System (or x11), 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
Since the 80’s, Linux has been using a display server called the X Window System
This is, of course, not true, given that Linux did not yet exist in the 1980s.
Unix-like systems that predate Linux did already use it in the 1980s.
That’s an important point for the youngsters here who think Linux was always a thing: x11 far predates Linux
Are you know what predates x11? Love and compassion
Thank you for coming to my Ted talk
Wayland Jennings, a great country singer
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.
Remembering window placements should be possible on KDE with Kwin rules. Maybe your window manager has something similar.
I’m using KWin, and you could for example start every Firefox window at the same specific position, but it would be better if it could just be where I put it last time, because even if I pop every window in the same place or not, the instant you have more than one window, it’s useless. Remembering would be preferential.
Why the downvote?
The exact same problem remains unsolved by your second recommendation, obvious trolling at this point.
Feel certain that if KWin could solve the problem, I wouldn’t list it as a problem.
Just tried it myself on Plasma 6.0.4 on Wayland. OpenSUSE Tumbleweed. Works perfectly fine.
For a single window.
Easy. Just create a rule not matching a particular window and set position to “Remember”.