Luxe

Commands and keys

The Command Palette, slash commands, Help, every default key, and how to rebind them.

View as Markdown

Command Palette and slash commands

Every command is in two places:

  • Command Palette (ctrl+k) opens over whatever you are doing, anywhere, with your draft left where it was.
  • Slash commands: type / at the start of an empty composer and the same commands open above it.

▸  3 read calls 12ms 󰍉 Command palette Search: ❯ Session cost /cost Session cost Review changes /diff ctrl+g /cost Change model /model What this session has cost, by model and by Ask again alt+t kind of token. Auto-approve tool asks /permissions Browse files by keyboard ctrl+t On a subscription it shows the allowance Change theme /theme left rather than dollars. Compact the conversation /compact Configuration /config Context Dock /dock alt+d Context window /context Copy message alt+y Credentials /auth Debug adapters /debug Edit and resend alt+e Full tool output ctrl+o GitHub /github Help /help Inline images /images enter run · ↑/↓ choose · esc close 1/40  3.1%/1.0M 󰌵 med 󰚩 claude-sonnet-5
The Command Palette, with the commands used last at the top

Both list only what can run where you are, with the five you used last at the top. Type to filter by name, slash command or a few words each is known by: exit finds Quit. A pane beside the list says what the command does and the arguments it takes.

enter runs a command. In the slash list, tab puts it in the composer so you can add arguments: /diff pr 142, /dock left, /compact the API decisions.

Past the command, the list shows the arguments it takes, such as /diff turn or /diff pr <number or URL>, and narrows as you type. tab fills in the one under the cursor. enter runs it when nothing is missing, and fills it in when it still needs a value. esc puts the list away for that command. In the composer, a command Luxe knows is highlighted, and so are the words of it you have typed, like pr in /diff pr 142. A command that stays plain is misspelled.

Slash commands

CommandDoes
/helpEvery key for this screen, as you have bound them
/modelChange the model; the session carries on
/thinkingHow hard the model reasons, from Off to Ultra
/modeSwitch between build and plan mode: /mode, /mode plan, /mode build (shift+tab)
/reviewA second opinion on the uncommitted changes: /review, /review error handling
/newStart a new session. The current one is kept.
/sessionsFind another session in this project and pick it up; see Sessions
/contextWhat fills the context window, largest first
/compactSummarize the conversation now. Add what to keep: /compact the API decisions.
/costWhat this session has cost, by model and kind of token
/searchFind text in the conversation
/diffOpen a Guided Review: /diff, /diff turn, /diff base main, /diff commit <sha>, /diff pr 142
/previewPreview a file, whole or as its diff: /preview, /preview src/app.rs
/editorOpen the project in your editor, or a file: /editor, /editor src/app.rs, /editor src/app.rs:42
/prThis branch’s pull request: status, reviewers and conversation
/githubPull requests and issues on GitHub
/stackRestack a stack of pull requests
/worktreeWhere this session works. /worktree remove ends it and removes its worktree.
/dockShow or hide the dock: show, hide, auto, left, right
/statuslineShow or hide the statusline: show, hide, auto
/themePreview and choose a theme
/mouseMouse capture on or off
/imagesWhat this terminal can draw, and why
/permissionsApprove every tool call that would ask you: on, off. Deny rules still apply.
/toolsEvery tool the agent can use this run, and the ones it cannot
/lspLanguage servers: which started, and what they are doing
/debugDebug adapters, and whether each can be reached
/mcpMCP servers, and the tools each offers
/configProviders, credentials, settings and config files
/settingsSettings as controls: appearance, the conversation, the dock, tools and the agent
/login, /logoutAdd or remove a provider’s credential
/authWhich providers you are signed in to, and how
/reloadRe-read your config and keys without restarting
/quitLeave Luxe. The session is already saved.

The Command Palette also lists commands with no slash form, such as Copy message, Swap the sidebar’s side and, in a review, Send comments.

Help

Help (/help) shows every key for the screen you are on, grouped and drawn from your own bindings. In Guided Review it shows the review’s keys. Help has no default key, because the obvious ones do not reach a terminal program reliably. To give it one:

~/.config/luxe/keybindings.json
{ "tui.app.toggle_help": ["f1"] }

Default keys

The name in the last column is what keybindings.json uses.

Compose

KeyDoesName
enterSend, or steer a running turn
shift+enterNew linetui.editor.new_line
alt+qQueue the message for the next turntui.editor.queue_message
alt+↑Bring waiting messages backtui.editor.dequeue_message
ctrl+escStop the turntui.editor.cancel
ctrl+v, shift+insertPastetui.editor.paste
alt+aSelect the whole drafttui.editor.select_all

enter and alt+enter are fixed. ctrl+enter also sends, as tui.editor.submit.

Read

