lark/docs/ROADMAP.md
Niko Marmeladkov 41fa466410 Первая версия Lark DE
Композитор Wayland на smithay: сессия, xdg-shell, ввод, рендеринг через
OpenGL ES с отслеживанием повреждений. Протоколы xdg-decoration,
viewporter и presentation-time.

Окна в стиле Windows 11: заголовок с названием и кнопками, перетаскивание,
изменение размера за края и углы, сворачивание и разворачивание.

Панель задач с подписями окон, часами и переключателем рабочих областей.
Меню «Пуск» со списком приложений и поиском в текущей раскладке.
Переключение окон по Alt+Tab с подтверждением при отпускании Alt.

Собственный растровщик текста на fontdb + fontdue с гамма-коррекцией
покрытия: без хинтинга штрихи на мелком кегле выходят рваными.

Приложения запускаются в отдельной сессии D-Bus, иначе однопользовательские
программы находят уже запущенный экземпляр во внешней сессии и открывают
окно не в Lark.

127 тестов, clippy без замечаний.
2026-10-18 09:18:57 +03:00

6.2 KiB
Raw 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)
  • Часы в системном трее (время и дата, локальная зона)
  • Переключатель рабочих областей на панели
  • Системный трей: сеть, звук, батарея
  • Уведомления

Не сделано в Фазе 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