LinuxCommandLibrary

zellij

Create terminal multiplexer with panes and layouts

TLDR

Start a new named session

$ zellij [[-s|--session]] [name]
copy

List existing sessions
$ zellij [[ls|list-sessions]]
copy

Attach to the most recently used session
$ zellij [[a|attach]]
copy

Open a new pane (inside a zellij session)
$ <Alt n>
copy

Detach from the current session (inside a zellij session)
$ <Ctrl o><d>
copy

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.

SEE ALSO

tmux(1), screen(1), htop(1), ssh(1), bash(1), zsh(1)

Copied to clipboard