Skip to content

Add Zellij pane layout and naming support#190

Open
wuurrd wants to merge 10 commits into
raine:mainfrom
wuurrd:feat/zellij-pane-names
Open

Add Zellij pane layout and naming support#190
wuurrd wants to merge 10 commits into
raine:mainfrom
wuurrd:feat/zellij-pane-names

Conversation

@wuurrd

@wuurrd wuurrd commented Jun 30, 2026

Copy link
Copy Markdown

Summary

  • add Zellij stacked pane support with relaxed focus handling
  • support Zellij status hooks from stripped hook environments
  • add pane name config support and apply it with zellij action rename-pane --pane-id
  • recover Zellij split pane IDs when new-pane -- <command> returns empty stdout

Tests

  • cargo fmt --check
  • cargo check
  • cargo test pane_name
  • cargo test validate_panes_empty_name_fails
  • cargo test new_pane_direction_args
  • cargo test normalize_terminal_pane_id
  • cargo test find_created_terminal_pane_id

Test User and others added 8 commits June 28, 2026 23:47
Tmux can expand the sidebar pane when a neighboring pane closes. The sidebar
resize sync path treated that expanded pane as a user resize, which could store
and propagate a very large width across windows.

Add a defensive width ceiling based on the existing default maximum. Synced and
explicit widths above that ceiling resolve back to the default sidebar width,
and live resize detection reflows the affected window instead of preserving the
expanded width. This keeps normal explicit widths working while recovering the
broken pane geometry automatically.

Document the sidebar width ceiling and cover synced and explicit width recovery
with unit tests.
Expose the pytest-based integration suite as its own just recipe so the
command is discoverable after the default test recipe became unit-test only.
Full integration test runs use pytest-xdist workers, while targeted runs pass
their arguments through to pytest.

Use the explicit integration test recipe in the workmux pre-merge checks so
merge validation still covers the pytest suite. Document the unit and
integration test commands in the contributor guide.
@wuurrd

wuurrd commented Jul 2, 2026

Copy link
Copy Markdown
Author

@raine can you take a look at this? :)

@Infonautica

Infonautica commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Stacked works well:

Screenshot 2026-07-03 at 14 10 23

But i'm having issues with pane names:

❯ wm add zellij-stacked-test
Error: Failed to create worktree environment for branch 'zellij-stacked-test'

Caused by:
    0: Failed to setup panes
    1: Failed to set pane name 'agent'
    2: Failed to rename zellij pane 'terminal_1'
    3: Command failed: zellij action rename-pane --pane-id terminal_1 agent
       error: Found argument '--pane-id' which wasn't expected, or isn't valid in this context

        If you tried to supply `--pane-id` as a value rather than a flag, use `-- --pane-id`

       USAGE:
           zellij action rename-pane <NAME>

       For more information try --help

with a config like this:

panes:
  - command: claude
    name: agent
    focus: true
  - command: nvim
    name: editor
    split: horizontal
  - command: echo 123
    name: logs
    split: stacked

Message is updated as i had the wrong panes config posted

@Infonautica

Copy link
Copy Markdown
Contributor

Okay, pane names also works:

Screenshot 2026-07-03 at 14 41 09

But it required me to update (in my case using brew upgrade zellij), as i understand it depends on API introduced in Zellij 0.44.1: https://github.com/zellij-org/zellij/releases/tag/v0.44.1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants