Zellij Is A New Terminal Multiplexer Written In Rust

Zellij rust terminal multiplexer

Zellij is a new terminal workspace and multiplexer (like tmux and screen) written in Rust, available for macOS and Linux. Among its most important features are a layout system, and plugins written in any language that compiles to WebAssembly.

While the tool is ready for everyday use, it's still important to mention that right now it has the beta status, so you might encounter an occasional crash. It also misses quite a few features for now (read on for details).

Unlike other terminal multiplexers, like tmux or screen, Zellij comes with a user-friendly UI out of the box, showing a status bar at the bottom of the screen with the available keyboard shortcuts and tips for using this tool. The status bar (as well as the tab bar) is implemented as a plugin, and it can easily be disabled when you get accustomed to its keyboard shortcuts.

When you start Zellij, you'll notice it shows the available keyboard shortcuts that allow you to lock the layout, access the pane options, tab options, resize, scroll and quit (see screenshot at the top of this article). When you use one of these keyboard shortcuts, let's say the pane shortcut (Ctrl + p), the tip bar changes into the keyboard shortcuts available for panes, like create a new pane, move between panes, close the active pane, and so on:

Zellij statusbar

Besides being user-friendly, Zellij also tries to innovate in the way it arranges and resizes panes. You don't have to figure out by yourself if you want to create a vertical or horizontal split. Instead, the application looks for the best place in which to open a new pane. There are also no limitations when resizing panes.

The keyboard shortcuts, as well as the initial layout used by Zellij when it starts, can be configured. You can take a look at the default keyboard shortcuts here, and here's the default layout. A built-in tmux mode will also be available with the next Zellij release, while a screen-like keybindings feature is in the works.

You might also like: A Quick Introduction To fzf (Interactive Command-Line Fuzzy Finder)

Besides the status bar and tab bar, Zellij also comes with a plugin called Strider, a Ranger (console file manager) clone, but this didn't work properly for me - on one machine it doesn't load at all, and on another it fails to load files. So here's a GIF of this feature taken from the Zellij website:

Missing features / roadmap

Being new, with the first alpha release being made back in January 2021 (and the first beta is only a week old), the tool lacks some features. The most important one is definitely the lack of the ability to detach active sessions and resume them later. The plan is to implement this via a client-server architecture in which the client is the frontend that interacts with the user, and the server is the backend where all the magic happens. There's already work to implement this feature - you can track its progress via this pull request.

The plan is to also allow connecting to Zellij through the browser instead of opening a terminal window, be it on a local or remote machine.

[[Edit ]] Persistent / detachable sessions have been added with Zellij 0.12.0.

Other features on the Zellij roadmap are the ability to share sessions with others, support for multiple terminal windows across screens (which allows transferring panes across different windows and screens, by having them all belong to the same session), and smart layouts (intelligently rearrange the layout when new panes are added or the window is resized).

Other missing features at the time I'm writing this (but which should be implemented in the future) include color scheme support, mouse support, the ability to create a layout file from the current layout, and open a new tab with a specific layout. Microsoft Windows support might also be implemented in the future, making Zellij the first terminal multiplexer to have native Windows support.

It's also worth noting that currently Zellij is extremely slow on WSL2.

You might also like: Get Notifications On Your Desktop Or Phone When A Long-Running Command Has Finished With Noti

Download Zellij

To install the Zellij binary on Linux, simply extract the downloaded archive, cd into the folder where you've extracted it, then install the binary to /usr/local/bin using:

sudo install zellij /usr/local/bin

For configuring Zellij (keybinds, layouts, plugins), check out its documentation.

You might also like: broot Is An Interactive Treeview Directory Navigation Tool For The Command Line