• Xorg and Wayland are graphics systems. You may have seen a command line during boot with tons of text scrolling past, that’s all you get without either Xorg or some alternative running.

    Xorg runs on X11, which was designed a long time ago during the mainframe era of computers. It used to be the standard for all GUIs on Linux, BSD, and other Unixlikes for ages.

    However, modern computers are nothing like the computers X11 was originally based on, and X11 started showing shortcomings. So, years ago people working on Linux decided it was time to design a new system, one that’s designed around our modern computers and operating systems. That new system is Wayland, through Ubuntu sported their own Mir for a while too.

    Wayland was designed not to be a network protocol (though you can still run applications on remote computers if you wish). It also has a bunch of security benefits, like “not every application can read your key strokes, copy your password, or record your screen without you noticing”.

    This new system doesn’t have the benefit of multiple decades of hard work behind it. As you may imagine, this also broke applications for a while. There’s a tool called XWayland that can run X11 applications on Wayland, so most programs just work, but things like screen recording are severely limited under thst system.

    On the other hand, if you’re on a laptop, Linux can now finally reliably use touch pad gestures with more than two fingers through Wayland. You could write scripts and tools to fake them before, but they’re actually part of the UI nlw.

    Wayland does have APIs for almost everything now, but not all applications have been updated to use those APIs. For example, Zoom didn’t wait for the screen recording API to be standardised, so it implemented screen sharing under Wayland as “take a thousand screenshots”. Some programs work by listening for keyboard hotkeys (basically processing every key and checking if it’s their special hotkey) but that’s no longer supported unless the program has focus.

    There were also issues with drivers (well, almost exclusively Nvidia) but those have mostly been solved. It’s not for everyone yet, but there’s no reason not to try Wayland if you don’t have a full Linux setup already, anymore.

    As with any big change to the Linux ecosystem (systemd, anyone?) there’s a lot of fighting between people who want the shiny, better new thing, and people who liked the way things were before. Both sides have good arguments. Big parties in the Linux world, like Gnome and KDE, are moving towards a Wayland-only desktop. At the moment you can run Gnome and KDE on either, but that’ll be harder in the future. Other GUIs, like XFCE, are heavily geared towards X11, and it may take years before you can even run those on Wayland. Some, like i3, have replacements (Sway) that do almost the same thing.

    Interestingly, hardware vendors also seem to go with Wayland for their custom Linux projects. For example, the Tizen watches Samsung used to sell run Wayland. The Steam Deck runs Wayland in game mode, using a purpose built Wayland compositor as a GUI, but X11 for desktop mode.

    In practice, you shouldn’t need to worry about things too much right now. Some programs will not work on Wayland, others will not work on X11. Some games run a few fps faster on Wayland, others run faster on X11, but the differences aren’t huge. If both Xorg and Wayland are supported in your distro, you can switch between the two using a button on the login screen.

    As for Firefox: Firefox has had native Wayland support for a while. It was already capable of using all the Wayland APIs and protocols at least a year ago. However, by default, it ran through XWayland, to remain as compatible as possible, while Wayland was still being tested. Now, with the upcoming release, Firefox goes native.

    For Xorg users, nothing will change. For Wayland users with touchpads or touch screens, gestures like pinch to zoom will be smoother and there will be more of them. The only difference is that you don’t need to stuff MOZ_ENABLE_WAYLAND=1 in a script somewhere to activate the new capabilities on Wayland.