6.5.使用 Xwayland ================= 安装 Wayland 时,应该已经安装了 ``Xwayland`` 二进制文件,除非是在没有 X11 支持的情况下编译的 Wayland。如果不存在 **/usr/local/bin/Xwayland** 这个文件,请使用以下命令安装 Xwayland: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session # pkg install xwayland-devel .. **注意** 推荐使用 Xwayland 的开发版本,并且应该与 Wayland 软件包一起安装。每个混成器都有一种启用或禁用此功能的方法。 安装 ``Xwayland`` 后,在所选混成器中对其进行配置。对于 Wayfire,\ **wayfire.ini** 文件中需要以下行: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session xwayland = true 对于 Sway 混成器,应默认启用 ``Xwayland``\ 。尽管如此,还是建议在 **~/.config/sway/config** 中手动添加配置行,如下所示: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session xwayland enable 最后,对于 Hikari,不需要进行任何更改。默认情况下内置了对 ``Xwayland`` 的支持。要禁用该支持,请使用 ports 重新编译软件包并在那时禁用 Xwayland support。 进行这些更改后,在命令行启动混成器并使用快捷键运行终端。在此终端中,执行 ``env`` 命令并搜索 ``DISPLAY`` 变量。如果混成器能够正确启动 Xwayland X 服务器,输出的环境变量应该类似于以下内容: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session % env | grep DISPLAY .. raw:: latex \diilbookstyleinputcell .. code:: shell-session WAYLAND_DISPLAY=wayland-1 DISPLAY=:0 在此输出中,有一个默认的 Wayland 显示和 Xwayland 服务器的显示。验证 ``Xwayland`` 是否正常运行的另一种方法是使用安装和测试小程序:[x11/eyes] 并检查输出。如果 ``xeyes`` 应用程序启动并且眼睛跟随鼠标指针,则 Xwayland 运行正常。如果出现如下错误,则说明 ``Xwayland`` 初始化过程中发生了一些事情,可能需要重新安装: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session Error: Cannot open display wayland-0 .. **警告** Wayland 的一个安全特性是,在没有运行 X 服务器的情况下,没有其他的网络监听器。启用 ``Xwayland`` 后,此安全功能将不再适用于该系统。 对于某些混成器,例如 Wayfire,可能无法正常启动 ``Xwayland``\ 。因此,\ ``env`` 将显示关于环境变量 ``DISPLAY`` 的如下信息: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session % env | grep DISPLAY .. raw:: latex \diilbookstyleinputcell .. code:: shell-session DISPLAY=wayland-1 WAYLAND_DISPLAY=wayland-1 有时即使安装并配置了 ``Xwayfire``\ ,X11 应用程序也不能运行并出现显示问题。要解决此问题,请通过这两种方法验证是否已经存在使用 UNIX 套接字的 ``Xwayland`` 实例。首先,检查 ``sockstat`` 的输出并搜索 X11-unix: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session % sockstat | grep x11 应该有类似于以下信息的内容: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session 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`` 来进一步验证: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session % Xwayland 如果 X11 套接字已经可用,则应向用户显示以下错误: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session (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 <https://cgit.freebsd.org/ports/tree/mail/claws-mail/pkg-descr>`__ 作为需要 ``Xwayland`` 服务的应用程序: .. raw:: latex \diilbookstyleinputcell .. code:: shell-session export DISPLAY=:0 在此更改之后,\ `mail/claws-mail <https://cgit.freebsd.org/ports/tree/mail/claws-mail/pkg-descr>`__ 应用程序现在应该开始使用 ``Xwayland`` 并按预期运行。