Maximus BBS

Documentation for Maximus BBS — Next Generation

View on GitHub

Lightbar Menus

Enabling arrow-key lightbar navigation on BBS menus

Lightbar menus add arrow-key navigation to the canned option list that Maximus prints for NOVICE-mode callers. Instead of reading a list and typing a hotkey, the caller sees a highlight bar they can move with the arrow keys and press Enter to select.

Lightbar mode is configured per-menu in the [custom_menu] table inside each menu’s TOML file (config/menus/*.toml). It is separate from the area-list lightbar settings in display.toml — see Lightbar Customization for those.


Basic Setup

Lightbar navigation requires three things:

  1. lightbar_menu = true — turns on the highlight bar.
  2. Valid boundariestop_boundary and bottom_boundary must both be set with valid coordinates. Lightbar uses positioned rendering, so it needs to know the rectangle.
  3. NOVICE help level — the caller must be in NOVICE mode. REGULAR and EXPERT always use the classic text path.

Without valid boundaries, lightbar_menu = true is silently ignored and Maximus falls back to the normal canned menu (text list + single-keystroke input).

Minimum Working Example

# config/menus/main.toml
option_width = 14

[custom_menu]
lightbar_menu = true
top_boundary = [8, 8]
bottom_boundary = [20, 61]

That’s enough. Maximus will render the canned option list inside the boundary with arrow-key navigation, hotkey detection, and Enter to select.

[custom_menu]
lightbar_menu = true
lightbar_margin = 1
top_boundary = [8, 8]
bottom_boundary = [20, 61]
prompt_location = [23, 1]

Advanced: Colors and Layout

Lightbar Colors

The lightbar painter supports four color states, each specified as a ["Foreground", "Background"] pair using DOS color names:

[custom_menu.lightbar_color]
normal        = ["Light Gray", "Black"]
high          = ["Yellow", "Black"]
selected      = ["White", "Blue"]
high_selected = ["Yellow", "Blue"]

If omitted, normal defaults to Light Gray on Black and selected defaults to Yellow on Blue.

Layout Controls

The [custom_menu] table also supports layout options that control how the option grid is arranged within the boundary:

These are covered in full detail — with visual examples, recipes, and troubleshooting — on the Canned & Bounded Menus page.


See Also