6.5.使用 Xwayland

安装 Wayland 时,应该已经安装了 Xwayland 二进制文件,除非是在没有 X11 支持的情况下编译的 Wayland。如果不存在 /usr/local/bin/Xwayland 这个文件,请使用以下命令安装 Xwayland:

# pkg install xwayland-devel

注意

推荐使用 Xwayland 的开发版本,并且应该与 Wayland 软件包一起安装。每个混成器都有一种启用或禁用此功能的方法。

安装 Xwayland 后,在所选混成器中对其进行配置。对于 Wayfire,wayfire.ini 文件中需要以下行:

xwayland = true

对于 Sway 混成器,应默认启用 Xwayland。尽管如此,还是建议在 ~/.config/sway/config 中手动添加配置行,如下所示:

xwayland enable

最后,对于 Hikari,不需要进行任何更改。默认情况下内置了对 Xwayland 的支持。要禁用该支持,请使用 ports 重新编译软件包并在那时禁用 Xwayland support。

进行这些更改后,在命令行启动混成器并使用快捷键运行终端。在此终端中,执行 env 命令并搜索 DISPLAY 变量。如果混成器能够正确启动 Xwayland X 服务器,输出的环境变量应该类似于以下内容:

% env | grep DISPLAY
WAYLAND_DISPLAY=wayland-1
DISPLAY=:0

在此输出中,有一个默认的 Wayland 显示和 Xwayland 服务器的显示。验证 Xwayland 是否正常运行的另一种方法是使用安装和测试小程序:[x11/eyes] 并检查输出。如果 xeyes 应用程序启动并且眼睛跟随鼠标指针,则 Xwayland 运行正常。如果出现如下错误,则说明 Xwayland 初始化过程中发生了一些事情,可能需要重新安装:

Error: Cannot open display wayland-0

警告

Wayland 的一个安全特性是,在没有运行 X 服务器的情况下,没有其他的网络监听器。启用 Xwayland 后,此安全功能将不再适用于该系统。

对于某些混成器,例如 Wayfire,可能无法正常启动 Xwayland。因此,env 将显示关于环境变量 DISPLAY 的如下信息:

% env | grep DISPLAY
DISPLAY=wayland-1
WAYLAND_DISPLAY=wayland-1

有时即使安装并配置了 Xwayfire,X11 应用程序也不能运行并出现显示问题。要解决此问题,请通过这两种方法验证是否已经存在使用 UNIX 套接字的 Xwayland 实例。首先,检查 sockstat 的输出并搜索 X11-unix:

% sockstat | grep x11

应该有类似于以下信息的内容:

trhodes  Xwayland   2734  8  stream /tmp/.X11-unix/X0
trhodes  Xwayland   2734  9  stream /tmp/.X11-unix/X0
trhodes  Xwayland   2734  10 stream /tmp/.X11-unix/X0
trhodes  Xwayland   2734  27 stream /tmp/.X11-unix/X0_
trhodes  Xwayland   2734  28 stream /tmp/.X11-unix/X0

这表明存在 X11 套接字。这可以通过尝试在混成器下运行的终端仿真器中手动执行 Xwayland 来进一步验证:

% Xwayland

如果 X11 套接字已经可用,则应向用户显示以下错误:

(EE)
Fatal server error:
(EE) Server is already active for display 0
    If this server is no longer running, remove /tmp/.X0-lock
    and start again.
(EE)

由于使用显示 0 的活动 X 显示,环境变量设置不正确,要解决此问题,请将 DISPLAY 环境变量更改为 :0 并尝试再次执行应用程序。以下示例使用 mail/claws-mail 作为需要 Xwayland 服务的应用程序:

export DISPLAY=:0

在此更改之后,mail/claws-mail 应用程序现在应该开始使用 Xwayland 并按预期运行。