zellij
Create terminal multiplexer with panes and layouts
TLDR
Start a new named session
List existing sessions
Attach to the most recently used session
Open a new pane (inside a zellij session)
Detach from the current session (inside a zellij session)
SYNOPSIS
zellij [OPTIONS] [COMMAND]
zellij [LAYOUT_FILE]
Common usage:
zellij attach [SESSION_NAME]
zellij run [COMMAND]
zellij options [OPTION] [VALUE]
zellij list-sessions
zellij kill-session [SESSION_NAME | --all]
PARAMETERS
-s, --session
Attach to or create a session with the specified name. If no name is given, a default one is used.
--layout
Start a new session using a predefined layout from the specified YAML file.
--no-pane-frames
Start Zellij without drawing visual frames around the panes.
--disable-default-plugins
Prevent Zellij from loading its default set of plugins at startup.
--debug
Enable debug mode, providing more verbose output for troubleshooting.
--floating-panes
Allow panes to 'float' or overlap other panes, providing more layout flexibility.
--plugin
Add a specific plugin to the current session from a local path or URL.
--dump-layout
Dump the current session's layout configuration to the specified YAML file.
--data-dir
Specify a custom data directory for Zellij configurations and session files.
DESCRIPTION
Zellij is a powerful and opinionated terminal workspace multiplexer, akin to `tmux` or `GNU screen`, but written in Rust. It enables users to manage multiple terminal sessions, panes, and tabs within a single terminal window, providing a persistent and organized work environment. Key features include a robust declarative layout system (defined in YAML) for arranging panes, a plugin system based on WebAssembly (Wasm) for extending functionality, built-in scrolling, and collaborative session sharing capabilities.
Zellij aims to streamline the terminal workflow by offering a unified and highly customizable environment for development, system administration, and general command-line tasks. It automatically saves session states, allowing users to detach and re-attach later, resuming exactly where they left off. Its focus on discoverability, sensible defaults, and a modern user interface makes it accessible to new users while still providing advanced configuration options for experienced ones.
CAVEATS
Zellij requires a modern terminal emulator (e.g., Alacritty, Kitty, WezTerm, iTerm2, etc.) to fully leverage its features, including true color support and advanced font rendering. Its configuration is primarily done via YAML files, which might require a different approach compared to `tmux`'s configuration files. While highly user-friendly, its opinionated default keyboard shortcuts and modal interface (similar to vi/vim) may require an adjustment period for users accustomed to other multiplexers. It is under active development, so features and behavior might evolve between versions.
PLUGINS AND WEBASSEMBLY (WASM)
One of Zellij's most distinctive features is its support for plugins. These plugins are written in WebAssembly (Wasm), allowing for powerful extensions to functionality directly within terminal panes. This enables users to integrate tools like file browsers, task managers, or custom widgets, significantly enhancing the interactive capabilities of the terminal workspace.
DECLARATIVE LAYOUT SYSTEM
Zellij utilizes a sophisticated, declarative layout system defined in YAML files. Users can easily create and switch between complex arrangements of panes, tabs, and commands for different workflows. This allows for highly reproducible and shareable work environments, improving consistency and efficiency across projects or teams.
MODAL INTERFACE
Inspired by text editors like vi/vim, Zellij operates with a modal interface. Users interact with the multiplexer by entering specific modes (e.g., Pane mode for manipulating panes, Tab mode for managing tabs, Scroll mode for navigating output) using a common prefix key (default: Ctrl+b). This approach provides intuitive and context-aware keybindings.
HISTORY
Zellij was created by Zdravko Botev and first officially released in 2021. Developed in Rust, it emerged as a modern alternative to long-standing terminal multiplexers like tmux and GNU screen, aiming to provide better performance, memory safety, and a more intuitive user experience. It quickly gained traction due to its innovative built-in features, such as the declarative layout system, integrated plugin architecture (using WebAssembly), and collaborative session capabilities, distinguishing itself from its predecessors.