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