zellij-guide

Zellij Guide — Personal Reference

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "zellij-guide" with this command: npx skills add wcygan/dotfiles/wcygan-dotfiles-zellij-guide

Zellij Guide — Personal Reference

Binary: /Users/wcygan/.nix-profile/bin/zellij (installed via Nix flake) Config: ~/Development/dotfiles/config/zellij/config.kdl → symlinked to ~/.config/zellij/config.kdl

Layouts: ~/Development/dotfiles/config/zellij/layouts/

For exhaustive action/option/layout reference, see reference.md.

Quick Start

zellij # New session (random name) zellij -s work # New named session zellij -l dev # New session with dev.kdl layout zellij ls # List sessions (including exited) zellij a work # Attach to "work" session zellij d work # Delete exited session

Your Keybinds (clear-defaults=true, vim-style)

Your config uses clear-defaults=true — only these bindings exist:

Normal Mode (default)

Key Action

Ctrl h

Move focus / tab left

Ctrl l

Move focus / tab right

Ctrl j

Move focus down

Ctrl k

Move focus up

Ctrl n

New pane (auto direction)

Ctrl s

New pane down

Ctrl v

New pane right

Ctrl -

New pane down

Ctrl /

New pane right

Ctrl x

Close focused pane

Ctrl z

Toggle fullscreen

Ctrl t

New tab

Ctrl w

Close tab

Ctrl 1-5

Go to tab 1-5

Ctrl q

Quit

Ctrl d

Detach

Ctrl p

→ Pane mode

Ctrl r

→ Resize mode

Ctrl m

→ Move mode

Ctrl g

→ Locked mode

Ctrl b

→ Scroll mode

Pane Mode (Ctrl p to enter, Esc to exit)

Key Action

h/j/k/l

Move focus

n

New pane

x

Close pane

f

Toggle fullscreen

w

Toggle floating panes

e

Toggle embed/float

r

Rename pane

Resize Mode (Ctrl r to enter, Esc to exit)

Key Action

h/j/k/l

Resize in direction

H/J/K/L

Increase in direction

=

Increase size

Decrease size

Move Mode (Ctrl m to enter, Esc to exit)

Key Action

h/j/k/l

Move pane in direction

Scroll Mode (Ctrl b to enter, Esc to exit)

Key Action

j/k

Scroll down/up

Ctrl d / Ctrl u

Half page down/up

g

Scroll to top

G

Scroll to bottom

Locked Mode (Ctrl g to toggle)

All keys pass through to the terminal. Only Ctrl g exits.

Modes NOT configured (from defaults)

Your config does not define: tab , search , entersearch , renametab , renamepane , session , tmux . Consider adding search and session modes for search-in-scrollback and session manager access.

Your Config Summary

// Key settings in config.kdl: default_layout "compact" // 1-line compact-bar (tab + status combined) pane_frames false // No borders between panes theme "default" // Base16 dark theme (defined inline) default_shell "/.nix-profile/bin/fish" copy_on_select true scrollback_editor "/usr/bin/nvim" session_serialization true // Enable resurrection serialize_pane_viewport true // Save visible content max_panes 100 layout_dir "/.config/zellij/layouts"

Note: default_shell and layout_dir use /home/wcygan/ paths (Linux). On macOS these should be /Users/wcygan/ paths. Consider using $HOME or updating for cross-platform use.

Your Layouts

dev.kdl (3-tab development layout)

Tab "main" (focused): ┌─────────────────────┬──────────┐ │ │ terminal │ │ editor (70%) ├──────────┤ │ │ logs │ └─────────────────────┴──────────┘

Tab "git": lazygit (full pane) Tab "monitor": btop (50%) + services (50%)

Load with: zellij -l dev or zellij --layout ~/.config/zellij/layouts/dev.kdl

Modes Reference (13 total)

Mode Purpose Your binding

normal

Default operations (default)

locked

Pass-through (safety) Ctrl g

pane

Pane management Ctrl p

resize

Resize panes Ctrl r

move

Move panes Ctrl m

scroll

Scroll buffer Ctrl b

tab

Tab management (not bound)

search

Search in scrollback (not bound)

entersearch

Type search query (not bound)

renametab

Rename a tab (not bound)

renamepane

Rename a pane (not bound)

session

Session management (not bound)

tmux

tmux compatibility (not bound)

CLI Quick Reference

Session Management

zellij # New session zellij -s <name> # Named session zellij ls # List all (running + exited) zellij attach <name> # Attach / resurrect zellij attach -c <name> # Create-or-attach zellij kill-session <name> # Kill running session zellij delete-session <name> # Delete exited session zellij kill-all-sessions # Kill all zellij delete-all-sessions # Delete all exited

Run Commands in Panes

zellij run -- htop # New pane running htop zellij run -f -- htop # Floating pane zellij run -f --width 80% --height 80% -- htop # Sized floating zellij run -i -- make build # In-place (replaces current pane) zellij run -c -- make test # Close pane on exit zellij run -s -- dangerous-cmd # Start suspended (ENTER to run) zellij run -n "build" -- make # Named pane

Edit Files

zellij edit src/main.rs # Open in $EDITOR pane zellij edit -f src/main.rs # Floating editor pane zellij edit -l 42 src/main.rs # Open at line 42

Actions (from outside or within)

