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

228 lines
5.1 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
## Reference hardware
Текущая версия Car UI разрабатывается и тестируется на следующей конфигурации:
- Raspberry Pi 4B (4 GB RAM);
- 7" IPS touchscreen;
- разрешение 1024×600;
- HDMI для вывода изображения;
- USB для touchscreen input;
- встроенные динамики дисплея.
<p align="center">
<img src="docs/images/hardware-front.png" width="45%" alt="7 inch touchscreen front view">
<img src="docs/images/hardware-back.png" width="45%" alt="Raspberry Pi 4B mounted behind touchscreen">
</p>
## 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.