6.2.Wayland 概述

Wayland 是一种新的显示服务器,它与 Xorg 在多个重要方面有所不同。首先,Wayland 只是一个协议,充当客户端之间的中介,采用不同的机制,从而去除了对 X 服务器的依赖。Xorg 包括 X11 协议,用于运行远程显示,X 服务器接受连接并显示窗口。而在 Wayland 下,合成器或窗口管理器提供显示服务器,而不是传统的 X 服务器。

由于 Wayland 不是 X 服务器,传统的 X 屏幕连接需要使用其他方法,如 VNC 或 RDP 进行远程桌面管理。其次,Wayland 可以作为一个独立的实体管理客户端与合成器之间的复合通信,而无需支持 X 协议。

Wayland 相对较新,并不是所有软件都已更新为原生运行而无需 Xwayland 支持。由于 Wayland 不提供 X 服务器,并期望合成器提供该支持,因此尚未支持 Wayland 的 X11 窗口管理器将要求 Xwayland 在没有 -rootless 参数的情况下启动。移除 -rootless 参数后,将恢复 X11 窗口管理器的支持。

注意

当前的 NVIDIA® 驱动程序应该能够与大多数 wlroots 合成器兼容,但可能会略显不稳定,并且可能不支持所有功能。目前,NVIDIA® DRM 的志愿者正在寻求帮助。

目前,许多软件在 Wayland 上运行时几乎没有问题,包括 Firefox。同时,也有一些桌面环境可供选择,如 Compiz Fusion 替代品 Wayfire 和 i3 窗口管理器替代品 Sway。

注意

截至 2021 年 5 月,plasma5-kwin 已支持在 FreeBSD 上运行 Wayland。要在 Wayland 下使用 Plasma,请使用 startplasma-wayland 参数启动 ck-launch-session,并通过以下命令将 dbus 与其关联:dbus-launch --exit-with-x11 ck-launch-session startplasma-wayland

对于合成器,必须有一个支持 evdev(4) 驱动程序的内核,才能利用按键绑定功能。默认情况下,GENERIC 内核已构建此支持;但是,如果内核经过定制并且去除了 evdev(4) 支持,则需要加载 evdev(4) 模块。此外,Wayland 用户需要成为 video 组的成员。要快速更改此设置,请使用 pw 命令:

pw groupmod video -m user

安装 Wayland 非常简单;该协议本身不需要太多配置。大多数组合将依赖所选的合成器。现在安装 seatd,可以跳过合成器安装和配置中的一个步骤,因为 seatd 需要提供对某些设备的非根访问权限。

所有此处描述的合成器都应该能够与 graphics/drm-kmod 开源驱动程序兼容;但是,使用专有驱动程序时,NVIDIA® 显卡可能会遇到一些问题。首先安装以下软件包:

# pkg install wayland seatd

安装完协议和支持软件包后,需要安装一个合成器来创建用户界面。以下部分将介绍几种合成器。所有使用 Wayland 的合成器都需要在环境中定义一个运行时目录。自 FreeBSD 14.1 以来,这已自动创建和定义。对于较早的版本,可以通过以下命令在 Bourne shell 中创建此目录:

% export XDG_RUNTIME_DIR=/var/run/user/`id -u`

需要注意的是,大多数合成器会在 XDG_RUNTIME_DIR 目录中搜索配置文件。在此处的示例中,将使用一个参数来指定配置文件路径为 ~/.config,以保持临时文件和配置文件的分离。建议为每个合成器配置别名,以加载指定的配置文件。

警告

有报告称,ZFS 用户可能会遇到一些 Wayland 客户端的问题,因为它们需要访问 posix_fallocate() 函数用于运行时目录。虽然作者无法在其 ZFS 系统上重现此问题,但推荐的解决方法是不要使用 ZFS 作为运行时目录,而是使用 tmpfs 来挂载 /var/run 目录。此时,可以通过命令 mount -t tmpfs tmpfs /var/run 挂载 tmpfs 文件系统,并通过 /etc/fstab 配置使此更改在重启后生效。可以将 XDG_RUNTIME_DIR 环境变量配置为使用 /var/run/user/$UID,以避免与 ZFS 相关的问题。请在查看以下配置示例时考虑此情况。

seatd 守护进程有助于管理合成器中对共享系统设备的非根用户访问,包括显卡。对于传统的 X11 管理器,如 Plasma 和 GNOME,seatd 并不需要;但是,对于此处讨论的 Wayland 合成器,它将在系统中启用并在启动合成器环境之前运行。要现在启用并启动 seatd 守护进程,并确保在系统初始化时也启用:

# sysrc seatd_enable="YES"
# service seatd start

接下来,需要安装一个合成器来为图形环境创建用户界面。以下部分将讨论三种合成器,包括基本配置选项、屏幕锁定设置和更多信息的推荐。

最后更新于