Convert Figma logo to code with AI

zellij-org logozellij

A terminal workspace with batteries included

20,462
637
20,462
979

Top Related Projects

56,041

A cross-platform, OpenGL terminal emulator.

35,016

tmux source code

24,184

Cross-platform, fast, feature-rich, GPU based terminal

5,382

A tiling terminal emulator for Linux using GTK+ 3

17,239

A GPU-accelerated cross-platform terminal emulator and multiplexer written by @wez and implemented in Rust

The lazier way to manage everything docker

Quick Overview

Zellij is a terminal workspace and multiplexer written in Rust. It allows users to manage multiple terminal panes, tabs, and sessions with ease, offering a modern alternative to tools like tmux or screen. Zellij focuses on user-friendliness and customization while providing powerful features for terminal multitasking.

Pros

  • User-friendly interface with intuitive keybindings and on-screen help
  • Highly customizable with themes, layouts, and plugins
  • Written in Rust, offering performance and memory safety
  • Active development and community support

Cons

  • Relatively new project, may have fewer features compared to established alternatives
  • Limited cross-platform support (primarily focused on Unix-like systems)
  • Learning curve for users accustomed to other terminal multiplexers

Getting Started

To install Zellij on Unix-like systems, you can use various package managers:

# On macOS using Homebrew
brew install zellij

# On Arch Linux
pacman -S zellij

# On Ubuntu/Debian (if available in repositories)
sudo apt install zellij

# Using Cargo (Rust package manager)
cargo install zellij

To start Zellij, simply run:

zellij

Basic usage:

  • Ctrl+t is the default prefix key
  • Ctrl+t + n to create a new pane
  • Ctrl+t + [h/j/k/l] to navigate between panes
  • Ctrl+t + t to create a new tab
  • Ctrl+t + d to detach from the session

For more advanced usage and customization, refer to the official documentation at https://zellij.dev/documentation/.

Competitor Comparisons

56,041

A cross-platform, OpenGL terminal emulator.

Pros of Alacritty

  • Faster performance due to GPU acceleration
  • Simpler, more focused terminal emulator
  • Cross-platform support (Windows, macOS, Linux)

Cons of Alacritty

  • Lacks built-in multiplexing capabilities
  • Limited customization options compared to Zellij
  • No native support for plugins or extensions

Code Comparison

Alacritty configuration (YAML):

window:
  dimensions:
    columns: 80
    lines: 24
  padding:
    x: 2
    y: 2
font:
  normal:
    family: monospace
    style: Regular

Zellij configuration (KDL):

keybinds clear-defaults=true {
    normal {
        bind "Ctrl g" { SwitchToMode "locked"; }
        bind "Ctrl p" { SwitchToMode "pane"; }
        bind "Ctrl n" { NewPane; }
    }
}
themes {
    dracula {
        fg 248 248 242
        bg 40 42 54
        black 0 0 0
        red 255 85 85
    }
}

Alacritty focuses on being a fast, lightweight terminal emulator with GPU acceleration, while Zellij offers a more feature-rich environment with built-in multiplexing and extensive customization options. Alacritty's configuration is simpler, using YAML, whereas Zellij uses KDL for more complex configurations, including keybindings and themes.

35,016

tmux source code

Pros of tmux

  • Mature and stable project with extensive documentation and community support
  • Highly customizable with a wide range of plugins and themes available
  • Lightweight and efficient, suitable for use on remote servers or low-resource environments

Cons of tmux

  • Steeper learning curve due to complex key bindings and configuration options
  • Less intuitive user interface, especially for newcomers to terminal multiplexers
  • Limited built-in features compared to more modern alternatives

Code Comparison

tmux configuration example:

set -g mouse on
set -g status-style bg=black,fg=white
bind-key v split-window -h
bind-key s split-window -v
set -g default-terminal "screen-256color"

Zellij configuration example:

keybinds:
  - action: [SwitchToMode: Normal]
    key: [Ctrl: 'g']
  - action: [NewPane: Down]
    key: [Alt: 'd']
  - action: [NewPane: Right]
    key: [Alt: 'r']

