Skip to content

Zellij

A Zellij setup with automatic theme integration, a rich status bar, fuzzy finding, and pane bookmarks.

Running theme-switch with Catppuccin, Tokyo Night, or Nord automatically updates the Zellij layout and status bar colors.

PluginWhat it does
ZjstatusStatus bar with git branch, time, and mode indicator
MonocleFuzzy finder for panes and tabs (Ctrl+q then f)
HarpoonPane bookmark manager (Ctrl+q then b)

Prefix key is Ctrl+q.

KeyAction
Ctrl+1-5Switch to tab 1-5
KeyAction
h/j/k/lMove focus between panes
H/J/K/LResize pane
Tab / Shift+TabNext / Previous tab
tNew tab
\Split right
-Split down
xClose pane
zToggle fullscreen
wToggle floating panes
eToggle embed/float
[Scroll/copy mode
dDetach
KeyPluginWhat it does
fMonocleSearch and jump to panes/tabs
bHarpoonSwitch between bookmarked panes
KeyAction
aAdd current pane to bookmarks
j/k or /Navigate list
EnterJump to selected pane
dRemove bookmark
EscClose

Requires Zellij 0.38.0+ and the wasm32-wasip1 Rust target.

Terminal window
rustup target add wasm32-wasip1

Plugins are downloaded automatically. To manually rebuild Harpoon:

Terminal window
git clone https://github.com/Nacho114/harpoon.git /tmp/harpoon
cd /tmp/harpoon
cargo build --release --target wasm32-wasip1
cp target/wasm32-wasip1/release/harpoon.wasm ~/.config/zellij/plugins/
~/.config/zellij/
├── config.kdl # Main config
├── layouts/
│ ├── catppuccin.kdl # Catppuccin theme
│ ├── tokyonight.kdl # Tokyo Night theme
│ ├── nord.kdl # Nord theme
│ └── default.kdl # Symlink to active theme
└── plugins/
├── zjstatus.wasm # Status bar
├── monocle.wasm # Fuzzy finder
└── harpoon.wasm # Pane management

Shows mode indicator (colored background), session name, git branch (refreshes every 10s), date/time (Asia/Tokyo), notification alerts, and tab numbers with icons.

  1. Check version: zellij --version
  2. Rebuild plugins from source
  3. Clear cache: rm -rf ~/.cache/zellij/
  1. Check permissions: ls -la ~/.config/zellij/layouts/
  2. Restart sessions: zellij kill-all-sessions
  3. Verify script: which theme-switch
  1. Make sure wasm32-wasip1 target is installed
  2. Rebuild from source
  3. Check that config has move_to_focused_tab true
  1. Create layouts/theme-name.kdl
  2. Add the theme to theme-switch
  3. Follow the color pattern from existing themes

Edit config.kdl:

bind "Your Key" {
LaunchOrFocusPlugin "file:~/.config/zellij/plugins/plugin.wasm" {
floating true
}
SwitchToMode "normal"
}