Overview
The command palette is a searchable overlay that exposes every action in Jarvis. PressCmd+P (or your configured keybind) to open it, type to filter, and press Enter to execute.
Fuzzy Search
Type partial matches to filter actions
Categorized
Actions grouped by category (Panes, Window, Apps, etc.)
Dynamic Items
Plugins and games automatically added
Keyboard Navigation
Arrow keys, Enter, and Escape
Input Modes
The input system maintains anInputMode that determines how key events are routed:
| Mode | Description |
|---|---|
Terminal | Default. Keybinds checked first; unmatched keys sent to PTY |
CommandPalette | Palette open. All keys routed to filter/selection handler |
Assistant | AI assistant panel open. Keys routed to text input |
Settings | Settings UI open. Keys consumed (not forwarded to terminal) |
Opening the command palette sets mode to
CommandPalette until dismissed.Palette Categories
Actions are organized into 7 categories:Panes
Panes
- New Pane
- Close Pane
- Split Horizontal / Vertical
- Focus Pane (1-5)
- Focus Next/Previous
- Zoom Pane
- Resize Pane
- Swap Pane
Window
Window
- Toggle Fullscreen
- Quit
Apps
Apps
- Command Palette
- Settings
- Chat
- Assistant
- Close Overlay
Terminal
Terminal
- Scroll Up/Down
- Scroll to Top/Bottom
- Copy / Paste / Select All
- Find (Open/Close/Next/Previous)
- Clear Terminal
Games
Games
- Asteroids
- Tetris
- Minesweeper
- Pinball
- Doodle Jump
- Subway Surfers
- Kart Bros
- Basket Bros
Web
Web
- Open URL (dynamic prompt)
System
System
- Pair Mobile Device
- Revoke Mobile Pairing
- Reload Config
- Push to Talk
Action Enum
Every user-triggerable operation is represented by anAction variant. Here are key examples:
Default Keybinds
These are the built-in keyboard shortcuts:| Keybind | Action | Description |
|---|---|---|
Cmd+P | OpenCommandPalette | Open command palette |
Cmd+Shift+P | OpenSettings | Open settings panel |
Cmd+T | NewPane | Create new terminal pane |
Cmd+W | ClosePane | Close current pane |
Cmd+D | SplitHorizontal | Split pane side-by-side |
Cmd+Shift+D | SplitVertical | Split pane top-bottom |
Cmd+1 through Cmd+5 | FocusPane(n) | Focus pane by number |
Cmd+[ | FocusPrevPane | Cycle focus left |
Cmd+] | FocusNextPane | Cycle focus right |
Cmd+Shift+F | ToggleFullscreen | Toggle fullscreen |
Cmd+Q | Quit | Quit application |
Cmd+C | Copy | Copy selection |
Cmd+V | Paste | Paste from clipboard |
Cmd+A | SelectAll | Select all text |
Cmd+K | ClearTerminal | Clear scrollback |
Cmd+F | SearchOpen | Open find bar |
Cmd+/ | OpenChat | Open chat panel |
Cmd+Shift+A | OpenAssistant | Toggle AI assistant |
Left Control | PushToTalk | Voice input (hold) |
All keybinds are customizable in
config.toml. See Configuration: Keybindings for details.Palette Implementation
Rendering
The palette is rendered byCommandPalette in the jarvis-renderer crate:
Filtering
Fuzzy matching is case-insensitive and matches partial strings:Keyboard Navigation
WhenInputMode::CommandPalette is active:
- Up/Down Arrow: Change
selected_index - Enter: Dispatch the selected action
- Escape: Close palette and return to
Terminalmode - Any other key: Append to
filterstring
IPC Integration
The palette communicates with WebViews via IPC: Rust → JavaScript:Adding Custom Actions
Plugins can add items to the palette by declaring actions inplugin.toml:
Source References
jarvis-rs/crates/jarvis-renderer/src/command_palette.rs- Palette statejarvis-rs/crates/jarvis-platform/src/input_processor/- Input routingjarvis-rs/crates/jarvis-common/src/actions/- Action enumdocs/manual/07-input-palette.md- Complete reference