While both tmux and Zellij offer terminal multiplexing capabilities, tmux provides a more traditional approach with extensive customization options. Zellij, on the other hand, focuses on a more user-friendly experience with a modern interface and easier configuration. The code examples demonstrate the difference in configuration syntax, with tmux using a more compact format and Zellij opting for a more readable YAML structure.

24,184

Cross-platform, fast, feature-rich, GPU based terminal

Pros of Kitty

  • More mature and feature-rich terminal emulator with GPU acceleration
  • Cross-platform support (Linux, macOS, and experimental Windows)
  • Extensive configuration options and customization capabilities

Cons of Kitty

  • Steeper learning curve due to its extensive feature set
  • Larger resource footprint compared to Zellij's lightweight design
  • Less focus on built-in multiplexing and session management

Code Comparison

Kitty configuration example:

font_family      Fira Code
font_size        12.0
background_opacity 0.9
enable_audio_bell no

Zellij configuration example:

keybinds:
    - action: [SwitchToMode: Normal]
      key: [Ctrl: 'g']
    - action: [NewPane: ]
      key: [Alt: 'n']

While both projects are terminal-related, they serve different primary purposes. Kitty is a full-featured terminal emulator, whereas Zellij is a terminal multiplexer focused on tiling and session management. Kitty offers more comprehensive terminal emulation features, while Zellij excels in providing a user-friendly, preconfigured multiplexing experience.

5,382

A tiling terminal emulator for Linux using GTK+ 3

Pros of Tilix

  • Built with GTK, providing a native look and feel on GNOME desktops
  • Supports advanced features like D-Bus integration and custom CSS theming
  • Offers a more traditional terminal emulator experience with familiar UI elements

Cons of Tilix

  • Limited to Linux systems, not cross-platform like Zellij
  • Less focus on keyboard-driven workflow compared to Zellij's extensive keybindings
  • Lacks some of Zellij's advanced multiplexing features, such as floating panes

Code Comparison

Tilix (Vala):

public class Terminal : Gtk.Box, ITerminal {
    private Vte.Terminal terminal;
    private Gtk.ScrolledWindow scrolled_window;
    
    public Terminal() {
        terminal = new Vte.Terminal();
    }
}

Zellij (Rust):

pub struct Pane {
    pub position_and_size: PaneGeom,
    pub content: PaneContent,
    pub selectable: bool,
    pub borderless: bool,
    pub exclude_from_sync: bool,
}

The code snippets show different approaches: Tilix uses Vala and GTK for UI components, while Zellij employs Rust for its terminal multiplexer functionality. Tilix focuses on traditional GUI elements, whereas Zellij emphasizes pane management and multiplexing features.

17,239

A GPU-accelerated cross-platform terminal emulator and multiplexer written by @wez and implemented in Rust

Pros of WezTerm

  • Cross-platform support (Windows, macOS, Linux)
  • GPU-accelerated rendering for improved performance
  • Extensive configuration options through Lua scripting

Cons of WezTerm

  • Steeper learning curve due to Lua configuration
  • Larger resource footprint compared to Zellij

Code Comparison

WezTerm configuration (Lua):

return {
  font = wezterm.font("JetBrains Mono"),
  color_scheme = "Dracula",
  default_prog = {"zsh"},
}

Zellij configuration (YAML):

keybinds:
  - action: [SwitchToMode: Normal]
    key: [Ctrl: 'g']
themes:
  dracula:
    fg: [248,248,242]
    bg: [40,42,54]

Key Differences

  • WezTerm is a full-featured terminal emulator, while Zellij is a terminal multiplexer
  • Zellij focuses on multiplexing and session management, whereas WezTerm provides a complete terminal environment
  • WezTerm offers more customization options but requires more setup, while Zellij provides a simpler out-of-the-box experience

Use Cases

  • Choose WezTerm for a highly customizable, cross-platform terminal emulator with GPU acceleration
  • Opt for Zellij when prioritizing lightweight multiplexing and collaborative features in a terminal environment

The lazier way to manage everything docker

