Overview
DashboardManager handles dashboard content and layouts across the system. It provides contextual information to users through various display modes, manages content from multiple apps, implements circular queue rotation for content cycling, and supports system-level dashboard updates. File:packages/cloud/src/services/dashboard/DashboardManager.ts
Key Features
- Multiple Display Modes: Main, Expanded, and Always-on dashboard modes
- Content Rotation: Circular queue for cycling through app content
- Head Gesture Support: Look-up gesture cycles through content
- System Content Management: Dedicated sections for system information
- App Content Integration: Apps can submit content for different modes
- Mode Authorization: Only system dashboard app can change modes
- Flexible Layouts: Supports various layout types for different contexts
Architecture
Dashboard Modes
Mode Types
Mode Characteristics
-
Main Mode
- Full dashboard experience
- System info in all corners
- Rotating app content
- Head-up gesture support
-
Expanded Mode
- Minimal system info (single line)
- More space for app content
- Latest content displayed
-
Always-on Mode
- Persistent overlay
- Essential info only
- Minimal visual footprint
Content Management
Content Structure
Content Queues
Head Gesture Support
Head-up Handler
Circular Queue Implementation
Message Handling
Content Update
Mode Change
System Update
Layout Generation
Main Mode Layout
Expanded Mode Layout
Content Extraction
App Disconnection Handling
Display Integration
Configuration
Lifecycle Management
Disposal
Best Practices
- Respect mode authorization - Only system dashboard can change modes
- Handle content rotation carefully - Maintain index bounds
- Sort content by timestamp for consistent ordering
- Extract text properly from different layout types
- Clean up on app disconnect to prevent stale content
- Use appropriate layouts for each dashboard mode
- Log state transitions for debugging
Integration Points
- DisplayManager: Sends display requests
- AppManager: Validates app connections
- WebSocket Service: Receives app messages
- Head Tracking: Processes head-up gestures
Related Documentation
- DisplayManager: Display handling
- AppManager: App state management
- Message Types: Dashboard message formats
- Layout Types: Available display layouts