How vladelaina/bongocat works
BongoCat is a desktop companion that displays animated Live2D pets and reacts to mouse, keyboard, and gamepad activity. The main workflow is startup and configuration, model selection/loading, event processing, model animation, and rendering in a transparent desktop window. Users can also import models and configure behavior through preferences; audio, tray, multi-pet support, and update checking broaden the runtime. The map uses the README and sampled source; some subsystem connections are omitted where the available excerpts do not establish their wiring.
Main entry points: app_loop.c Main loop · app.c App startup · preferences.c Preferences UI · window.c Desktop window
Components 20
App lifecycle
- App startup
src/runtime/lifecycle/app.c - Main loop
src/runtime/lifecycle/app_loop.c - Storage paths
src/runtime/lifecycle/storage_paths.c - Config store
src/runtime/lifecycle/config_store.c
Models and import
- Model import
src/runtime/model/import/model_import_app.c - Import worker
src/ui/preferences/preferences_import_worker.c - Model catalog
src/runtime/model/model_catalog_runtime.c - Model storage
src/runtime/model/model_storage.c
Input and rendering
- Desktop window
src/runtime/shell/window.c - Platform input
src/platform/linux/linux.c - Mouse mapping
src/runtime/input/mouse_pipeline.c - Shortcuts
src/runtime/input/shortcuts.c - Live2D runtime
src/live2d/cubism_model_update.cpp - Overlay renderer
src/render/overlay.c
Settings and UI
- Preferences UI
src/ui/preferences/preferences.c
Runtime services
- Audio playback
src/media/audio/audio_playback.c - System tray
src/runtime/shell/tray.c - Multi-pet runtime
src/runtime/model/multi_pet.c - Update service
src/runtime/update/update_service.c
Other components
- Desktop user
Connections 23
- Desktop user → Desktop window: interacts with
- Desktop user → Preferences UI: configures
- App startup → Storage paths: prepares paths
- App startup → Config store: loads settings
- App startup → Desktop window: creates
- App startup → Model catalog: selects model
- App startup → Main loop: runs
- Platform input → Main loop: reports events
- Main loop → Mouse mapping: applies pointer
- Mouse mapping → Live2D runtime: sets parameters
- Main loop → Live2D runtime: updates model
- Main loop → Overlay renderer: renders frame
- Overlay renderer → Desktop window: draws into
- Preferences UI → Config store: saves settings
- Preferences UI → Import worker: starts import
- Import worker → Model import: installs sources
- Model import → Model storage: writes model files
- Model catalog → Model storage: uses model files
- Main loop → Shortcuts: processes shortcuts
- Main loop → Audio playback: plays sounds
- Main loop → System tray: updates tray
- Main loop → Multi-pet runtime: coordinates pets
- Main loop → Update service: checks updates