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

7.5 KiB
Raw Permalink Blame History

Дорожная карта Lark DE

Фаза 1: Фундамент (композитор)

  • Инициализация Wayland сессии (сокет, xdg-output, проверка вложенным клиентом)
  • Обработка ввода: клавиатура, мышь, прокрутка
  • Протокол xdg-shell для приложений (создание, конфигурирование, коммиты)
  • Базовый рендеринг окон (GLES через smithay, damage tracking)
  • Управление окнами: каскадное размещение, фокус по клику, очистка при закрытии
  • Панель задач с кнопками окон и переключением фокуса
  • Сворачивание, разворачивание и закрытие окон (Super, Super+Shift, Super+Delete; кнопки заголовка и панели)
  • Декорации окон в стиле Windows 11 (CSD): заголовок с подписью, кнопки, перетаскивание
  • Изменение размера окон мышью за край рамки и за углы
  • Переключение окон по Alt+Tab со списком и подтверждением
  • Переключение рабочих областей (Super+1..4, Super+Shift+цифра, Ctrl+Super+стрелки)
  • Протоколы presentation-time, viewporter, xdg-decoration
  • Интеграция XWayland
  • Бэкенд DRM/KMS для запуска без окна winit

Не сделано в Фазе 1 и почему:

  • XWayland. Требует отдельного запуска Xwayland-сервера, прокси поверхностей X11 в сцену smithay и синхронизации окон двух протоколов. Это объём больше, чем весь сделанный композитор, и проверить его можно только на X11-клиенте, которого в тестовой системе нет.
  • DRM/KMS. Бэкенд нужен для запуска без окна winit — то есть на «голом» железе. В тестовой среде нет ни DRM-устройства, ни KMS-карты: код пришлось бы писать вслепую и нечем было бы проверить. Требуется реальная машина с видеокартой.

Фаза 2: Shell (панель и меню)

  • Панель задач: кнопка «Пуск», кнопки окон, выбор по клику
  • Отрисовка подписей: собственный растровщик текста на fontdb + fontdue (подписи окон, заголовков, часов, меню)
  • Меню Пуск со списком приложений и поиском (поиск набирается с клавиатуры, учитывает раскладку)
  • Запуск приложений в Lark, а не во внешней сессии (каждое приложение получает свою шину D-Bus)
  • Часы в системном трее (время и дата, локальная зона)
  • Переключатель рабочих областей на панели
  • Меню «Пуск» в раскладке Windows 10 «1 в 1»: полоса, поиск, группы букв, плитки, прокрутка
  • Рабочий стол: обои по теме и значки приложений
  • Окно настроек: тема, акцент, панель, рабочие области
  • Оформление Material 3 Expressive: свой холст, значки, слои с кэшем
  • Список приложений из .desktop-файлов: меню показывает установленные программы, значки рабочего стола читаются из ~/Desktop
  • Индикаторы трея читают батарею, Wi-Fi, звук и Bluetooth
  • Анимации появления меню и настроек (отключаются в настройках)
  • Обои: шесть вариантов, включая однотонные
  • Уведомления
  • Окно настроек отдельным процессом: сейчас это слой композитора

Не сделано в Фазе 2 и почему:

  • Сеть, звук, батарея. Нужен доступ к NetworkManager/D-Bus, PulseAudio и /sys/class/power_supply. В тестовой системе этих служб нет, а заглушки показали бы неверные значения, что хуже отсутствия индикатора. Значки в трее нарисованы, но состояния не читают.
  • Уведомления. Требует протокола org.freedesktop.Notifications и меню уведомлений; в текущем виде это отдельный экран с историей, то есть примерно половина Фазы 2.

Фаза 3: Сервисы

  • Управление питанием (яркость, сон, батарея)
  • Сетевой апплет
  • Аудио-микшер
  • Автозапуск и управление сессией

Фаза 4: Приложения

  • Файловый менеджер
  • Терминал
  • Центр настроек

Приложения перечислены в меню «Пуск» и запускаются командами xdg-open, lark-terminal, lark-settings. Сами приложения ещё не написаны.

Фаза 5: Полировка

  • Анимации и переходы
  • Темы оформления (светлая/тёмная) и акцентный цвет (переключаются в настройках и сохраняются в файл)
  • Обои рабочего стола (градиент и пятна по акценту темы)
  • Горячие клавиши (см. таблицу в BUILD.md)
  • Мультиязычность (ru, en)

Горячие клавиши отмечены выполненными в том смысле, что механизм и набор сочетаний есть и работают. Назначение их пользователем в настройках — отдельная задача.

Стратегия тестирования

  • Проверка композитора на виртуальном дисплее: scripts/dev-run.sh поднимает Xvfb, запускает композитор с клиентом и сохраняет снимок экрана
  • Модульные тесты: разбор событий ввода, распознавание сочетаний клавиш, раскладка панели задач, меню «Пуск», геометрия декораций и зон изменения размера, растровщик текста, раскладка клавиатуры — cargo test
  • Разработка и тестирование в виртуальной машине (QEMU/KVM с virtio-gpu или llvmpipe)
  • CI на слабых конфигурациях (2 vCPU, 2 ГБ RAM)
  • Профилирование через perf и tracing