lark/README.md
Niko Marmeladkov 725ca2ba37 Интерфейс Material 3 и сборка в Docker на удалённой машине
Сборка:
- Dockerfile (builder/runtime/headless/binary) и .dockerignore
- scripts/build-remote.sh: сборка на другой машине, возврат бинарника
  и проверка без дисплея (--check)
- в требования добавлен libseat-dev; dev-run.sh принимает LARK_BIN

Интерфейс:
- свой программный холст (src/canvas.rs): скругления, градиенты, тени,
  значки; слои кэшируются по отпечатку состояния, поэтому неизменный
  слой не перерисовывается
- панель задач в раскладке Windows 10: «Пуск», строка поиска, рабочие
  области, кнопки окон с подписями и индикатором, трей, часы и полоска
  «показать рабочий стол»
- меню «Пуск» «1 в 1»: полоса со списком, настройками и питанием,
  поиск, список по алфавиту с группами, плитки, прокрутка
- настройки в стиле Windows 11: разделы и карточки, обои, анимации,
  раскладки, ввод, окна, сброс общий и у каждой настройки
- рабочий стол: шесть вариантов обоев, значки приложений и ~/Desktop
- значки вместо прямоугольников: свой набор фигур, включая кнопки
  заголовков окон
- растровщик текста: целые кегли и базовая линия, кривая контраста
  вместо «загустения», кэш ширин для измерений

Ввод и состояние:
- список приложений читается из .desktop-файлов, ярлыки ~/Desktop тоже
- индикаторы трея читают батарею, Wi-Fi, звук и Bluetooth
- переключение раскладок (Super+Space) и настраиваемый их список
- поиск в интернете через uv + ddgs из меню «Пуск»
- анимации появления меню и настроек (отключаются в настройках)
- исправлено: обои перекрывали окна, клик оболочки уходил приложению,
  значки рабочего стола отбирали указатель, тень вылезала из-за
  скруглений прямоугольником, ярлыки не сдвигались при панели сверху

Документация: раздел про удалённую сборку, описание интерфейса и
настроек, холст и слои в архитектуре, обновлённая дорожная карта.
2026-10-18 14:46:30 +03:00

102 lines
5.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Lark DE
Лёгкая среда рабочего стола на Rust для слабых устройств.
## Что уже работает
- **Композитор Wayland** на smithay: сокет, `xdg-shell`, вывод, ввод,
рендеринг через OpenGL ES, отслеживание повреждений
- **Панель задач** в раскладке Windows 10: «Пуск», строка поиска, рабочие
области, кнопки окон с подписями, индикаторы батареи, Wi-Fi, звука и
Bluetooth, часы и полоска рабочего стола
- **Меню «Пуск»** «1 в 1» как в Windows 10: полоса с настройками и питанием,
поиск, список установленных приложений по алфавиту (читается из
`.desktop`-файлов), закреплённые плитки, прокрутка, поиск в интернете
через `ddgs`
- **Окна**: заголовок со значками кнопок, перетаскивание, изменение размера
за края и углы, минимизация, разворот
- **Рабочий стол**: обои (шесть вариантов) и значки приложений вместе с
содержимым `~/Desktop`
- **Настройки** в стиле Windows 11: оформление и обои, панель, рабочий стол,
клавиатура (список раскладок и чем переключать), ввод, окна — применяются
сразу, сохраняются в файл, есть сброс как общий, так и у каждой настройки
- **Материальный интерфейс**: скругления, градиенты, акцентные подложки и
значки, нарисованные фигурами на собственном холсте
- **Свой растровщик текста** на `fontdb` + `fontdue`
- **Приложения запускаются в Lark**, а не во внешней сессии
Чего пока нет — XWayland, бэкенда DRM/KMS, окна настроек как отдельного
процесса и приложений Фазы 4. Подробности в
[дорожной карте](docs/ROADMAP.md).
## Целевое железо
Оптимизация под слабые устройства (например, icl bi1011):
- Intel Celeron/Pentium (N-серия)
- 4–8 ГБ RAM
- Встроенная Intel UHD Graphics
- eMMC/SSD
## Технологический стек
| Компонент | Крейт | Состояние |
|-----------|-------|-----------|
| Композитор Wayland | smithay | используется |
| Рендеринг | smithay (`GlesRenderer`) | используется |
| Интерфейс | свой холст: фигуры, значки, слои | используется |
| Ввод и раскладка | smithay + xkbcommon | используется |
| Текст | fontdb + fontdue | используется |
| Конфигурация | toml + serde | используется |
| Логирование | tracing | используется |
| Мультиязычность | fluent | используется |
## Структура проекта
```
lark/
├── src/
│ ├── compositor/ # Wayland композитор, ввод, декорации, раскладка
│ ├── shell/ # Панель, меню «Пуск», настройки, рабочий стол, значки
│ ├── canvas.rs # Программный холст: фигуры, значки, слои
│ ├── services/ # Фоновые службы (заготовки)
│ ├── apps/ # Свои приложения (заготовки)
│ ├── text.rs # Растровщик текста
│ └── config.rs # Конфигурация
├── locales/ # Переводы (.ftl)
├── docs/ # Документация
├── scripts/ # Проверка на виртуальном дисплее и сборка на другой машине
├── Dockerfile # Сборка и проверка в контейнере
└── tests/ # Интеграционные тесты
```
## Быстрый старт
```bash
cargo build --release
./target/release/lark # вложенно, внутри графической сессии
```
Проверка без дисплея:
```bash
./scripts/dev-run.sh # поднимает Xvfb и делает снимок экрана
```
Сборка на другой машине (слабому устройству не обязательно компилировать
проект самому):
```bash
./scripts/build-remote.sh niko@n1ko.dev 2241 --check
```
Подробности — в [сборке и запуске](docs/BUILD.md).
## Документация
- [Архитектура](docs/ARCHITECTURE.md)
- [Дорожная карта](docs/ROADMAP.md)
- [Сборка и запуск](docs/BUILD.md)
## Лицензия
MIT