Repository navigation
Architecture
Rique edited this page Sep 25, 2026
·
1 revision
Homebase is a Rust workspace: one app crate with a Slint UI, and a set of focused library crates. The full write-up, with diagrams and data-flow examples, is in docs/ARCHITECTURE.md.
| Crate | Responsibility |
|---|---|
app |
The Homebase executable: Slint UI (app/ui), focus model, orchestrator (app/src/state.rs) |
hb-core |
Shared vocabulary: ids, models, input actions, settings, theme tokens, errors |
hb-store |
SQLite storage with migrations; the only owner of the database |
hb-sys |
Every Windows API: launching, windows and focus, media sessions, audio, power, display, icons, UI Automation |
hb-input |
SDL3 controllers, keyboard, remotes, gestures, bindings and input injection |
hb-appexp |
App experiences: launching apps and websites, exact window tracking, controller verbs, the pointer thread |
hb-providers |
Steam (library folders, owned-games cache, artwork), local games, the media/app catalog, site icons |
hb-session |
Game session state machine and identity-verified process tracking |
hb-policy |
Profiles, ratings, time limits and approvals |
hb-audio |
UI sounds |
hb-ext |
.hbpkg packages |
xtask |
Build, package and install automation |
- All Win32/WinRT calls live in
hb-sys; everything above it is portable. -
hb-coredefines vocabulary only and does no IO. -
hb-storeis the only code that touches SQLite. - The UI thread never blocks: scans, downloads, UI Automation and shell opens run on worker threads and report back through channels.
- Input to apps is only sent after verifying the app's own window is in front.
| Thread | Job |
|---|---|
| UI | Slint event loop, plus a 16 ms pump that drains every channel |
| Gamepad | Owns SDL3; posts input events and publishes stick positions |
| Pointer | Moves the mouse and scrolls for apps at about 250 Hz, straight from the stick |
| Session trackers | Follow game processes and play time |
| Workers | Library scans, artwork downloads, text-field checks, shell opens |
| Watchdog | Logs a warning if the UI thread ever stalls |
Homebase © 2026 Rique · GPL-3.0-or-later