# Дорожная карта 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