car_ui/README.md
2026-09-15 16:14:49 +03:00

216 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Car UI
Интерфейс автомобильной мультимедийной системы для Raspberry Pi 4B с сенсорным дисплеем.
Приложение разработано на Python с использованием PySide6 / Qt 6 и рассчитано на работу как в обычном Desktop Environment во время разработки, так и напрямую через Qt EGLFS / DRM/KMS в production-режиме.
## 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.