Weston
Обзор
Weston — это эталонная реализация Wayland-композитора, а также полезная среда сама по себе.
Из коробки Weston предоставляет базовый рабочий стол или полнофункциональную среду для не-десктопных применений, таких как автомобильная, встраиваемая, бортовая, промышленная, киоски, телевизионные приставки и телевизоры. Он также предоставляет библиотеку, позволяющую другим проектам создавать свои собственные полнофункциональные среды на основе ядра Weston.
Основное внимание в Weston уделяется правильности и надёжности. Weston стремится быть компактным и быстрым, но, что более важно, предсказуемым. Хотя у Weston есть известные ошибки и недостатки, мы стараемся избегать неизвестного или переменного поведения, включая переменную производительность, такую как случайные всплески времени отображения кадра.
Также предоставляется небольшой набор примеров или демонстрационных клиентов: хотя они могут быть полезны сами по себе, их основная цель — служить примером или тестовым случаем для других разработчиков композиторов или клиентов.
Если вам нужен более традиционный опыт работы с рабочим столом, проекты GNOME и KDE предоставляют полнофункциональные рабочие среды, построенные на протоколе Wayland. Существует множество других проектов, предоставляющих клиенты и рабочие среды Wayland: вы не ограничены только тем, что можете найти в Weston.
Отчётность о проблемах и вклад
Разработка Weston ведётся на GitLab freedesktop.org (https://gitlab.freedesktop.org/wayland/weston/). Также см. документ о внесении вклада (CONTRIBUTING.md), в котором подробно описано, как внести код или нетехнические вклады в Weston.
Сборка Weston
Для сборки Weston используется Meson (https://mesonbuild.com/). Weston часто зависит от текущих версий выпуска Wayland (https://gitlab.freedesktop.org/wayland/wayland) и wayland-protocols (https://cgit.freedesktop.org/wayland/wayland-protocols).
При необходимости последнюю версию Meson можно установить как пользователь с помощью команды:
$ pip3 install --user meson
Сборка Meson в Weston не выполняет автоопределение и по умолчанию включает все функции, что означает, что вы, вероятно, столкнётесь с отсутствующими зависимостями при первой попытке. Если зависимости можно избежать с помощью параметра сборки, сообщение об ошибке должно сообщить вам, какой параметр можно использовать для этого. Возможно, вам потребуется отключить несколько функций, если вы хотите избежать определённых зависимостей.
$ git clone https://gitlab.freedesktop.org/wayland/weston.git
$ cd weston
$ meson build/ --prefix=...
$ ninja -C build/ install
$ cd ..
Команда meson заполняет каталог сборки. Этот шаг может завершиться неудачно из-за отсутствия зависимостей. Любые параметры сборки, которые вы хотите добавить, можно добавить в этой строке, например, meson build/ --prefix=... -Ddemo-clients=false. Все параметры сборки можно найти в файле meson_options.txt.
После успешного заполнения каталога сборки вы можете проверить конфигурацию с помощью meson configure build/. Если вам нужно изменить параметр, вы можете сделать это, например, с помощью meson configure build/ -Ddemo-clients=false.
Каждый push в основной репозиторий Weston и его форки собирается с использованием GitLab CI. Чтение конфигурации (.gitlab-ci.yml) может послужить полезным примером того, как собрать и установить Weston.
Более подробная документация по сборке Weston доступна на сайте Wayland (https://wayland.freedesktop.org/building.html). Также есть дополнительные сведения о том, как запускать и писать тесты (https://wayland.freedesktop.org/testing.html).
Для создания документации см. раздел weston-doc.
Запуск Weston
После установки Weston большинство пользователей могут просто запустить его, набрав weston. Это запустит Weston внутри любой среды, в которой вы его запускаете: при запуске с текстовой консоли он займёт эту консоль. При запуске из существующего сеанса Wayland или X11 он запустит «вложенный» экземпляр Weston внутри окна в этом сеансе.
Справку можно получить, выполнив команду weston --help или man weston, которая выведет список доступных конфигураций. Не нужно бороться за то, какая версия ABI установлена в системе пользователя. Это позволяет пользователю устанавливать множество различных композиторов, каждый из которых требует своей версии libweston ABI без хитростей или конфликтов.
Обратите внимание, что версии самого Weston не будут устанавливаться параллельно, только libweston.
Для получения дополнительной информации о параллельной установке см. http://ometer.com/parallel.html
Чтобы обеспечить согласованное и простое в использовании управление версиями, libweston следует правилам проекта Apache Portable Runtime (см. http://apr.apache.org/versioning.html).
Документ содержит полную информацию, суть которой суммируется ниже:
Weston и libweston имеют отдельные номера версий в meson.build. Все выпуски делаются по номеру версии Weston. Номер версии libweston совпадает с номером версии Weston во всех выпусках, кроме, возможно, предварительных. Предварительные выпуски имеют микроверсию Weston 91 или выше.
Предварительному выпуску разрешено устанавливать версию libweston, превышающую версию Weston, если основная версия libweston была увеличена. В этом случае версия libweston должна быть равна основной версии Weston + 1.
Файлы pkg-config называются в честь основной версии libweston, но содержат номер версии Weston. Это означает, что предварительный выпуск Weston 2.1.91 может установить libweston-3.pc для будущей версии libweston 3.0.0, но файл .pc говорит, что версия всё ещё 2.1.91. Когда пользователь libweston хочет зависеть от полностью стабильного API и ABI основной версии, он должен использовать (например, для основной версии 3):
PKG_CHECK_MODULES(LIBWESTON, [libweston-3 >= 3.0.0])
Зависимость только от libweston-3 без конкретного номера версии всё ещё допускает предварительные выпуски, которые могут иметь другой API или ABI.
Вдохновлённый программами и библиотеками ATK, Qt и KDE, libjpeg-turbo, GDK, NetworkManager, js17, lz4 и многими другими, libweston использует макрос для ограничения видимого разработчику API — REQUIRE_LIBWESTON_API_VERSION.
Обратите внимание, что разные проекты фокусируются на разных аспектах — проверка верхней и/или нижней версии, по умолчанию отображаются старые/новые символы и так далее.
libweston стремится защитить весь вновь представленный API, чтобы предотвратить тонкие поломки, которые может вызвать простая перекомпиляция (против более новой версии).
Макрос имеет формат 0x$MAJOR$MINOR и не включает версию PATCH. Как упоминалось в разделе «Схема управления версиями», последняя не отражает никаких видимых пользователю изменений API, поэтому её не следует считать частью версии API.
Все новые символы должны быть защищены макросом, как показано в примере ниже:
#if REQUIRE_LIBWESTON_API_VERSION >= 0x0101
bool
weston_ham_sandwich(void);
#endif
Чтобы использовать указанный символ, пользователь должен иметь аналогичный код в своём файле configure.ac:
PKG_CHECK_MODULES(LIBWESTON, [libweston-1 >= 1.1])
AC_DEFINE(REQUIRE_LIBWESTON_API_VERSION, [0x0101])
Если пользователь не заинтересован в прямой совместимости, они могут использовать 0xffff или другое большое значение. Однако делать это не рекомендуется.
Основная цель libweston — отделить компоновщик от реализации оболочки (то, что раньше было плагинами оболочки).
Таким образом, вместо запуска «weston» с различными аргументами для выбора оболочки, можно запустить саму оболочку, например, «weston-desktop», «weston-ivi», «orbital» и т. д. Основной исполняемый файл (программа-хост) будет реализовывать оболочку, а libweston будет использоваться для базовой реализации компоновщика.
Libweston также предназначен для использования другими разработчиками проектов, которые хотят создать новые «Wayland WM».
Детали:
Вся конфигурация и пользовательские интерфейсы будут находиться вне libweston. Сюда входят анализ командной строки, файлы конфигурации и графический интерфейс времени выполнения.
Программа-хост (основной исполняемый файл) будет полностью контролировать все параметры libweston. У libweston не должно быть настраиваемых пользователем параметров, которые работали бы за спиной программы-хоста, за исключением, возможно... Отладка и подобные функции.
Обработка сигналов будет вне libweston.
Выполнение дочерних процессов и управление ими будут вне libweston.
Различные бэкенды (drm, fbdev, x11 и т. д.) будут внутренней деталью libweston. Libweston не будет поддерживать сторонние бэкенды. Однако хост-программы должны обрабатывать специфичную для бэкенда конфигурацию из-за различий в поведении и доступных функциях.
Рендереры также будут внутренними деталями libweston, хотя опять же хост-программа может повлиять на выбор рендерера, если это позволяет бэкенд, и, возможно, установить специфические для рендерера параметры.
дизайн плагина ???
xwayland ???
weston-launch всё ещё с libweston, несмотря на то, что он может запускать только Weston и ничего больше. Мы хотели бы разрешить ему запускать любой компоновщик, но поскольку он по своей конструкции предоставляет корневой доступ к устройствам ввода и DRM, как мы можем ограничить его предполагаемыми программами?
Есть ещё много деталей, которые предстоит решить.
Всегда собирайте Weston с параметром --with-cairo=image.
Проект Weston предназначен (будет предназначен) для разделения на несколько бинарных пакетов, каждый со своими зависимостями. Максимальное разделение будет примерно таким:
libweston (минимальные зависимости):
gl-renderer (зависит от библиотек GL и др.).
drm-backend (зависит от libdrm, libgbm, libudev, libinput и др.).
x11-backend (зависит от X11/xcb библиотек).
xwayland (зависит от X11/xcb библиотек).
fbdev-backend (зависит от libudev и др.).
rdp-backend (зависит от freerdp).
weston (исполняемый файл, не устанавливаемый параллельно):
демоверсии weston (не устанавливаемые параллельно):
и, возможно, больше...
Всё должно быть параллельно устанавливаемо для основных ABI-версий libweston (libweston-1.so, libweston-2.so и т.д.), за исключением тех, что явно упомянуты.
Сборка Weston, возможно, пока не позволяет этого разумно, но такова цель.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )