Cycle¶
Auto-cycles through configured display modes on one or more regions at a configurable interval. Cycle is a meta-mode — rather than rendering its own content, it runs a background sequencer that advances other modes on a timer. This lets you create rotating displays that automatically showcase multiple modes without manual intervention.
Quick Start¶
With default settings, cycle advances to the next mode on the activating region every 30 seconds, skipping itself to avoid recursion.
How It Works¶
When activated, the cycle mode starts a background goroutine that fires on the configured interval. Each tick:
- Re-reads the current policy (supporting hot-reload of interval and mode list changes).
- Determines which regions to cycle — either the configured
regionslist or the region that activated the mode. - Advances each region to the next mode, skipping "cycle" itself and any mode not in the configured
modeslist (when specified).
The sequencer uses coordinator.Next() to advance modes, which wraps around from the last mode to the first. If a configured mode list is provided, only modes in that list are cycled to — others are skipped during advancement.
The mode renders a static placeholder view ("Cycling modes...") since its primary function is orchestrating other modes rather than producing display content.
Options¶
| Key | Type | Description | Default | Allowed Values |
|---|---|---|---|---|
| interval | duration | Time between automatic mode switches | 30s | 5s to 10m (any valid Go duration) |
| modes | string-list | Ordered list of mode IDs to cycle through (empty = all available on region) | (empty) | comma-separated mode IDs |
| regions | int-list | Region indices to cycle on (empty = activating region only) | (empty) | comma-separated non-negative integers (max 16) |
Configure options via the CLI:
CLI Examples¶
Query all current settings:
Set the cycling interval to 1 minute:
Cycle only through clock, dashboard, and system modes:
Cycle across multiple regions (main and left-aux):
Combine interval with a mode list:
Clear the mode filter to cycle all available modes:
Switch to cycle mode on a specific region:
Switch to cycle mode with inline policy:
Interval Normalization¶
The interval value is clamped to the range [5s, 10m]:
- Values below 5 seconds are raised to 5s to prevent display thrashing.
- Values above 10 minutes are capped at 10m.
- Zero or negative values default to 30s.
The interval supports any valid Go duration string (e.g., 10s, 1m30s, 2m).
Mode List Behavior¶
When modes is empty (the default), the sequencer cycles through all modes available on the region, skipping only "cycle" itself.
When modes contains specific mode IDs, only those modes are cycled to. If a mode in the list is not available on the region, it is skipped during advancement. Duplicate entries are deduplicated (first occurrence preserved).
Region Targeting¶
When regions is empty, cycling applies only to the region that activated the cycle mode.
When regions contains specific indices (e.g., 0,1,2), all listed regions are advanced on each tick. This allows a single cycle instance to orchestrate multiple displays simultaneously. The list is capped at 16 entries and deduplicated.
Panel Compatibility¶
Cycle mode works on all panels. It produces a static placeholder display and does not require input controls. Since cycle is a meta-mode, the actual display content comes from the modes being cycled to — the cycle mode itself only renders a brief transition indicator before switching.
| Capability | Description | Behavior |
|---|---|---|
| MonoFast | Fast-refresh monochrome OLED (128×32, 128×64, 128×128) | Fully supported — placeholder text rendered in native foreground, transitions occur at configured interval |
| MonoSlow | Slow-refresh monochrome e-ink (122×250, 176×264, 200×200, 296×128, 400×300, 480×800, 800×480) | Fully supported — static placeholder frame, mode switches occur without animation |
| GrayscaleFast | Fast-refresh grayscale (160×80, 240×135, 240×240, 320×240, 480×320, 800×480) | Fully supported — grayscale placeholder rendering with timed transitions |
| GrayscaleSlow | Slow-refresh grayscale e-ink (122×250, 176×264, 200×200, 400×300, 800×480) | Fully supported — static placeholder, transitions occur without animation |
| ColorFast | Fast-refresh color TFT (128×128, 160×80, 240×135, 240×240, 320×240, 480×320, 800×480) | Fully supported — color placeholder text, smooth timed transitions |
| ColorSlow | Slow-refresh color e-ink (122×250, 176×264, 200×200, 400×300, 800×480) | Fully supported — static placeholder, transitions occur without animation |
Related Pages¶
- Display Modes — overview of all available modes
- Getting Started: CLI Usage — introduction to
cyberhudctlcommands - Configuration — persistent configuration options
- Clock — commonly included in cycle mode lists
- Dashboard — commonly included in cycle mode lists
- System — commonly included in cycle mode lists
- Thermal — commonly included in cycle mode lists
- WiFi — commonly included in cycle mode lists
Snapshots¶
Mono¶