Сборка: - 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 из меню «Пуск» - анимации появления меню и настроек (отключаются в настройках) - исправлено: обои перекрывали окна, клик оболочки уходил приложению, значки рабочего стола отбирали указатель, тень вылезала из-за скруглений прямоугольником, ярлыки не сдвигались при панели сверху Документация: раздел про удалённую сборку, описание интерфейса и настроек, холст и слои в архитектуре, обновлённая дорожная карта.
7.5 KiB
7.5 KiB
Дорожная карта 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