---
title: Глава 6. Wayland
part: Часть I. Начало работы
prev: books/handbook/x11
next: books/handbook/network
description: Эта глава описывает установку и настройку Wayland и композитных менеджеров во FreeBSD, обеспечивающих пользовательскую графическую оболочку
tags: ["Wayland", "XWayland", "KDE", "Plasma", "Xfce", "Gnome", "Intel", "AMD", "NVIDIA", "Wayfire", "Sway", "Hikari"]
showBookMenu: true
weight: 8
params:
  path: "/books/handbook/wayland/"
---

[[wayland]]
= Wayland во FreeBSD
:doctype: book
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:sectnumoffset: 6
:partnums:
:source-highlighter: rouge
:experimental:
:images-path: books/handbook/wayland/

ifdef::env-beastie[]
ifdef::backend-html5[]
:imagesdir: ../../../../images/{images-path}
endif::[]
ifndef::book[]
include::shared/authors.adoc[]
include::shared/mirrors.adoc[]
include::shared/releases.adoc[]
include::shared/attributes/attributes-{{% lang %}}.adoc[]
include::shared/{{% lang %}}/teams.adoc[]
include::shared/{{% lang %}}/mailing-lists.adoc[]
include::shared/{{% lang %}}/urls.adoc[]
toc::[]
endif::[]
ifdef::backend-pdf,backend-epub3[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]
endif::[]

ifndef::env-beastie[]
toc::[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]

[[wayland-synopsis]]
== Общие сведения о Wayland
Wayland представляет собой новый сервер дисплеев, однако он отличается от Xorg в нескольких важных аспектах.
Во-первых, Wayland является всего лишь протоколом, который выступает в качестве промежуточного слоя между клиентами и использует для этого альтернативный механизм, исключающий зависимость от X-сервера.
Xorg включает как протокол X11, используемый для управления удалёнными дисплеями, так и X-сервер, который будет принимать соединения и отображать окна.
В случае Wayland композитный менеджер или оконный менеджер вместо традиционного X-сервера предоставляет сервер дисплея.

Так как Wayland не является X-сервером, то традиционные подключения к экранам X будут требовать использования других методов, таких, как VNC или RDP, для управления удалёнными рабочими столами.
Во-вторых, Wayland может управлять композитными соединениями между клиентами и композитным менеджером как отдельной сущностью, которой не нужно поддерживать протоколы X.

Wayland относительно нов, и не всё программное обеспечение обновлено для работы без дополнительной поддержки `Xwayland`.
Так как Wayland не обеспечивает функцию X-сервера и ожидает, что эту поддержку обеспечивают композитные менеджеры, то оконным менеджерам X11, которые ещё не поддерживают Wayland, будет требоваться запуск `Xwayland` без параметра `-rootless`.
При исключении параметра `-rootless` обеспечивается поддержка оконного менеджера X11.

[NOTE]
====
Актуальный драйвер NVidia должен работать с большинством композитных менеджеров, основанных на wl-roots, но в настоящее время может быть несколько нестабильным и поддерживать не все возможности.
Требуются добровольцы для помощи в работе над NVidia DRM.
====

В настоящее время большое количество программного обеспечения, включая Firefox, будет работать с Wayland с минимальными проблемами.
Также доступно несколько оболочек рабочего стола, таких, как замена Compiz Fusion, известная как Wayfire, а также Sway, замена для оконного менеджера i3.

[NOTE]
====
С мая 2021 года plasma5-kwin поддерживает Wayland во FreeBSD.
Для использования Plasma вместе с Wayland используйте параметр `startplasma-wayland` для `ck-launch-session` в связке с dbus при помощи команды `ck-launch-session dbus-run-session startplasma-wayland`, чтобы это заработало.
====

Чтобы использовать функциональность определения клавиатурных комбинаций в композитных менеджерах, ядро системы должно поддерживать драйвер man:evdev[4].
По умолчанию он включён в ядро [.filename]#GENERIC#, однако, если оно было кастомизировано и поддержка man:evdev[4] была исключена, то будет требоваться загрузка модуля ядра man:evdev[4].
Кроме того, пользователи `Wayland` должны быть членами группы `video`.
Для того, чтобы быстро выполнить это изменение, воспользуйтесь командой `pw`:

