Wayland

本节详细介绍了 Wayland 合成器以及相关服务和工具的手动安装和配置。

安装

不像 Xorg, Wayland 的实现将显示服务器、窗口管理器和合成器结合在一个应用程序中。

桌面环境

GNOME、KDE Plasma 和 Enlightenment 有 Wayland 会话。GNOME 默认使用其 Wayland 会话。当使用这些桌面环境时,用 GTK+ 构建的应用程序会自动选择 Wayland 后端,而 QT5 和 EFL 应用如在 KDE 或 Enlightenment 之外使用,可能需要分别设置环境变量

混成器

Void Linux 目前打包了以下 Wayland 混成器:

  • Weston:本身还是其它 Wayland 混成器开发的实现参考
  • Sway: 兼容 i3 的 Wayland 混成器,基于 wlroots
  • Wayfire 3D 混成器,受 Compiz 启发并基于 wlroots 开发
  • Hikari:基于 wlroots 并受 cwm 启发开发,在 FreeBSD 上开发很活跃,但也支持 Linux
  • Cage: 显示单个全屏应用程序(就像自助取款机的显示界面那样)
  • River:动态平铺 Wayland 混成器,受 dwm 和 bspwm 启发
  • labwc: 是一个堆叠式混成器,灵感来自 OpenBox

显卡驱动

GNOME 和 KDE Plasma 都有针对 Wayland 的 EGLStreams 后端,这意味着它们可以使用 NVIDIA 专有的驱动程序。其他大多数 Wayland 混成器需要实现 GBM 接口的驱动。用于这一目的的主要驱动由 mesa-dri 软件包提供。图形化驱动" 一节有关于在不同系统中设置图形的更多细节。

Seat management

Wayland 混成器需要某种方式来控制视频显示和访问输入设备。在 Void 系统中,这需要一个 seat manager 服务,它可以是 elogind 或 seatd。 启用它们将在"Session 和 Seat Management" 环节中解释。

原生应用程序

基于 Qt5 的应用程序需要安装 qt5-wayland 包,并设置环境变量QT_QPA_PLATFORM=wayland-egl 来启用其 Wayland 后端。一些KDE特定的应用程序也需要安装 kwayland 包。 基于 EFL 的应用程序需要设置环境变量 ELM_DISPLAY=wl ,如果不设置,可能会有问题,因为它不能正确支持XWayland。 基于 SDL 的应用程序需要设置环境变量 SDL_VIDEODRIVER=wayland。 基于 GTK+ 的应用程序应该会自动使用Wayland后端。关于其他工具包的信息可以在 Wayland 文档里找到。

多媒体软件,如 mpv(1), vlc(1)imv 可以在 Wayland 上原生工作。

网页浏览器

Mozilla Firefox 带有一个 Wayland 后端,默认情况下是禁用的。要启用 Wayland 后端,可以在运行 firefox 之前设置环境变量 MOZ_ENABLE_WAYLAND=1,或者使用提供的 firefox-wayland 脚本。

基于GTK+或Qt5的浏览器,如 Midori 和 qutebrowser(1) 应该可以在Wayland上正常工作。

在 Wayland 中运行 Xorg 程序

如果一个应用程序不支持 Wayland,它仍然可以在 Wayland 环境下使用。XWayland 是一个 X 服务器,它为大多数 Wayland 混成器弥补了这一缺陷,并作为大多数混成器的依赖项被安装。它的软件包是 xorg-server-xwayland。对于 Weston,应安装 weston-xwayland

配置

Wayland 库需要 XDG_RUNTIME_DIR 环境变量来确定 Wayland 套接字的目录

也有可能一些应用程序以某种方式使用 XDG_SESSION_TYPE 环境变量,这需要你将其设置为 wayland