‹ Стартовый экранРазработка

Разработка LineXinBar: документация, исходный код, переводы

Документация

Полный справочник для пользователей и разработчиков лежит рядом с кодом, в docs/. Все руководства:

Начало работыТребования, права, сборка, вложенные и нативные сеансы ПакетированиеПакеты для Arch, Debian и Ubuntu, Fedora и Nix КонфигурацияВсе настройки, в том числе для отдельных приложений Обзор проектаЦели дизайна, Gamescope, известные ограничения Приложения, медиа и файлыПанель, поиск, полки и Файлы SteamВход, библиотека, запуск, друзья и приглашения Epic GamesЧерез Heroic: вход, установка, облачные сохранения RetroArchПапки ROM, ядра, файлы BIOS и игровые диски PlayStation 3RPCS3, пакеты, ключи дисков и трофеи Настройки рабочего столаОформление, экраны, питание, звук, сеть, система УправлениеГеймпады, клавиатура, мышь, сенсор, экранная клавиатура Гид и менюПереключение приложений, быстрые настройки, микшер, указатель на стике Интеграция с рабочим столомСнимки экрана, демонстрация, окна выбора файлов, запросы ОбновленияИсточники, восстановление и собственные поставщики обновлений АрхитектураУстройство исходников, протокол оболочки, звук, стекло ЛокализацияЯзыки, каталоги и добавление переводов

Как он устроен

Две программы, обе на Rust: lxb, небольшой композитор Wayland на основе Smithay, и lxb-desktop, оболочка, которая рисуется на GPU через wgpu.

  • Композитор сам управляет экранами через DRM/KMS — каждый разъём является настоящим выходом со своей swapchain и собственным циклом, задаваемым vblank, — или работает вложенным в окне для разработки. Программы X11 он запускает через собственный Xwayland.
  • Оболочка — клиент layer-shell, поэтому она работает и на других композиторах, поддерживающих layer-shell. С композитором она общается по одному закрытому протоколу, lxb_shell_v1, которым могут пользоваться только собственные программы сеанса.
  • Внешний вид вычисляется, а не рисуется вручную. Обои — одна аналитическая функция от того, куда смотришь, вычисляемая для каждого пикселя; каждый знак — белый силуэт, измеренный в поле расстояний и поднятый шейдером каплей воды. Этот сайт запускает переложения тех же двух шейдеров.
  • Вокруг них: lxb-portal для демонстрации экрана, окон выбора файлов и остального портала рабочего стола; lxb-updates, координатор обновлений; и дополнительные помощники для RetroArch, Heroic и RPCS3.

Переводы

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

Каталоги — обычные текстовые файлы в crates/lxb-desktop/locales/. Исправить перевод — значит отредактировать строку; новый язык — это новый каталог, а тесты проверяют, что в каждом каталоге одни и те же сообщения с одними и теми же аргументами. У экрана входа и родственных приложений собственные каталоги того же вида.

Сообщить об ошибке

Откройте issue на GitHub и приложите четыре вещи, которые делают проблему воспроизводимой:

  • ваш дистрибутив и его версию;
  • вашу видеокарту и драйвер;
  • способ запуска LineXinBar — с экрана входа, через lxb --shell в консоли или вложенно;
  • журналы вокруг того момента, когда что-то пошло не так, — journalctl --user -b для сеанса или вывод терминала вложенного запуска.

Проблему с контроллером легче отследить, зная марку и модель геймпада и подключён ли он кабелем или по Bluetooth.

Участвовать

Сообщения об ошибках, тестирование оборудования, переводы и код — всё приветствуется.

  • Тестирование оборудования сейчас важнее всего: другие производители видеокарт, портативные приставки, несколько GPU, необычные экраны и контроллеры.
  • Переводы: исправьте то, что на вашем языке звучит неправильно, или добавьте новый язык.
  • Код: сборка — cargo build --release --locked, тесты — cargo test, а вложенный сеанс — способ увидеть изменение в работе.

Лицензия

LineXinBar — свободное ПО под лицензией GNU General Public License, только версия 3.

Прилагаемые шрифты Roboto и Roboto Mono распространяются под собственными открытыми лицензиями, как и шрифты Noto, которые оболочка несёт для хинди и китайского, и тема курсоров Bibata. Этот сайт — часть репозитория и распространяется под той же лицензией.