KeyDoesName
ctrl+↑, ctrl+↓Scrolltui.convo.scroll_up, tui.convo.scroll_down
pageup, pagedownScroll a pagetui.convo.page_up, tui.convo.page_down
ctrl+fSearch the conversationtui.convo.search
alt+k, alt+jSelect the previous or next messagetui.convo.select_block_up, tui.convo.select_block_down
ctrl+oFull tool outputtui.convo.toggle_tool_output
alt+iView imagetui.convo.open_image
alt+yCopy messagetui.convo.copy_message
ctrl+insert, ctrl+shift+cCopy selectiontui.convo.copy_selection

Conversation

KeyDoesName
alt+eEdit and resend your last messagetui.convo.edit_resend
alt+tAsk againtui.convo.retry
alt+gReplace the last answertui.convo.regenerate

An edit replaces your last message and the answer to it, and Replace the last answer drops the old answer, so the model sees only the new version. Ask again sends your last message once more, after the answer if there was one. The replaced messages stay in the session file but leave the conversation. All three wait for a running turn to finish.

Workspace

KeyDoesName
ctrl+kCommand Palettetui.app.open_palette
shift+tabSwitch between build and plan mode, from the composer or the start screentui.app.cycle_mode
alt+dShow or hide the docktui.workspace.toggle_dock
alt+sShow or hide the statuslinetui.statusline.toggle
ctrl+pPreviewtui.preview.toggle
alt+n, alt+pNext or previous changed file, in the previewtui.preview.file_next, tui.preview.file_prev
alt+wWrap long lines, in the previewtui.preview.toggle_word_wrap
alt+oOpen the file in your editor, in the previewtui.preview.open_in_editor
alt+mShow a changed file whole, or its diff, in the previewtui.preview.toggle_view
alt+lAsk about the lines you picked, in the previewtui.preview.ask_about_selection
ctrl+tMove the keyboard into the dock’s file tree, then into the file showingtui.workspace.focus_files
ctrl+gGuided Reviewtui.review.open
ctrl+shift+rReload config and keystui.app.reload
ctrl+cQuittui.app.quit

Guided Review

KeyDoesName
cComment on this linetui.review.add_finding
aAsk the agenttui.review.ask
alt+enterFinish reviewtui.review.finish
alt+uSend commentstui.review.send
alt+cAll commentstui.review.findings
eEdit the selected commenttui.review.edit_finding
xDelete the selected unsent commenttui.review.delete_finding
rResolve or reopen the selected commenttui.review.resolve_finding
alt+rReanchor the selected stale commenttui.review.reanchor_finding
], [Next or previous chaptertui.review.chapter_next, tui.review.chapter_prev
n, shift+nNext or previous hunktui.review.hunk_next, tui.review.hunk_prev
enterOpen what the cursor is ontui.review.open_selection
homeBack to column zerotui.review.line_start
g, alt+vShow or hide the guidetui.review.toggle_guide
fOpen or fold collapsed churntui.review.toggle_noise
ctrl+bSide by side, or one columntui.review.toggle_split
wWrap long linestui.review.toggle_word_wrap
sChange what is reviewedtui.review.source
ctrl+rRefresh the reviewtui.review.refresh
oOpen on GitHubtui.review.open_in_browser
shift+eOpen the file in your editor, at the cursor’s linetui.review.open_in_editor
alt+←Back to the conversationtui.review.return_chat
?Helptui.review.help

Rebind keys

Put your bindings in ~/.config/luxe/keybindings.json, or open it from Configuration with Edit configuration files. Each entry is a name from the tables above and a list of keys:

~/.config/luxe/keybindings.json
{
  "tui.app.open_palette": ["ctrl+p"],
  "tui.preview.toggle": ["alt+p"],
  "tui.app.toggle_help": ["f1"]
}
  • A binding replaces that action’s default keys rather than adding to them.
  • A key you bind is taken from any action that had it by default.
  • A key is modifiers and one key joined by +: ctrl, shift, alt, then a letter, a digit, enter, esc, tab, space, backspace, delete, insert, an arrow (up, down, left, right), home, end, pageup, pagedown, or f1 to f12.
  • An unknown name or key is skipped with a warning in the log, and the rest still load. An action whose keys are all invalid is left with none, rather than its defaults.
  • A project’s .luxe/keybindings.json applies over yours.

/reload or ctrl+shift+r applies a change without restarting.

Alt keys on a Mac

A Mac has no Alt key. Its Option key types characters instead: option+o is ø, option+p is π. Most of Luxe’s alt keys need your terminal to send Option as Alt:

TerminalSetting
Ghosttymacos-option-as-alt = true (or left)
iTerm2Profiles › Keys › Left Option key: Esc+
TerminalSettings › Profiles › Keyboard › Use Option as Meta key
kittymacos_option_as_alt yes
WezTermLeft Option already sends Alt; for the right one, send_composed_key_when_right_alt_is_pressed = false
Alacrittyoption_as_alt = "Both" under [window]

Ghostty already does this on the “U.S.” keyboard layouts. On the others it sends the character and marks it as an Alt key. On “ABC”, the Mac’s default English layout, Luxe reads that back as the key you pressed, so option+o opens a file from the preview without any setting. On other layouts, set the option above.