diff --git a/documentation/content/ru/books/handbook/wayland/_index.adoc b/documentation/content/ru/books/handbook/wayland/_index.adoc index db995494c3..757b355f3b 100644 --- a/documentation/content/ru/books/handbook/wayland/_index.adoc +++ b/documentation/content/ru/books/handbook/wayland/_index.adoc @@ -1,699 +1,699 @@ --- 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 path: "/books/handbook/" --- [[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`. +Кроме того, пользователи `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 = KEY_Z screensaver_timeout = 300 dpms_timeout = 600 .... Первый параметр заблокирует экран по истечении 300 секунд, а после ещё 300 экран выключится в соответствии с опцией `dpms_timeout`. И, наконец, следует описать клавишу . В большинстве конфигураций используется этот параметр, и он соответствует обычной клавише `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; } ....