[source,shell]
----
pw groupmod video -m user
----

Установка Wayland проста; нет ничего сложного в собственно настройке протокола.
Основной объём действий будет зависеть от выбранного композитного менеджера.
Приступим к установке `seatd` прямо сейчас и пропустим один шаг, являющийся частью установки и настройки композитного менеджера, так как для работы `seatd` необходимо предоставить пользовательский доступ к определённым устройствам.

Все композитные менеджеры, описанные здесь, должны работать с драйверами с открытым кодом package:graphics/drm-kmod[]; однако графические адаптеры NVidia могут иметь проблемы при использовании проприетарных драйверов.
Начнём с установки следующих пакетов:

[source,shell]
----
# pkg install wayland seatd
----

Как только протокол и поддерживающие пакеты будут установлены, композитный менеджер должен создать пользовательский интерфейс.
В следующих разделах будут рассмотрены несколько композитных менеджеров.
Всем композитным менеджерам, использующим Wayland, для работы потребуется каталог, заданный в переменной окружения, что может быть выполнено следующей командой интерпретатора командной строки bourne shell:

[source,shell]
----
% export XDG_RUNTIME_DIR=/var/run/user/`id -u`
----

Важно отметить, что большинство композитных менеджеров будут выполнять поиск конфигурационных файлов в каталоге XDG_RUNTIME_DIR.
В показываемых здесь примерах будет использоваться параметр для указания конфигурационного файла в [.filename]#~/.config#, чтобы разделить хранение временных и конфигурационных файлов.
Для каждого композитного менеджера рекомендуется настроить алиас для загрузки соответствующего конфигурационного файла.

[WARNING]
====
Сообщается, что пользователи ZFS могут сталкиваться с трудностями с некоторыми клиентами Wayland, потому что им требуется доступ к возможности выполнить `posix_fallocate()` в рабочем каталоге.
Хотя автор не смог воспроизвести эту проблему на системе ZFS, рекомендуемым обходным решением является отказ от использования ZFS для рабочего каталога и использование вместо него `tmpfs` для каталога [.filename]#/var/run#.
В таком случае файловая система `tmpfs` используется для [.filename]#/var/run# и монтируется при помощи команды `mount -t tmpfs tmpfs /var/run`, при этом для сохранения такого изменения между перезагрузками используется [.filename]#/etc/fstab#.
Во избежание потенциальных подводных камней с ZFS переменная окружения XDG_RUNTIME_DIR может быть настроена на использование [.filename]#/var/run/user/$UID#.
Имейте в виду такую возможность при рассмотрении примеров конфигураций в последующих разделах.
====

Даемон seatd помогает композитным менеджерам управлять доступом к совместно используемым системным устройствам, в том числе графическим адаптерам, для непривилегированных пользователей.
Для традиционных менеджеров X11, таких как Plasma и GNOME, необходимости в `seatd` нет, однако для композитных менеджеров Wayland, обсуждаемых здесь, его необходимо будет активировать на уровне системы, и он должен быть запущен до начала работы в окружении композитного менеджера.
Для активации и запуска даемона `seatd` прямо сейчас, а также на этапе инициализации системы:

[source,shell]
----
# sysrc seatd_enable=”YES”
# service seatd start
----

После этого для получения GUI необходимо будет установить композитный менеджер, который похож на оболочку X11.
Здесь рассматриваются три из них, а также базовые параметры настройки, настройки блокировки экрана и рекомендации по получению дополнительной информации.

[[wayland-wayfire]]
== Композитный менеджер Wayfire

Wayfire является композитным менеджером, нацеленным на простоту и широкие возможности настройки.
Доступно несколько функций, и он возвращает несколько элементов из ранее выпущенной графической оболочки Compiz Fusion.
Все его компоненты на современном оборудовании выглядят прекрасно.
Для запуска и работы Wayfire начните с установки требуемых пакетов:

[source,shell]
----
# pkg install wayfire wf-shell alacritty swaylock-effects swayidle wlogout kanshi mako wlsunset
----

