# Car UI ## Reference hardware Текущая версия Car UI разрабатывается и тестируется на следующей конфигурации: - Raspberry Pi 4B (4 GB RAM); - 7" IPS touchscreen; - разрешение 1024×600; - HDMI для вывода изображения; - USB для touchscreen input; - встроенные динамики дисплея.

7 inch touchscreen front view Raspberry Pi 4B mounted behind touchscreen

## Architecture В production-режиме полноценный Desktop Environment не используется. ```text Raspberry Pi 4B ↓ Debian 13 (Trixie) ↓ systemd ↓ multi-user.target ↓ tty1 ↓ car-ui.service ↓ Qt EGLFS ↓ DRM/KMS ↓ Car UI ``` Bluetooth подготавливается отдельным `bt-unblock.service`, который снимает RFKill-блокировку перед запуском Car UI. ## Project structure ```text car_ui/ ├── assets/ # Ресурсы приложения ├── audio/ # Работа с аудио ├── controllers/ # Контроллеры приложения ├── docs/ # Документация ├── screens/ # Экраны интерфейса ├── scripts/ # Build / run / deploy scripts ├── services/ # Сервисы приложения ├── system_configs/ # systemd units и системная конфигурация ├── themes/ # Темы интерфейса ├── ui/ # UI-компоненты │ ├── car_ui.spec # Конфигурация PyInstaller ├── main.py # Entry point ├── requirements.txt # Python-зависимости └── README.md ``` ## Quick start ### Development Подготовить окружение и собрать проект: ```bash ./scripts/build.sh ``` `build.sh` автоматически: - создаёт `.venv`, если окружение отсутствует; - устанавливает зависимости из `requirements.txt`; - собирает приложение через PyInstaller. Для запуска исходного кода: ```bash ./scripts/run.sh ``` Логи прямого запуска сохраняются в: ```text debug.log ``` ### Build Собрать standalone-приложение: ```bash ./scripts/build.sh ``` Результат сборки: ```text dist/car_ui/ ├── car_ui └── _internal/ ``` PyInstaller использует конфигурацию: ```text car_ui.spec ``` ### Deploy Установить готовую сборку в систему: ```bash sudo ./scripts/deploy.sh ``` Приложение устанавливается в: ```text /opt/car_ui/ ``` Production systemd service запускает: ```text /opt/car_ui/car_ui ``` ## Production and Development modes Car UI поддерживает два режима работы системы. ### Car mode Используется для штатной работы магнитолы: ```text multi-user.target ↓ tty1 ↓ Qt EGLFS ↓ Car UI ``` Desktop Environment при этом не запускается. ### Development mode Для разработки используется обычный: ```text graphical.target ↓ Desktop Environment ↓ scripts/run.sh ``` Инструкции по настройке и переключению режимов находятся в: [`docs/auto-start.md`](docs/auto-start.md) ## First system setup Инструкция по подготовке чистой Debian 13 (Trixie), установке системных зависимостей, сборке и первоначальному развёртыванию: [`docs/first-system-setup.md`](docs/first-system-setup.md) ## Configuration Конфигурация UI хранится в: ```text ~/.config/car_ui/ui.conf ``` ## Marker files В корне проекта могут использоваться специальные marker-файлы. ### `reset` Сигнал приложению выполнить сброс до заводских настроек. Создать: ```bash touch reset ``` Удалить: ```bash rm reset ``` ### `dev_mode_enable` Включает режим разработчика приложения. Создать: ```bash touch dev_mode_enable ``` Удалить: ```bash rm dev_mode_enable ``` ## Documentation Основная документация проекта находится в `docs/`: - [`first-system-setup.md`](docs/first-system-setup.md) — подготовка чистой системы; - [`auto-start.md`](docs/auto-start.md) — systemd, автоматический запуск и переключение Car / Development mode.