Pros of Lazydocker

  • Focused specifically on Docker management, providing a more tailored experience for Docker users
  • Intuitive and user-friendly interface for managing Docker containers, images, and volumes
  • Lightweight and easy to install, with minimal dependencies

Cons of Lazydocker

  • Limited to Docker-specific functionality, lacking broader terminal multiplexing features
  • Less customizable compared to Zellij's plugin system and configuration options
  • May not be as suitable for general-purpose terminal workflows beyond Docker management

Code Comparison

Lazydocker (main.go):

func main() {
    app := app.NewApp(version, commit, date)
    app.Run()
}

Zellij (main.rs):

fn main() -> Result<()> {
    let opts: Cli = Cli::parse();
    run(opts)
}

Both projects have relatively simple main functions, but Zellij's use of Rust's Result type for error handling is notable. Lazydocker's main function is more straightforward, reflecting its focused purpose on Docker management.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README


logo
Zellij

Discord Chat Matrix Chat Zellij documentation

demo

[Installation] [Screencasts & Tutorials] [Configuration] [Layouts] [FAQ]

What is this?

Zellij is a workspace aimed at developers, ops-oriented people and anyone who loves the terminal. Similar programs are sometimes called "Terminal Multiplexers".

Zellij is designed around the philosophy that one must not sacrifice simplicity for power, taking pride in its great experience out of the box as well as the advanced features it places at its users' fingertips.

Zellij is geared toward beginner and power users alike - allowing deep customizability, personal automation through layouts, true multiplayer collaboration, unique UX features such as floating and stacked panes, and a plugin system allowing one to create plugins in any language that compiles to WebAssembly.

You can get started by installing Zellij and checking out the Screencasts & Tutorials.

For more details about our future plans, read about upcoming features in our roadmap.

How do I install it?

The easiest way to install Zellij is through a package for your OS.

If one is not available for your OS, you could download a prebuilt binary from the latest release and place it in your $PATH. If you'd like, we could automatically choose one for you.

You can also install (compile) with cargo:

cargo install --locked zellij

Try Zellij without installing

bash/zsh:

bash <(curl -L zellij.dev/launch)

fish/xonsh:

bash -c 'bash <(curl -L zellij.dev/launch)'

Installing from main

Installing Zellij from the main branch is not recommended. This branch represents pre-release code, is constantly being worked on and may contain broken or unusable features. In addition, using it may corrupt the cache for future versions, forcing users to clear it before they can use the officially released version.

That being said - no-one will stop you from using it (and bug reports involving new features are greatly appreciated), but please consider using the latest release instead as detailed at the top of this section.

How do I start a development environment?

  • Clone the project
  • In the project folder, for debug builds run: cargo xtask run
  • To run all tests: cargo xtask test

For more build commands, see CONTRIBUTING.md.

Configuration

For configuring Zellij, please see the Configuration Documentation.

About issues in this repository

Issues in this repository, whether open or closed, do not necessarily indicate a problem or a bug in the software. They only indicate that the reporter wanted to communicate their experiences or thoughts to the maintainers. The Zellij maintainers do their best to go over and reply to all issue reports, but unfortunately cannot promise these will always be dealt with or even read. Your understanding is appreciated.

Roadmap

Presented here is the project roadmap, divided into three main sections.

These are issues that are either being actively worked on or are planned for the near future.

If you'll click on the image, you'll be led to an SVG version of it on the website where you can directly click on every issue

roadmap

Origin of the Name

From Wikipedia, the free encyclopedia

Zellij (Arabic: الزليج, romanized: zillīj; also spelled zillij or zellige) is a style of mosaic tilework made from individually hand-chiseled tile pieces. The pieces were typically of different colours and fitted together to form various patterns on the basis of tessellations, most notably elaborate Islamic geometric motifs such as radiating star patterns composed of various polygons. This form of Islamic art is one of the main characteristics of architecture in the western Islamic world. It is found in the architecture of Morocco, the architecture of Algeria, early Islamic sites in Tunisia, and in the historic monuments of al-Andalus (in the Iberian Peninsula).

License

MIT

Sponsored by