Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
5521a08
feat(zellij): add command completion and live target tables
lanej Nov 7, 2026
7c29be4
fix(zellij): refine supported suggestions and palette navigation checks
lanej Nov 7, 2026
4632437
perf(zellij): cache command metadata and retain terminal diagnostics
lanej Nov 7, 2026
6caa011
fix(zellij): center palette and preserve visible details and editing
lanej Nov 7, 2026
250d0fe
test(zellij): retain native popup geometry on placement failures
lanej Nov 7, 2026
652d51b
fix(zellij): normalize dispatcher origin before opening native popups
lanej Nov 7, 2026
b37c81f
fix(zellij): wrap command errors and offer scrollable details
lanej Nov 7, 2026
db432b7
docs(zellij): show captured command palette
lanej Nov 7, 2026
1a5d334
feat(zellij): make the command palette compact and completion-focused
lanej Nov 7, 2026
73e628b
refactor(zellij): retain native editing in the compact command line
lanej Nov 7, 2026
1ef2979
style(zellij): keep the compact frame continuous around its labels
lanej Nov 7, 2026
f0f1163
feat(zellij): give command history the full compact width
lanej Nov 7, 2026
62f0dcc
test(zellij): verify settled completion and UTF-8 paste
lanej Nov 7, 2026
d6664cc
fix(zellij): pin complete popup input routing
lanej Nov 7, 2026
467df34
docs(zellij): show compact native completion
lanej Nov 7, 2026
47a2595
fix(zellij): retain quick reopen requests after actions
lanej Nov 7, 2026
a756bfd
Merge branch 'master' into codex/zellij-command-palette
lanej Nov 7, 2026
ca17071
fix(zellij): keep palette instructions in separate guides
lanej Nov 8, 2026
69fef6f
docs(zellij): refresh the uncluttered palette capture
lanej Nov 8, 2026
3ad5300
refactor(zellij): strip command palette chrome
lanej Nov 8, 2026
5e776b9
docs(zellij): show the title-free command palette
lanej Nov 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 14 additions & 2 deletions .github/workflows/zellij.yml
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,20 @@ jobs:
mkdir -p "$RUNNER_TEMP/zellij-tools"
curl --fail --location --retry 3 "https://github.com/neovim/neovim/releases/download/v0.12.5/nvim-$nvim_platform.tar.gz" | tar -xz -C "$RUNNER_TEMP/zellij-tools"
echo "$RUNNER_TEMP/zellij-tools/nvim-$nvim_platform/bin" >> "$GITHUB_PATH"
- name: Exercise command palette
if: ${{ !cancelled() && steps.zellij_install.outcome == 'success' }}
run: |
mkdir -p "$ZELLIJ_TEST_ARTIFACTS/command-palette"
set -o pipefail
make test-zellij-command-prompt 2>&1 | tee "$ZELLIJ_TEST_ARTIFACTS/command-palette/integration.log"
- name: Preserve command palette terminal captures
if: always()
uses: actions/upload-artifact@v4
with:
name: command-palette-${{ matrix.os }}
path: ${{ github.workspace }}/.zellij-diagnostics/command-palette
if-no-files-found: ignore
retention-days: 7
- name: Build native attention bar
if: ${{ !cancelled() && steps.zellij_install.outcome == 'success' }}
run: make zellij-status
Expand All @@ -212,8 +226,6 @@ jobs:
if: ${{ !cancelled() && steps.zellij_install.outcome == 'success' }}
- run: make test-zellij-session-keys
if: ${{ !cancelled() && steps.zellij_install.outcome == 'success' }}
- run: make test-zellij-command-prompt
if: ${{ !cancelled() && steps.zellij_install.outcome == 'success' }}
- run: make test-zellij-codex-titles
if: ${{ !cancelled() && steps.zellij_install.outcome == 'success' }}
- run: make test-zellij-claude-titles
Expand Down
Binary file added docs/images/zellij-command-palette.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion docs/zellij.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ The [keybinding map](zellij-keybinds.mdx) lists shortcuts, aliases, and keys ins
| Feature | Use it to… |
| --- | --- |
| [Shared popup](zellij/shared-popup.mdx) | Keep a scratch shell across tabs and sessions |
| [Command prompt](zellij/command-prompt.mdx) | Run a Zellij action without a shell command |
| [Command palette](zellij/command-prompt.mdx) | Complete and run actions, or find a live pane, tab, or session |
| [Create and rename sessions](zellij/sessions.mdx) | Open or name a workspace |
| [Detach one client](zellij/detach-client.mdx) | Disconnect a selected view while leaving programs running |
| [Shut down a session](zellij/shutdown.mdx) | Deliberately end one session with confirmation |
Expand Down
34 changes: 28 additions & 6 deletions docs/zellij/command-prompt.mdx
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
---
title: "Command prompt"
description: "Run a Zellij action without leaving the current workspace."
title: "Command palette"
description: "Complete and run Zellij actions, or find a live pane, tab, or session."
---

Press **Ctrl-f :** to open the command prompt. Type a Zellij action without the `zellij action` prefix and press **Enter**. **Esc** or clicking outside cancels; an empty command closes it too.
Press **Ctrl-f :** to open a slim floating command line. Type a Zellij action without the `zellij action` prefix. Up to five suggestions appear below the input, and the popup shrinks as matches narrow. Use the arrow keys to select a suggestion and **Tab** to complete it. **Enter** runs the command you entered; selecting a suggestion never runs it. **Esc** or clicking outside cancels; an empty command closes it too.

The command line is centered horizontally near the upper part of the terminal and stays in place as suggestions change. It is separate from the [shared popup](shared-popup.mdx) and leaves hidden floating panes hidden.

![Compact command palette completing the direction for a new pane](../images/zellij-command-palette.png)

## Examples

Expand All @@ -15,10 +19,28 @@ move-focus left
resize increase right
```

Type `help` for a searchable action picker. Selecting an action fills the input so you can edit it before running it. Add `--help` to an action to view its available options.
## Completion and editing

Suggestions include actions and descriptions, native flags and their accepted values, and live targets. For example, `new-pane --dir` completes to `new-pane --direction`, then offers directions. `rename-tab ` offers the current name for editing. `go-to-tab-name `, `focus-pane-id `, and `switch-session ` suggest live tabs, panes, and running sessions. Names containing spaces are quoted automatically.

**Ctrl-u** clears before the cursor, **Ctrl-k** clears after it, and **Ctrl-w** deletes the previous word. Pasting edits the line without submitting it. Parse errors leave the command available to correct; **Ctrl-d** opens the full error, and **Esc** returns to editing.

## Help and history

Type `help` for a searchable action picker. Selecting an action fills the input so you can edit it before running it. Add `--help` to an action to view its native documentation. **Enter** or **Esc** returns to the command.

Type `history` to choose from this client's recently submitted commands. The selected command returns to the input for review before it runs. History disappears when the session or prompt restarts.
Type `history` or press **Ctrl-r** to search this client's recent commands. The selected command returns to the input for review before it runs. **Ctrl-p** and **Ctrl-n** recall older and newer commands, restoring your unsubmitted draft when you return to the end. **Up** from an empty input also recalls history. The last 32 distinct commands stay in memory until the plugin or session restarts.

## Find a live target

Run `list-panes`, `list-tabs`, or `list-sessions` to open a searchable table. Type to filter, use the arrows to select a row, and press **Enter** to jump to it. **Esc** returns to your original command. The tables refresh as live state changes. Help, history, and target tables expand only while open; returning to command entry restores the compact view.

Displayed tab positions are zero-based, matching the bar. The native `go-to-tab` command still takes a one-based index, shown in its completion details. Use `go-to-tab-by-id` for a stable tab ID.

## Scope and setup

This prompt runs Zellij actions, not shell commands. Quotes group arguments, but `$HOME`, pipes, wildcards, and command substitution are not expanded. To start a program, use an action such as `new-pane -- htop`.

Commands that print listings are better run in a normal terminal. Parse errors leave the input available to correct. The prompt needs the modern configuration; it is separate from the [shared popup](shared-popup.mdx).
The three target-list commands take no flags. Use a normal terminal for JSON output, layout-file loading, external plugin installation, and CLI-only pane-relative or explicit-ID action variants. The native action API does not return all runtime errors, so submission alone does not confirm that an action succeeded.

The palette needs the managed modern configuration and matching pinned runtime. After updating the checkout, install the runtime with `bash scripts/install-zellij`, rebuild with `make zellij-command-prompt`, apply `make zellij`, and save your work before restarting the session. Existing installations may ask for expanded plugin permissions. The matching runtime keeps pasted text in the requesting client's popup and preserves Unicode input.
2 changes: 1 addition & 1 deletion scripts/install-zellij
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ if [ "$#" -ne 0 ]; then
exit 2
fi

zellij_revision=00e5384772e7b3e025b2982a851d08c59581774a
zellij_revision=7d738ed500f973a45df0f19cc6f5b1fe478bd1f0
zellij_toolchain=1.95.0

rustup toolchain install "$zellij_toolchain" --profile minimal
Expand Down
Loading
Loading