Display Modes¶
Display modes control what content is rendered on your attached panel. Each mode is a self-contained module that produces a view — title, items, sprites — which the UI loop renders to the display surface. CyberHUD ships with 27 user-facing display modes covering everything from clocks and system dashboards to serial monitors, interactive menus, and user-driven gauges.
Mode Summary¶
| Mode ID | Title | Summary |
|---|---|---|
| attract_bokeh | Bokeh | Ambient floating bokeh light orbs with configurable size and saturation |
| attract_geometric | Geometric | Clusters of semi-transparent rotating rectangles with sinusoidal fade and glow effects |
| attract_hacking | Hacking | Rapid-fire command output simulation with scrolling terminal effect |
| attract_matrix | Attract Matrix | Cascading character rain effect inspired by the Matrix |
| attract_particles | Particles | Drifting particle field with glow and drift effects |
| attract_plasma | Plasma | Animated plasma color cycling with blob scaling |
| attract_shapes | Shapes | Pulsing geometric shapes with configurable complexity |
| attract_starfield | Starfield | Multi-layer parallax starfield animation |
| attract_waveform | Waveform | Flowing waveform traces with persistence and direction control |
| clock | Clock | Displays the current time with configurable style |
| cycle | Cycle | Auto-cycles through configured display modes on one or more regions at a configurable interval |
| dashboard | Dashboard | Consolidated status overview of STEMMA devices, GPIO, and system health |
| gauges | Gauges | User-supplied progress bars, rings, and dials for personal dashboards |
| gpio | GPIO | Read-only view of GPIO pin states with color coding |
| gpio_control | GPIO Control | Interactive GPIO pin toggling via buttons/joystick |
| image | Image | Displays a static image on the panel |
| menu | Menu | Interactive on-display navigation menu |
| pager | Pager | Tails a data source and presents text with smooth scrolling or page transitions |
| serial | Serial Monitor | Live serial communication monitor with scrolling text |
| stemma | STEMMA | Lists detected I2C STEMMA QT/QWIIC devices |
| system | System | Host information including hostname, uptime, CPU, memory, network |
| systemd | Systemd Boot | Boot progress diagnostics shown during daemon startup |
| thermal | Thermal | Temperature monitoring with thermal zone visualization |
| ticker | Ticker | Scrolling text feed from external data sources |
| usb | USB Bench | USB device identification with hot-plug detection |
| wifi | WiFi | Wireless network status, signal strength, and connection details |
| zmq | ZMQ | ZeroMQ message bus display for inter-process communication |
Listing Available Modes¶
Not every mode is available on every panel. To see which modes are enabled for your active panel:
For detailed mode metadata including configuration options:
Tip
The output of cyberhudctl display modes reflects your panel's actual capabilities — only modes compatible with the panel's input controls and display resolution are listed.
Switching Modes¶
Switch the active display mode using either syntax:
You can also cycle through modes:
Regions are addressed using <surface>.<index> notation (e.g., main.0, left-aux.0) or bare integer coordinator indices (0, 1, 2). Run cyberhudctl display regions to see configured regions.
Note
If you are new to cyberhudctl, see the Getting Started CLI page for an introduction to command syntax and connection setup.
Mode Availability¶
flowchart TD
PANEL[Panel Definition] --> HAS_INPUT{Has input pins?}
HAS_INPUT -->|Yes| INTERACTIVE[Interactive mode set<br/>menu, gpio-control, ...]
HAS_INPUT -->|No| PASSIVE[Passive mode set<br/>dashboard, clock, ...]
INTERACTIVE --> RESOLUTION{Resolution / color depth}
PASSIVE --> RESOLUTION
RESOLUTION --> AVAILABLE[Available modes for panel]
Not all modes are available on every panel. The available modes depend on:
- Input controls — Interactive modes like
menuandgpio-controlrequire buttons or a joystick. Panels without input run in passive mode withdashboardas the default. - Display capabilities — Some modes produce content optimized for specific resolutions or color depths.
- Panel configuration — Each panel defines its own ordered list of supported modes.
Use cyberhudctl display modes to see which modes are enabled for your active panel.
How Modes Work¶
flowchart LR
subgraph "Mode Package (e.g. clock)"
IMPL[Implements Mode interface]
REG[Register in registry via init]
CAT[Publish catalog metadata]
CMD[Register console commands]
end
subgraph "Runtime"
TICK[Render tick] --> BV[Call BuildView]
BV --> COMP[Composite onto surface]
COMP --> FLUSH[Flush to display hardware]
end
IMPL --> BV
REG --> TICK
CAT --> CLI[cyberhudctl discovery]
Each display mode is a Go package under display/modes/ that:
- Implements the
Modeinterface — providesBuildView()and lifecycle methods - Registers in the central mode registry at import time via an
init()function - Publishes catalog metadata (title, summary, options) for CLI discoverability
- Optionally registers console commands for mode-specific interaction (e.g.
ticker set,image set)
The daemon's UI loop queries the active mode on each render tick, calls BuildView() to get the current state (title, items, colors, sprites), and composites the result onto the display surface.
For more on how this fits into the overall system, see the Architecture page.