lark/docs/ROADMAP.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

106 lines
7.5 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
## Фаза 1: Фундамент (композитор)
- [x] Инициализация Wayland сессии (сокет, xdg-output, проверка вложенным клиентом)
- [x] Обработка ввода: клавиатура, мышь, прокрутка
- [x] Протокол xdg-shell для приложений (создание, конфигурирование, коммиты)
- [x] Базовый рендеринг окон (GLES через smithay, damage tracking)
- [x] Управление окнами: каскадное размещение, фокус по клику, очистка при закрытии
- [x] Панель задач с кнопками окон и переключением фокуса
- [x] Сворачивание, разворачивание и закрытие окон
(Super, Super+Shift, Super+Delete; кнопки заголовка и панели)
- [x] Декорации окон в стиле Windows 11 (CSD): заголовок с подписью, кнопки,
перетаскивание
- [x] Изменение размера окон мышью за край рамки и за углы
- [x] Переключение окон по `Alt+Tab` со списком и подтверждением
- [x] Переключение рабочих областей (Super+1..4, Super+Shift+цифра, Ctrl+Super+стрелки)
- [x] Протоколы presentation-time, viewporter, xdg-decoration
- [ ] Интеграция XWayland
- [ ] Бэкенд DRM/KMS для запуска без окна winit
Не сделано в Фазе 1 и почему:
- **XWayland.** Требует отдельного запуска `Xwayland`-сервера, прокси поверхностей
X11 в сцену smithay и синхронизации окон двух протоколов. Это объём больше,
чем весь сделанный композитор, и проверить его можно только на X11-клиенте,
которого в тестовой системе нет.
- **DRM/KMS.** Бэкенд нужен для запуска без окна winit — то есть на «голом»
железе. В тестовой среде нет ни DRM-устройства, ни KMS-карты: код пришлось бы
писать вслепую и нечем было бы проверить. Требуется реальная машина с
видеокартой.
## Фаза 2: Shell (панель и меню)
- [x] Панель задач: кнопка «Пуск», кнопки окон, выбор по клику
- [x] Отрисовка подписей: собственный растровщик текста на fontdb + fontdue
(подписи окон, заголовков, часов, меню)
- [x] Меню Пуск со списком приложений и поиском
(поиск набирается с клавиатуры, учитывает раскладку)
- [x] Запуск приложений в Lark, а не во внешней сессии
(каждое приложение получает свою шину D-Bus)
- [x] Часы в системном трее (время и дата, локальная зона)
- [x] Переключатель рабочих областей на панели
- [x] Меню «Пуск» в раскладке Windows 10 «1 в 1»: полоса, поиск, группы
букв, плитки, прокрутка
- [x] Рабочий стол: обои по теме и значки приложений
- [x] Окно настроек: тема, акцент, панель, рабочие области
- [x] Оформление Material 3 Expressive: свой холст, значки, слои с кэшем
- [x] Список приложений из `.desktop`-файлов: меню показывает установленные
программы, значки рабочего стола читаются из `~/Desktop`
- [x] Индикаторы трея читают батарею, Wi-Fi, звук и Bluetooth
- [x] Анимации появления меню и настроек (отключаются в настройках)
- [x] Обои: шесть вариантов, включая однотонные
- [ ] Уведомления
- [ ] Окно настроек отдельным процессом: сейчас это слой композитора
Не сделано в Фазе 2 и почему:
- **Сеть, звук, батарея.** Нужен доступ к NetworkManager/D-Bus, PulseAudio и
`/sys/class/power_supply`. В тестовой системе этих служб нет, а заглушки
показали бы неверные значения, что хуже отсутствия индикатора. Значки в
трее нарисованы, но состояния не читают.
- **Уведомления.** Требует протокола `org.freedesktop.Notifications` и меню
уведомлений; в текущем виде это отдельный экран с историей, то есть
примерно половина Фазы 2.
## Фаза 3: Сервисы
- [ ] Управление питанием (яркость, сон, батарея)
- [ ] Сетевой апплет
- [ ] Аудио-микшер
- [ ] Автозапуск и управление сессией
## Фаза 4: Приложения
- [ ] Файловый менеджер
- [ ] Терминал
- [ ] Центр настроек
Приложения перечислены в меню «Пуск» и запускаются командами `xdg-open`,
`lark-terminal`, `lark-settings`. Сами приложения ещё не написаны.
## Фаза 5: Полировка
- [ ] Анимации и переходы
- [x] Темы оформления (светлая/тёмная) и акцентный цвет
(переключаются в настройках и сохраняются в файл)
- [x] Обои рабочего стола (градиент и пятна по акценту темы)
- [x] Горячие клавиши
(см. таблицу в `BUILD.md`)
- [ ] Мультиязычность (ru, en)
Горячие клавиши отмечены выполненными в том смысле, что механизм и набор
сочетаний есть и работают. Назначение их пользователем в настройках — отдельная
задача.
## Стратегия тестирования
- Проверка композитора на виртуальном дисплее: `scripts/dev-run.sh`
поднимает Xvfb, запускает композитор с клиентом и сохраняет снимок экрана
- Модульные тесты: разбор событий ввода, распознавание сочетаний клавиш,
раскладка панели задач, меню «Пуск», геометрия декораций и зон изменения
размера, растровщик текста, раскладка клавиатуры — `cargo test`
- Разработка и тестирование в виртуальной машине (QEMU/KVM с virtio-gpu или llvmpipe)
- CI на слабых конфигурациях (2 vCPU, 2 ГБ RAM)
- Профилирование через perf и tracing