Rust SDL3 UI app workspace.
This project is very much a work in progress.
Most planned features are not implemented yet, and the current app should be treated as an early prototype while core architecture and layout/runtime behavior are still evolving.
This repository is now Rust-only. The legacy C/CMake implementation has been removed.
Current app scope:
- SDL3 app loop with resizable window lifecycle
- startup viewport sizing (
--width,--height) - startup page selection (
--page test) - single active page:
test - stack layout primitives in
cui_app/src/pages/layout.rs(VStack,HStack,SizeMode, overlays) - SVG icon rendering via SDL_image on the test page
- TTF font rendering via SDL_ttf for right-pane menu labels, including wrapped text rows
- lightweight overlay status text (
page=<id> | layout test mode | [esc] quit) - repo quality checks wired through
make precommit(cargo fmt --check,cargo clippy,cargo test) - tests currently act as a compile/run smoke check (no unit tests defined yet)
Cargo.toml: workspace manifestCargo.lock: workspace lockfileMakefile: Rust development shortcuts.githooks/pre-commit: local pre-commit checks.github/workflows/ci.yml: GitHub Actions CI workflowcui_app/: application crateassets/icons/: SVG icon assets used by prototype UI elementsassets/fonts/: bundled TTF font assets used by UI text renderingdocs/: design and planning notes for Rust layout/runtime evolutionscripts/capture_app_window.sh: macOS helper to capture app window screenshots
- Rust toolchain (
cargo,rustfmt,clippy) - GNU
make - macOS for
scripts/capture_app_window.sh(usesswift+screencapture)
From repository root:
cargo build -p cui_app
cargo run -p cui_app
cargo test -p cui_appOr use Make targets:
make build
make run
make test
make format
make format-check
make lint
make precommit
make install-hooksmake run defaults to:
--page test --width 2304 --height 1296
Override with RUN_ARGS or ARGS:
make run RUN_ARGS="--page test --width 1920 --height 1080"cui_app accepts:
--page <id>(currently onlytest)-w, --width <pixels>-h, --height <pixels>--help
Show help:
cargo run -p cui_app -- --helpInstall repo-managed Git hooks:
git config core.hooksPath .githooksOr run:
make install-hooksCurrent pre-commit flow:
make precommitmake precommit runs:
cargo fmt --all --checkcargo clippy -p cui_app --all-targets --all-featurescargo test -p cui_app
GitHub Actions runs the same baseline checks from .github/workflows/ci.yml on:
pushpull_request- manual trigger (
workflow_dispatch)
The workflow also installs Linux SDL build dependencies (X11/Wayland development packages) before running checks.
Build once, then capture the app window to /tmp:
cargo build -p cui_app
scripts/capture_app_window.sh ./target/debug/cui_app /tmp/rui-test-page.jpg 2 -- --page test --width 1920 --height 1080Capture files are intended to be ephemeral validation artifacts.
