Разработка LineXinBar: документация, исходный код, переводы
Документация
Полный справочник для пользователей и разработчиков лежит рядом с кодом, в docs/. Все руководства:
Как он устроен
Две программы, обе на 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. Этот сайт — часть репозитория и распространяется под той же лицензией.