Wayland: Difference between revisions
Shafael170 (talk | contribs) |
m style fixes |
||
| (11 intermediate revisions by 7 users not shown) | |||
| Line 1: | Line 1: | ||
{{Expansion|Verify accuracy of article}} | {{Expansion|Verify accuracy of article}} | ||
[https://wayland.freedesktop.org/ Wayland] is a modern display server protocol intended as a replacement for the legacy [[Xorg | X11]] system. | |||
For additional details, see {{NixOS Manual|anchor=#sec-wayland|name=NixOS Manual: Chapter - Wayland}}. | |||
== Checking for Wayland == | == Checking for Wayland == | ||
To check if you are using Wayland, run the following command | To check if you are using Wayland, run the following command: | ||
<syntaxhighlight lang=console> | |||
$ echo $XDG_SESSION_TYPE | |||
</syntaxhighlight> | |||
If {{ic|wayland}} is returned, you are running Wayland. | |||
== Setup == | == Setup == | ||
| Line 8: | Line 16: | ||
Two things are required for running Wayland: a compatible Display Manager, and a compatible Compositor. | Two things are required for running Wayland: a compatible Display Manager, and a compatible Compositor. | ||
{{Expansion|Verify completeness of DM and Compositor lists}} | {{Expansion|Verify completeness of DM and Compositor lists}} | ||
== Display Managers == | == Display Managers == | ||
Display Managers are responsible for handling user login. | Display Managers are responsible for handling user login. | ||
The following Display Managers support using both X and Wayland protocols | The following Display Managers support using both X and Wayland protocols: | ||
==== Graphical ==== | ==== Graphical ==== | ||
* [https://github.com/NixOS/nixpkgs/blob/592047fc9e4f7b74a4dc85d1b9f5243dfe4899e3/nixos/modules/services/x11/display-managers/gdm.nix gdm] is the [[GNOME]] Display Manager. | * [https://github.com/NixOS/nixpkgs/blob/592047fc9e4f7b74a4dc85d1b9f5243dfe4899e3/nixos/modules/services/x11/display-managers/gdm.nix gdm] is the [[GNOME]] Display Manager. | ||
* [https://github.com/NixOS/nixpkgs/blob/592047fc9e4f7b74a4dc85d1b9f5243dfe4899e3/nixos/modules/services/x11/display-managers/sddm.nix sddm] is the default Display Manager for [[KDE]]. Wayland support is currently experimental. | * [https://github.com/NixOS/nixpkgs/blob/592047fc9e4f7b74a4dc85d1b9f5243dfe4899e3/nixos/modules/services/x11/display-managers/sddm.nix sddm] is the default Display Manager for [[KDE]]. Wayland support is currently experimental. | ||
==== Text-based ==== | ==== Text-based ==== | ||
* [https://github.com/NixOS/nixpkgs/blob/592047fc9e4f7b74a4dc85d1b9f5243dfe4899e3/pkgs/applications/display-managers/ly/default.nix ly] | * [https://github.com/NixOS/nixpkgs/blob/592047fc9e4f7b74a4dc85d1b9f5243dfe4899e3/pkgs/applications/display-managers/ly/default.nix ly] | ||
* [https://github.com/NixOS/nixpkgs/blob/592047fc9e4f7b74a4dc85d1b9f5243dfe4899e3/pkgs/applications/display-managers/emptty/default.nix emptty] | * [https://github.com/NixOS/nixpkgs/blob/592047fc9e4f7b74a4dc85d1b9f5243dfe4899e3/pkgs/applications/display-managers/emptty/default.nix emptty] | ||
| Line 23: | Line 36: | ||
== Compositors == | == Compositors == | ||
For the purposes of this basic overview, a compositor can be thought of as equivalent to an X Desktop Environment. {{Note|It is important to remember that this is not actually the case as there are [https://en.wikipedia.org/wiki/Wayland_(protocol)#Differences_between_Wayland_and_X multiple differences] between how X and Wayland work internally}} | For the purposes of this basic overview, a compositor can be thought of as equivalent to an X Desktop Environment. {{Note|It is important to remember that this is not actually the case as there are [https://en.wikipedia.org/wiki/Wayland_(protocol)#Differences_between_Wayland_and_X multiple differences] between how X and Wayland work internally.}} | ||
=== Wayland Native === | === Wayland Native === | ||
* [[Sway]] is | |||
* [[Sway]] is an i3-like compositor. | |||
* [[Hyprland]] the dynamic tiling Wayland compositor that doesn't sacrifice on its looks. | * [[Hyprland]] the dynamic tiling Wayland compositor that doesn't sacrifice on its looks. | ||
* [[Niri]] is a scrollable tiling compositor. | |||
=== X and Wayland support === | === X and Wayland support === | ||
* [https://github.com/NixOS/nixpkgs/blob/nixos-23.11/pkgs/desktops/gnome/core/mutter/default.nix Mutter] is the default [[GNOME]] Desktop Environment | * [https://github.com/NixOS/nixpkgs/blob/nixos-23.11/pkgs/desktops/gnome/core/mutter/default.nix Mutter] is the default compositor for the [[GNOME]] Desktop Environment. | ||
* [https://github.com/NixOS/nixpkgs/blob/nixos-23.11/pkgs/desktops/plasma-5/default.nix KWin | * [https://github.com/NixOS/nixpkgs/blob/nixos-23.11/pkgs/desktops/plasma-5/kwin/default.nix KWin] is the default compositor for the [[KDE]] Desktop Environment. | ||
== Applications == | == Applications == | ||
Not all apps support running natively on Wayland. To work around this, Xwayland should be enabled. {{Note|Enabling XWayland varies slightly from Compositor to Compositor, and may already be enabled. Consult your Compositor's documentation and/or nix file for how to enable.}} | |||
=== Electron and Chromium === | |||
< | Ozone Wayland (which uses Wayland native instead of Xwayland) support in [[Chromium]] and [[Electron]] based applications can be enabled by setting the environment variable "<code>NIXOS_OZONE_WL</code>" with <code>NIXOS_OZONE_WL=1</code> ''(also see [https://github.com/NixOS/nixpkgs/commit/b2eb5f62a7fd94ab58acafec9f64e54f97c508a6 commit])''. | ||
environment.sessionVariables.NIXOS_OZONE_WL = "1"; | |||
As of NixOS 25.05 ("Warbler"), if <code>XDG_SESSION_TYPE</code> is unset or set to "wayland", [https://issues.chromium.org/issues/40083534#comment599 chromium and electron apps will default to wayland native]. This ignores the <code>DISPLAY</code> environment variable. | |||
==== Declaratively (permanent) ==== | |||
===== NixOS ===== | |||
{{File|3=environment.sessionVariables.NIXOS_OZONE_WL = "1";|name=/etc/nixos/configuration.nix|lang=nix}} | |||
==== Imperatively (each time an application is launched) ==== | |||
Example: to launch <code>code</code> ''({{Nixpkg|pkgs/applications/editors/vscode/vscode.nix|vscode}})'' | |||
<syntaxhighlight lang="console"> | |||
$ NIXOS_OZONE_WL=1 code | |||
</syntaxhighlight> | </syntaxhighlight> | ||
== Virtualization == | |||
To have wayland work inside of [[QEMU]], you may need to pass <code>-vga qxl</code>. | |||
== See also == | |||
* [[Xorg]] | |||
[[Category:Desktop]] | |||