1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/openharmony-third_party_weston

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

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).

Документ содержит полную информацию, суть которой суммируется ниже:

  • Major — обратно несовместимые изменения.
  • Minor — новые обратно совместимые функции.
  • Patch — внутренние (специфичные для реализации) исправления.

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

Основная цель 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 (минимальные зависимости):

    • безголовый бэкенд;
    • Wayland бэкенд.
  • gl-renderer (зависит от библиотек GL и др.).

  • drm-backend (зависит от libdrm, libgbm, libudev, libinput и др.).

  • x11-backend (зависит от X11/xcb библиотек).

  • xwayland (зависит от X11/xcb библиотек).

  • fbdev-backend (зависит от libudev и др.).

  • rdp-backend (зависит от freerdp).

  • weston (исполняемый файл, не устанавливаемый параллельно):

    • оболочка рабочего стола;
    • ivi-shell;
    • полноэкранная оболочка;
    • weston-info (устаревший), weston-terminal и др., которые мы устанавливаем по умолчанию;
    • общий доступ к экрану.
  • демоверсии weston (не устанавливаемые параллельно):

    • программы weston-simple-*;
    • возможно, все программы, которые мы собираем, но не устанавливаем по умолчанию.
  • и, возможно, больше...

Всё должно быть параллельно устанавливаемо для основных ABI-версий libweston (libweston-1.so, libweston-2.so и т.д.), за исключением тех, что явно упомянуты.

Сборка Weston, возможно, пока не позволяет этого разумно, но такова цель.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/openharmony-third_party_weston.git
git@api.gitlife.ru:oschina-mirror/openharmony-third_party_weston.git
oschina-mirror
openharmony-third_party_weston
openharmony-third_party_weston
master