zellij action new-pane # New pane zellij action new-pane --floating # New floating pane zellij action new-tab --name "build" # Named new tab zellij action go-to-tab 2 # Switch to tab 2 zellij action dump-layout # Export current layout to stdout zellij action dump-screen /tmp/out.txt # Dump pane content zellij action switch-mode locked # Enter locked mode zellij action toggle-floating-panes # Toggle floats zellij action rename-session "work" # Rename session

Setup Utilities

zellij setup --dump-config # Print default config zellij setup --dump-layout default # Print default layout zellij setup --dump-layout compact # Print compact layout zellij setup --dump-swap-layout default # Print swap layout zellij setup --generate-completion fish # Fish completions zellij setup --generate-auto-start fish # Auto-start script zellij setup --check # Validate config

Convenience Aliases (from shell completions)

Alias Expands to

zr

zellij run --

zrf

zellij run --floating --

ze

zellij edit

Session Resurrection

Your config has resurrection enabled (session_serialization true , serialize_pane_viewport true ).

What's saved: Layout, pane structure, commands, visible viewport, scrollback. What's NOT saved: Running processes. Commands show "Press ENTER to run..." on resurrection.

zellij ls # Shows EXITED sessions zellij attach <exited-session> # Resurrect it zellij attach <name> --force-run-commands # Skip ENTER confirmation zellij delete-session <name> # Permanently remove

Serialized sessions are human-readable KDL layout files in the cache directory. They can be shared, modified, or loaded directly with zellij --layout .

Floating & Stacked Panes

Floating: Ctrl p then w (toggle), e (embed/float), or Alt f (if default binds) Pinned floating: Always-on-top panes (pin via CLI: zellij run -f --pinned -- cmd ) Stacked: Panes in a stack where only the focused one is expanded. Define in layouts with stacked=true .

Plugins (Built-in)

Plugin Location Description

tab-bar

zellij:tab-bar

Tab bar (1 line)

status-bar

zellij:status-bar

Status bar with keybind hints (2 lines)

compact-bar

zellij:compact-bar

Combined tab+status (1 line)

strider

zellij:strider

File browser sidebar

session-manager

zellij:session-manager

Session switcher + resurrection UI

filepicker

zellij:strider

File picker (cwd based)

configuration

zellij:configuration

Runtime config editor

plugin-manager

zellij:plugin-manager

Plugin management UI

Load in layouts:

pane size=1 borderless=true { plugin location="zellij:compact-bar" }

Troubleshooting

Issue Fix

macOS Alt key not working Configure in terminal app (iTerm2: Profiles → Keys → Left Option = Esc+)

Copy not working Add copy_command "pbcopy" to config

Font/character issues Use Nerd Font or simplified_ui true

Ctrl+H triggers Move mode Terminal sends Ctrl+H as backspace — remap in terminal or Zellij

Nesting prevention Check $ZELLIJ env var before starting

Mouse selection Hold SHIFT to bypass Zellij mouse capture

Styled underline colors wrong Add styled_underlines false

Config not loading Check zellij setup --check and verify path

Fish Shell Integration

Nesting prevention (add to config.fish or conf.d/)

if status is-interactive; and not set -q ZELLIJ zellij attach -c default end

Generate completions

zellij setup --generate-completion fish > ~/.config/fish/completions/zellij.fish

Environment Variables

Variable Description

ZELLIJ

Set to 0 inside a session (use for nesting prevention)

ZELLIJ_SESSION_NAME

Current session name

ZELLIJ_CONFIG_DIR

Override config directory

ZELLIJ_CONFIG_FILE

Override config file

ZELLIJ_AUTO_ATTACH

Auto-attach to existing session

ZELLIJ_AUTO_EXIT

Exit shell when Zellij exits

Layout Authoring Quick Reference

layout { // Tab template applied to all tabs default_tab_template { pane size=1 borderless=true { plugin location="zellij:tab-bar" } children // ← where tab content goes pane size=2 borderless=true { plugin location="zellij:status-bar" } }

tab name="code" focus=true {
    pane split_direction="vertical" {
        pane size="60%" name="editor" edit="src/main.rs"
        pane size="40%" split_direction="horizontal" {
            pane name="term"
            pane name="test" command="make" { args "test"; }
        }
    }
}

tab name="git" {
    pane command="lazygit"
}

// Floating panes section
floating_panes {
    pane x="10%" y="10%" width="80%" height="80%" name="scratch"
}

}

Key layout attributes

Attribute Applies to Values

split_direction

pane "vertical" , "horizontal"

size

pane "50%" or fixed int (lines/cols)

command

pane Command to execute

args

child of command pane "arg1" "arg2"

edit

pane File path (opens in $EDITOR)

cwd

pane, tab, layout Working directory

name

pane, tab Display name

focus

pane, tab true for initial focus

borderless

pane true to hide frame

close_on_exit

pane Close when command exits

start_suspended

pane Wait for ENTER

stacked

pane Stack children

plugin location

child block Plugin URL

CWD composes: pane cwd → tab cwd → layout cwd → execution directory. Relative paths chain; absolute paths override.

For the full actions reference, theme system, swap layouts, and plugin configuration, see reference.md.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

business-review

No summary provided by upstream source.

Repository SourceNeeds Review
General

ux-review

No summary provided by upstream source.

Repository SourceNeeds Review
General

api-workshop

No summary provided by upstream source.

Repository SourceNeeds Review