Пакет `alacritty` представляет собой эмулятор терминала.
Однако он не совсем обязателен, так как другие эмуляторы терминала, такие как `kitty` и `Terminal` из XFCE-4, были протестированы и проверены на предмет работоспособности под управлением композитного менеджера Wayfire.
Настройка Wayfire относительно проста; он использует файл, который нужно адаптировать при проведении любых настроек.
Для начала скопируйте файл с примером в каталог с настройками среды исполнения, а затем отредактируйте его:

[source,shell]
----
% mkdir ~/.config/wayfire
% cp /usr/local/share/examples/wayfire/wayfire.ini ~/.config/wayfire
----

Значения по умолчания должны удовлетворить большинство пользователей.
Внутри конфигурационного файла уже настроены такие пункты, как знаменитый `cube`, и имеются инструкции, помогающие с доступными настройками.
Несколько ключевых настроек включают в себя:

[.programlisting]
....
[output]
mode = 1920x1080@60000
position = 0,0
transform = normal
scale = 1.000000
....

В этом примере из конфигурационного файла подразумевается работа монитора в указанном режиме с указанной частотой в герцах.
К примеру, режим должен задаваться как `widthxheight@refresh_rate`.
Параметр position указывает на выдачу в заданную точку экрана.
Значения по умолчанию должно подойти большинству пользователей.
Наконец, параметр transform определяет преобразование фона, а scale будет масштабировать выдачу с заданным коэффициентом.
Значения по умолчанию для этих параметров должно подойти большинству пользователей; для получения дополнительной информации обратитесь к документации.

Как отмечалось, Wayland является новой технологией, и ещё не все приложения работают с этим протоколом.
На данный момент `sddm`, видимо, не поддерживает запуск и управление композитными менеджерами в Wayland.
Вместо него в этих примерах использовалась утилита `swaylock`.
Конфигурационный файл содержит параметры для запуска `swayidle` и `swaylock` для режимов простоя и блокировки экрана.

Параметр, который служит для определения действия, выполняемого тогда, когда система находится в режиме простоя, задаётся следующим образом:

[.programlisting]
....
idle = swaylock
....

А таймаут для блокировки определяется при помощи следующих строк:

[.programlisting]
....
[idle]
toggle = <super> KEY_Z
screensaver_timeout = 300
dpms_timeout = 600
....

Первый параметр заблокирует экран по истечении 300 секунд, а после ещё 300 экран выключится в соответствии с опцией `dpms_timeout`.

И, наконец, следует описать клавишу <super>.
В большинстве конфигураций используется этот параметр, и он соответствует обычной клавише `Windows` на клавиатуре.
Эта клавиша присутствует на большинстве клавиатур; в случае её отсутствия она должна быть переопределена в этом конфигурационном файле.
К примеру, чтобы блокировать экран, нажмите и удерживайте клавишу super, клавишу kbd:[shift] и нажмите kbd:[escape].
Если определения не были изменены, это приведёт к вызову приложения swaylock.
В соответствии с настройками по умолчанию `swaylock` будет демонстрировать серый экран; однако приложение имеет массу настроек и хорошо документировано.
Кроме того, так как установливалась версия swaylock-effects, имеется несколько доступных опций, таких как эффект размытия, который можно увидеть при помощи следующей команды:

[source,shell]
----
% swaylock --effect-blur 7x5
----

Имеется также параметр `--clock`, который на экране блокировки будет отображать часы с датой и временем.
При установке пакета package:x11/swaylock-effects[] также была установлена используемая по умолчанию конфигурация [.filename]#pam.d#.
В ней заданы параметры, которые должны подойти большинству пользователей.
Имеются и более сложные опции; обратитесь к документации по PAM для получения дополнительной информации.

Подошло время протестировать Wayfire и посмотреть, сможет ли он запуститься на системе.
Просто наберите следующую команду:

[source,shell]
----
% wayfire -c ~/.config/wayfire/wayfire.ini
----

Композитный менеджер должен запуститься и отобразить фоновое изображение с полоской меню вверху экрана.
Wayfire попытается выдать список установленных совместимых приложений для оболочки рабочего стола и представить их в этом выпадающем меню; к примеру, если установлен файловый менеджер XFCE-4, то он отобразится в этом выпадающем меню.
Если какое-то конкретное приложение совместимо и имеет определённую ценность для назначения комбинации клавиш для его вызова, то это может быть сделано определением клавиатурной последовательности при помощи конфгурационного файла [.filename]#wayfire.ini#.
В Wayfire также имеется инструмент настройки под названием Wayfire Config Manager.
Он имеется в выпадающем меню, но также может быть запущен из терминала выдачей следующей команды:

[source,shell]
----
% wcm
----

В этом приложении могут быть активированы, отключены или настроены различные конфигурационные параметры  Wayfire, включая специальные эффекты.
Кроме того, для организации более удобного пользовательского интерфейса в конфигурационном файле могут быть активированы менеджер фоновых изображений, панель и инструмент запуска приложений.

[.programlisting]
....
panel = wf-panel
dock = wf-dock
background = wf-background
....

[WARNING]
====
Изменения, выполненные при помощи `wcm`, будут перезаписывать пользовательские изменения в конфигурационной файле [.filename]#wayfire.ini#.
Для того, чтобы любые важные изменения могли быть восстановлены, настоятельно рекомендуется сделать резервкную копию файла [.filename]#wayfire.ini#.
====

Наконец, диспетчер задач, используемый по умолчанию и указанный в файле [.filename]#wayfire.ini#, является пакетом package:x11/wf-shell[], и может быть заменён другими панелями, если этого захочет пользователь.

[[wayland-hikari]]
== Композитный менеджер Hikari

Композитный менеджер Hikari использует несколько концепций, направленных на организацию работы, таких как листы, рабочие пространства и так далее.
В этом смысле он подобен панельному оконному менеджеру.
Если описывать подробнее, то работа композитного менеджера начинается с одного рабочего простанства, что похоже на виртуальные рабочие столы.
Hikari использует одно рабочее пространство или виртуальный рабочий стол для взаиодействия с пользователем.
Рабочее пространство состоит из нескольких ракурсов, которые являются рабочими окнами в композитном менеджере, сгруппированными в виде листов или групп.
Как листы, так и группы формируются из набора ракурсов; повторимся, что это окна, которые группируются вместе.
При переключении между листами или группами активный лист или группа становится рабочим пространством.
Страница справки содержит больше подробностей о функциях каждого объекта, однако для целей этого документа просто считайте, что одно рабочее пространство использует один лист.
Установка Hikari состоит из одного пакета, package:x11-wm/hikari[], и эмулятора терминала `alacritty`:

[source,shell]
----
# pkg install hikari alacritty
----

[NOTE]
====
Другие интерпретаторы командной строки, такие как `kitty` или `Terminal` среды Plasma, будут функционировать под управлением Wayland.
Пользователям следут поэкспериментировать с предпочитаемыми терминальными редакторами, чтобы удостовериться в совместимости.
====

Hikari использует конфигурационный файл [.filename]#hikari.conf#, который может быть размещён в XDG_RUNTIME_DIR либо указан при запуске при помощи параметра `-c`.
Конфигурационный файл автозапуска не является обязательным, однако может несколько упростить миграцию на этот композитный менеджер.
Настройка начинается с создания конфигурационного каталога Hikari и копирования в него конфигурационного файла для редактирования:

[source,shell]
----
% mkdir ~/.config/hikari
% cp /usr/local/etc/hikari/hikari.conf ~/.config/hikari
----

Настройка структурирована в несколько различных разделов, таких как ui, outputs, layouts и так далее.
Для большинства пользователей значения по умолчанию будут работать достаточно хорошо; однако понадобится сделать несколько важных изменений.
К примеру, переменная $TERMINAL в пользовательском окружении обычно не задаётся.
Изменение этой переменной или корректировка файла [.filename]#hikari.conf# таким образом:

[.programlisting]
....
terminal = "/usr/local/bin/alacritty"
....

