TUI Navigation

The Teabar TUI is designed for efficient keyboard navigation. Both vim-style keys and standard arrow keys are fully supported.

Navigation Philosophy

The TUI follows these principles:

  1. Keyboard-first - Every action is accessible via keyboard
  2. Vim + Arrows - Both navigation styles work equally
  3. Consistent patterns - Same keys work similarly across views
  4. Discoverable - Press ? for help at any time

Global Navigation

These shortcuts work in all views:

KeyVimAction
Tab-Next tab/pane
Shift+Tab-Previous tab/pane
?-Toggle help overlay
q-Quit TUI
Ctrl+C-Quit TUI
/-Focus search/filter
Esc-Close overlay / cancel / back
R-Refresh current view

Movement

Basic Movement

ArrowVimAction
kMove up
jMove down
hCollapse / move left / back
lExpand / move right / enter

Extended Movement

KeyAction
gGo to top of list
GGo to bottom of list
Ctrl+UPage up
Ctrl+DPage down
HomeGo to top
EndGo to bottom

Tab Navigation

Switch between views using the tab bar:

┌─[ Environments ]─[ Logs ]─[ Catalog ]─[ Activity ]─────┐
     ^              ^         ^          ^
     1              2         3          4
KeyAction
TabNext tab
Shift+TabPrevious tab
1Environments view
2Logs view
3Catalog view
4Activity view

List Navigation

In list views (environments, blueprints, activity):

KeyAction
↑/kPrevious item
↓/jNext item
EnterSelect / view details
SpaceToggle selection (multi-select)
gFirst item
GLast item

Multi-Select

Some views support selecting multiple items:

│   NAME             STATUS      BLUEPRINT         │
│ ✓ march-seminar    Running     gitlab-cicd       │  ← Selected
│   test-env         Sleeping    k8s-basics        │
│ ✓ demo             Running     argocd-demo       │  ← Selected
KeyAction
SpaceToggle current item selection
aSelect all
nSelect none
*Invert selection

Then use action keys (like s for start, d for delete) to operate on all selected items.

Tree Navigation

In hierarchical views (environment details, component explorer):

│ Resources                      │
│ ├─ Cluster: main (3 nodes)     │  ← Collapsed
│ │   ├─ control-plane-1 ●       │
│ │   ├─ worker-1 ●              │
│ │   └─ worker-2 ●              │
│ ├─ VMs                         │  ← Collapsed
│ └─ Storage                     │  ← Collapsed
KeyAction
→/lExpand node
←/hCollapse node / go to parent
EnterToggle expand/collapse
oOpen node (expand)
OOpen all (expand recursively)
cClose node (collapse)
CClose all (collapse recursively)

Split Pane Navigation

In split-pane views (catalog browser, create wizard):

┌─ Left Pane ──────────────┐  ┌─ Right Pane ──────────────┐
│                          │  │                           │
│ Configuration            │  │ Preview                   │
│                          │  │                           │
└──────────────────────────┘  └───────────────────────────┘
KeyAction
TabSwitch to other pane
Shift+TabSwitch to other pane
Ctrl+←Focus left pane
Ctrl+→Focus right pane
=Toggle 50/50 split
Ctrl+\Maximize current pane

Form Navigation

In forms and wizards:

│ ▼ General                      │
│   Name: [march-seminar___]     │  ← Current field
│   TTL:  [48h ▼]                │
│                                │
│ ▼ Variables                    │
│   participant_count: [10_]     │
KeyAction
↑/kPrevious field
↓/jNext field
EnterEdit current field
SpaceToggle checkbox / open dropdown
TabNext field
Shift+TabPrevious field
EscCancel editing / close dropdown

Field Editing

When editing a field:

KeyAction
EnterConfirm edit
EscCancel edit
Ctrl+ASelect all
Ctrl+UClear field
←/→Move cursor
BackspaceDelete character

Dropdowns

When a dropdown is open:

│   TTL:  [48h           ▼]     │
│         ┌───────────────┐     │
│         │ 1h            │     │
│         │ 4h            │     │
│         │ 8h            │     │
│         │▶24h           │  ← Selected
│         │ 48h           │
│         │ 7d            │
│         └───────────────┘     │
KeyAction
↑/kPrevious option
↓/jNext option
EnterSelect option
EscCancel selection
TypeFilter options

Dialog Navigation

In modal dialogs:

┌─ Confirm Delete ───────────────────────────────────────┐
│                                                        │
│ Delete environment 'march-seminar'?                    │
│                                                        │
│ This will permanently delete all resources.            │
│                                                        │
│             [ Cancel ]     [ Delete ]                  │
│                                                        │
└────────────────────────────────────────────────────────┘
KeyAction
TabNext button
Shift+TabPrevious button
EnterActivate focused button
EscCancel / close dialog
yConfirm (if confirmation dialog)
nCancel (if confirmation dialog)

Search and Filter

Press / to enter search mode:

│ Filter: kubectl_____________                           │
│ ▼ showing 23 of 156 results                            │
KeyAction
/Start search
EnterApply filter
EscClear filter
Ctrl+UClear input
Previous search history
Next search history

Search Syntax

Some views support advanced search:

# Simple text search
kubectl

# Field-specific search
type:kubectl

# Multiple terms (AND)
type:kubectl participant-3

# Status filter
status:failed

Log Viewer Navigation

Special navigation for the log viewer:

KeyAction
fToggle follow mode
pPause/resume
↑/kScroll up (when paused)
↓/jScroll down (when paused)
gGo to oldest log
GGo to newest log
eNext error
EPrevious error
nNext search match
NPrevious search match

Mouse Support

Mouse support is enabled by default:

ActionEffect
ClickSelect item
Double-clickOpen/activate item
ScrollScroll content
Click tabSwitch to view
Click buttonActivate button

Disable mouse in config:

tui:
  mouse: false

Or via environment:

TEABAR_TUI_MOUSE=false teactl ui

Accessibility

Screen Reader Mode

For better screen reader compatibility:

teactl config set tui.accessibility.screen_reader true

High Contrast

Enable high contrast mode:

teactl config set tui.high_contrast true

No Color Mode

Disable all colors:

export NO_COLOR=1
teactl ui

Customization

Key Remapping

Key bindings can be customized in ~/.teactl/config.yaml:

tui:
  keybindings:
    quit: ["q", "ctrl+c"]
    help: ["?", "F1"]
    search: ["/", "ctrl+f"]

Quick Reference Card

Print this for reference:

╔═══════════════════════════════════════════════════════╗
║              TEABAR TUI QUICK REFERENCE               ║
╠═══════════════════════════════════════════════════════╣
║ MOVEMENT        │ ACTIONS          │ VIEWS            ║
║ ↑/k    up       │ Enter  select    │ Tab    next tab  ║
║ ↓/j    down     │ Space  toggle    │ 1-4    goto tab  ║
║ ←/h    back     │ /      search    │                  ║
║ →/l    forward  │ ?      help      │                  ║
║ g      top      │ q      quit      │                  ║
║ G      bottom   │ R      refresh   │                  ║
╚═══════════════════════════════════════════════════════╝

Related Pages

ende