| .. | ||
| .cargo | ||
| src | ||
| ui | ||
| build.rs | ||
| Cargo.toml | ||
| README.md | ||
ZeroClaw ESP32 UI Firmware
Slint-based graphical UI firmware scaffold for ZeroClaw edge scenarios on ESP32.
Scope of This Crate
This crate intentionally provides a minimal, bootable UI scaffold:
- Initializes ESP-IDF logging/runtime patches
- Compiles and runs a small Slint UI (
MainWindow) - Keeps display and touch feature flags available for incremental driver integration
What this crate does not do yet:
- No full chat runtime integration
- No production display/touch driver wiring in
src/main.rs - No Wi-Fi/BLE transport logic
Features
- Slint UI scaffold suitable for MCU-oriented iteration
- Display feature flags for ST7789, ILI9341, SSD1306
- Touch feature flags for XPT2046 and FT6X36 integration planning
- ESP-IDF baseline for embedded target builds
Project Structure
firmware/zeroclaw-esp32-ui/
├── Cargo.toml # Rust package and feature flags
├── build.rs # Slint compilation hook
├── .cargo/
│ └── config.toml # Cross-compilation defaults
├── ui/
│ └── main.slint # Slint UI definition
└── src/
└── main.rs # Firmware entry point
Prerequisites
-
ESP Rust toolchain
cargo install espup espup install source ~/export-esp.sh -
Flashing tools
cargo install espflash cargo-espflash
Build and Flash
Default target (ESP32-C3, from .cargo/config.toml)
cd firmware/zeroclaw-esp32-ui
cargo build --release
cargo espflash flash --release --monitor
Build for ESP32-S3 (override target)
cargo build --release --target xtensa-esp32s3-espidf
Feature Flags
# Switch display profile
cargo build --release --features display-ili9341
# Enable planned touch profile
cargo build --release --features touch-ft6x36
UI Layout
The current ui/main.slint defines:
StatusBarMessageListInputBarMainWindow
These components are placeholders to keep future hardware integration incremental and low-risk.
Next Integration Steps
- Wire real display driver initialization in
src/main.rs - Attach touch input events to Slint callbacks
- Connect UI state with ZeroClaw edge/runtime messaging
- Add board-specific pin maps with explicit target profiles
License
MIT - See root LICENSE