Приведёт к запуску терминала `alacritty` при нажатии привязанной клавиатурной комбинации.
Проходя по конфигурационному файлу, следует отметить, что заглавные буквы используются для обозначения клавиш для пользователя.
К примеру, клавиша kbd:[L], используемая для запуска терминала по нажатию kbd:[L+Return], на самом деле является ранее обсуждённой супер клавишей, или клавишей с логотипом Windows.
Таким образом, при настройках по умолчанию удержание клавиши kbd:[L/super/Windows] и нажатие kbd:[Enter] откроет заданный эмулятор терминала.
Переопределение других клавиш для запуска приложений требует создания определений для действий.
Для этого действие должно быть указано в разделе с действиями, к примеру:

[.programlisting]
....
actions {
  terminal = "/usr/local/bin/alacritty"
  browser = "/usr/local/bin/firefox"
}
....

После этого действие может быть назначено в разделе keyboard, который определён внутри раздела bindings:

[.programlisting]
....
bindings {
  keyboard {
ФРАГМЕНТ
    "L+Return" = action-terminal
    "L+b" = action-browser
ФРАГМЕНТ
....

После перезапуска Hikari удерживание клавиши с логотипом Windows и нажатие клавиши kbd:[b] запустит веб-браузер.
У этого композитного менеджера отсутствует полоска меню, и пользователям рекомендуется как минимум настроить эмулятор терминала перед миграцией.
Страница справки содержит большой объём документации, с которой необходимо ознакомиться перед выполнением полной миграции 
Ещё одной положительной стороной Hikari является то, что при миграции на этот композитный менеджер он может быть запущен в окружении рабочего стола Plasma и GNOME, позволяя апробировать его до полного перехода.

Блокировка экрана в Hikari проста, так как стандартный конфигурационный файл [.filename]#pam.d# и утилита разблокировки включены в пакет.
Функция блокировки экрана привязана к клавишам kbd:[L] (клавиша с логотипом Windows)+ kbd:[Shift] + kbd:[Backspace].
Следует отметить, что все ракурсы, не помеченные как публичные, будут скрыты.
Эти ракурсы никогда не будут принимать ввод в режиме блокировки, однако следует озаботиться о том, что может быть показаны чувствительные данные.
Для некоторых пользователей может оказаться проще перейти на другой инструмент блокировки, такой как swaylock-effects, рассмотренный в этом разделе.
Для запуска Hikari используйте следующую команду:

[source,shell]
----
% hikari -c ~/.config/hikari/hikari.conf
----

[[wayland-sway]]
== Композитный менеджер Sway

Sway является плиточным композитным менеджером, который пытается быть заменой оконному менеджеру i3.
Он должен работать с актуальной пользовательской конфигурацией i3; однако новые возможности могут потребовать некоторой дополнительной настройки.
В последующих примерах предполагается новая установка без какой-либо миграции конфигураций i3.
Для того, чтобы установить Sway и важные компоненты, выполните следующую команду пользователем root:

[source,shell]
----
# pkg install sway swayidle swaylock-effects alacritty dmenu-wayland dmenu
----

Для получения базового конфигурационного файла выполните следующие команды, а затем отредактируйте конфигурационный файл после его копирования:

[source,shell]
----
% mkdir ~/.config/sway
% cp /usr/local/etc/sway/config ~/.config/sway
----

Базовый конфигурационный файл имеет много настроек по умолчанию, которые подойдут большинству пользователей.
Необходимо сделать несколько важных изменений, как показано ниже:

[.programlisting]
....
# Клавиша с логотипом. Используйте Mod1 для указания на Alt.
input * xkb_rules evdev
set $mod Mod4
# Предпочитаемый вами эмулятор терминала
set $term alacritty
set $lock swaylock -f -c 000000
output "My Workstation" mode 1366x786@60Hz position 1366 0
output * bg ~/wallpapers/mywallpaper.png stretch
### Настройка простоя
exec swayidle -w \
          timeout 300 'swaylock -f -c 000000' \
          timeout 600 'swaymsg "output * dpms off"' resume 'swaymsg "output * dpms on"' \
          before-sleep 'swaylock -f -c 000000'
....

В предыдущем примере загружаются правила `xkb` для man:evdev[4], а клавиша $mod настроена на клавишу с логотипом Windows для определения клавиш быстрого вызова.
Затем эмулятор терминала был настроен на `alacritty` и была определена команда для блокирования экрана; подробности об этом следуют позже.
Ключевое слово output указало Sway на режим, позицию, рисунок фона, а также на растяжение этого фонового рисунка для заполнения всего экрана.
Наконец, `swaylock` настроен на работу в фоновом режиме и блокировку экрана после таймаута в 300 секунд, с переводом экрана или монитора в спящий режжим после 600 секунд.
Цвет экрана блокировки задан как 000000, что соответствует чёрному цвету, что также определено здесь.
При использовании swaylock-effects с параметром `--clock` могут также отображаться часы.
Обратитесь к странице справки для получения информации о дополнительных опциях.
Также следует изучить страницу справки о man:sway-output[5]; в ней содержится большой объём информации о доступных настройках параметров отображения.

При работе в Sway для вызова меню приложения удерживайте клавишу с логотипом Windows (mod) и нажмите клавишу kbd:[d].
Навигация по меню может осуществляться при помощи клавиш со стрелками на клавиатуре.
Есть также возможности по созданию панели инструментов и добавлению панели задач; прочтите страницу справки по man:sway-bar[5] для получения дополнительной информации.
Конфигурация, применяемая по умолчанию, добавляет дату и время в правый верхний угол.
Пример можно найти в разделе `Bar` конфигурационного файла.
По умолчанию в конфигурацию на включена блокировка экрана, кроме примера выше, активирующего таймер блокировки.
Для создания клавиатурной комбинации для блокировки экрана требуется следующая строка в разделе `Key bindings`:

[.programlising]
....
# Ручная блокировка экрана
bindsym $mod+Shift+Return exec $lock
....

Теперь экран может быть заблокирован при помощи комбинации, заключающейся в удержании клавиши с логотипом Windows, нажатии и удержании клавиши shift и затем нажатия клавиши ввода.
При установке Sway, как из пакета, так и из Коллекции Портов FreeBSD, устанавливается файл по умолчанию для [.filename]#pam.d#.
Конфигурация по умолчанию должна подойти большинству пользователей, однако также доступны и более сложные настройки.
Прочтите документацию по PAM для получения дополнительной информации.

Наконец, для выхода из Sway и возвращения в интерпретатор командной строки удерживайте клавишу с логотипом Windows, клавишу shift, и нажмите клавишу kbd:[e].
Будет выдано сообщение с вариантом выхода из Sway.
Во время миграции Sway может быть запущен из эмулятора терминала на рабочем столе X11, таком как Plasma.
Это несколько упрощает тестирование различных изменений и клавиатурных комбинаций до момента полной миграции на этот композитный менеджер.
Для запуска Sway выполните следующую команду:

[source,shell]
----
% sway -c ~/.config/sway/config
----

[[wayland-xwayland]]
== Использование Xwayland

При установке Wayland должен быть установлен двоичный файл `Xwayland`, если только Wayland не строился без поддержки X11.
Если файл [.filename]#/usr/local/bin/Xwayland# не существует, установите его при помощи следующей команды:

[source,shell]
----
# pkg install xwayland-devel
----

[NOTE]
====
Рекомендуется использовать версию Xwayland для разработчиков, и, скорее всего, она и устанавливается с пакетом Wayland.
В каждом композитном менеджере имеется метод активации или отключения такой функции.
====

После того, как `Xwayland` будет установлен, настройте его при помощи выбранного композитного менеджера.
Для Wayfire в файле [.filename]#wayfire.ini# требуется следующая строка:

[.programlisting]
....
xwayland = true
....

В композитном менеджере Sway по умолчанию `Xwayland` должен быть включён.
Несмотря на это, рекомендуется вручную добавить конфигурационную строку в файл [.filename]#~/.config/sway/config#, подобно следующему:

[.programlisting]
.....
xwayland enable
.....

Наконец, для Hikari изменения не требуются.
Поддержка `Xwayland` встроена по умолчанию.
Для отключения такой поддержки перестройте пакет из коллекции портов и отключите поддержку Xwayland на этом этапе.

После внесения этих изменений запустите композитный менеджер из командной строки и вызовите терминал при помощи комбинации клавиш.
Работая в этом терминале, выполните команду `env` и поищите переменные `DISPLAY`.
Если композитному менеджеру удалось полноценно запустить X-сервер Xwayland, то эти переменные окружения должны иметь вид, подобный следующему:

[source,shell]
----
% env | grep DISPLAY
----

[.programlisting]
....
WAYLAND_DISPLAY=wayland-1
DISPLAY=:0
....

В этой выдаче присутствует дисплей Wayland, используемый по умолчанию, а также дисплей, заданный для сервера Xwayland.
Другим способом удостовериться в том, что `Xwayland` функционирует корректно, является установка и проверка работы небольшого пакета package:[x11/eyes].
Если приложение `xeyes` запускается, и глаза следят за указателем мыши, то Xwayland функционирует корректно.
Если выдаётся сообщение об ошибке, подобное тому, что ниже, то что-то произошло при инициализации `Xwayland`, и может потребоваться переустановка:

[.programlisting]
....
Error: Cannot open display wayland-0
....

[WARNING]
====
Особенностью Wayland, имеющей отношение к информационной безопасности, является то, что без запуска X-сервера отсутствует дополнительный сервис, ожидающий сетевое подключение к нему.
После активации `Xwayland` это утверждение становится нерелевантным для конкретной системы.
====

В случае использования некоторых композитных менеджеров, таких как Wayfire, `Xwayland` может не запускаться корректно.
В таких случаях `env` будет выдавать следующую информацию о переменных окружения `DISPLAY`:

[source,shell]
----
% env | grep DISPLAY
----

[.programlisting]
....
DISPLAY=wayland-1
WAYLAND_DISPLAY=wayland-1
....

Несмотря на то, что `Xwayfire` был установлен и настроен, приложения X11 не будут запускаться ввиду проблемы с дисплеем.
Для обхода этой ситуации удостоверьтесь, что уже имеется экземпляр `Xwayland`, использующий UNIX-сокет, следующими двумя методами.
Во-первых, проверьте выдачу команды `sockstat` и поищите X11-unix:

[source,shell]
----
% sockstat | grep x11
----

Должно выдаваться что-то, подобное следующим данным:

[.programlisting]
....
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` в ручном режиме из эмулятора терминала, работающего под управлением композитного менеджера:

[source,shell]
----
% Xwayland
----

Если сокет X11 уже доступен, то пользователю должно быть выдано следующее сообщение об ошибке:

[.programlisting]
....
(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)
....

Так как имеется активный X-дисплей, использующий нулевой номер, переменная окружения была просто некорректно задана, для исправления чего измените значение переменной окружения `DISPLAY` на `:0` и попробуйте запустить приложение ещё раз.
В следующем примере используется пакет package:mail/claws-mail[] в качестве приложения, которому требуется сервис `Xwayland`:

[source,shell]
----
export DISPLAY=:0
----

После этого изменения приложение package:mail/claws-mail[] должно теперь использовать `Xwayland` и работать так, как ожидалось.

[[wayland-remotedesktop]]
== Организация Удалённого Рабочего Стола при помощи VNC

Ранее в этом документе отмечалось, что Wayland не предоставляет доступ в стиле X-сервера, как это делает Xorg.
Вместо этого пользователи свободны в выборе протокола доступа к удалённому рабочему столу, такого как RDP или VNC.
В Коллекцию Портов FreeBSD включён `wayvnc`, который будет поддерживать композитные менеджеры, основанные на wlroots, вроде тех, что описываются здесь.
Это приложение может быть установлено при помощи:

[source,shell]
----
# pkg install wayvnc
----

В отличие от некоторых других пакетов, `wayvnc` поставляется без конфигурационного файла.
К счастью, страница справки описывает важные параметры, и они могут быть перенесены в простой конфигурационный файл:

[.programlisting]
....
address=0.0.0.0
enable_auth=true
username=username
password=password
private_key_file=/path/to/key.pem
certificate_file=/path/to/cert.pem
....

Потребуется сформировать файлы с ключами безопасности, а их использование настоятельно рекомендуется для обеспечения повышенного уровня безопасности соединений.
При запуске wayvnc будет искать конфигурационный файл в [.filename]#~/.config/wayvnc/config#.
Такое поведение может быть переопределено опцией `-C конфигурационный_файл` при запуске сервера.
Таким образом, для запуска сервера `wayvnc` выполните следующую команду:

[source,shell]
----
% wayvnc -C ~/.config/wayvnc/config
----

[NOTE]
====
На момент написания данного текста скрипт rc.d для запуска `wayvnc` при инициализации системы отсутствовал.
Если такая функциональность нужна, то необходимо будет создать локальный файл запуска.
Можно считать это запросом на добавление такой возможности для майнтайнера данного порта.
====

[[wayland-ly]]
== Менеджер регистраций Wayland
Хотя существует несколько менеджеров регистраций, которые постепенно переходят на использование Wayland, одним из вариантов является менеджер package:x11/ly[] с текстовым пользовательским интерфейсом (TUI).
Обходясь минимальными настройками, `ly` будет запускать Sway, Wayfire и другие менеджеры, выдавая окно регистрации в процессе инициализации системы.
Для установки `ly` запустите следующую команду:

[source,shell]
----
# pkg install ly
----

Будет выдано несколько советов по настройке, при этом шагами по активации является добавление следующих строк в файл [.filename]#/etc/gettytab#:

[programlisting]
....
Ly:\
  :lo=/usr/local/bin/ly:\
  :al=root:
....

Затем откорректируйте строку ttyv1 в файле [.filename]#/etc/ttys# так, чтобы она соответствовала следующей:

[programlisting]
....
ttyv1 "/usr/libexec/getty Ly" xterm onifexists secure
....

После перезагрузки системы должно появиться приглашение ко входу в систему.
Для настройки специфичных параметров, таких как используемый язык, отредактируйте [.filename]#/usr/local/etc/ly/config.ini#.
Как минимум, этот файл должен указывать на выделенный tty, заданный ранее в [.filename]#/etc/ttys#.

[NOTE]
====
При указании ttyv0 в качестве терминала входа в систему может потребоваться нажать клавиши kbd:[alt] и kbd:[F1] для того, чтобы увидеть регистрационное окно.
====

Когда отобразится окно входа в систему, нажатие клавиш со стрелками влево и вправо будет изменять выбор оконного менеджера из списка различных поддерживаемых.

[[wayland-utilities]]
== Полезные Инструменты

Одной полезной утилитой Wayland, которую могут использовать любые композитные менеджеры, является waybar.
Хотя Wayfire поставляется с меню запуска, лёгкая в использовании и быстрая панель задач является хорошим инструментом для любого композитного менеджера или оболочки рабочего стола.
Панелью задач, совместимой с Wayland, быстрой и лёгкой в настройке, и является waybar.
Для установки пакета и утилиты, поддерживающей управление аудио, запустите следующую команду:

[source,shell]
----
# pkg install pavucontrol waybar
----

Для создания конфигурационного каталога и копирования конфигурационного файла по умолчанию выполните следующие команды:

[source,shell]
----
% mkdir ~/.config/waybar
% cp /usr/local/etc/xdg/waybar/config ~/.config/waybar
----

Утилита `lavalauncher` обеспечивает панель запуска для различных приложений.
С пакетом не поставляется пример конфигурационного файла, поэтому должны быть выполнены следующие действия:

[source,shell]
----
mkdir ~/.config/lavalauncher
----

Пример конфигурационного файла, который включает только Firefox и предполагает размещение на экране справа, приводится ниже:

[.programlising]
....
global-settings {
	watch-config-file = true;
}

bar {
	output            = eDP-1;
	position          = bottom;
	background-colour = "#202020";

	# Условие для конфигурационного набора, используемого по умолчанию.
	condition-resolution = wider-than-high;

	config {
		position = right;
	}

	button {
		image-path          =     /usr/local/lib/firefox/browser/chrome/icons/default/default48.png;
		command[mouse-left] =     /usr/local/bin/firefox;
	}
	button {
	  image-path           =   /usr/local/share/pixmaps/thunderbird.png;
	  command[mouse-left]  =   /usr/local/bin/thunderbird;
}
....
 
