Top Related Projects
A cross-platform, OpenGL terminal emulator.
tmux source code
Cross-platform, fast, feature-rich, GPU based terminal
A tiling terminal emulator for Linux using GTK+ 3
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 keyCtrl+t + n
to create a new paneCtrl+t + [h/j/k/l]
to navigate between panesCtrl+t + t
to create a new tabCtrl+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
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.
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.
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.
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.
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 designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Zellij
[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
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
Top Related Projects
A cross-platform, OpenGL terminal emulator.
tmux source code
Cross-platform, fast, feature-rich, GPU based terminal
A tiling terminal emulator for Linux using GTK+ 3
A GPU-accelerated cross-platform terminal emulator and multiplexer written by @wez and implemented in Rust
The lazier way to manage everything docker
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot