Zellij 0.16.0: new UI, many bugfixes and more!

Zellij 0.16.0 is out!

You can download a prebuilt binary in the above link or install it through cargo with cargo install zellij (unaffiliated releases might also be available for your distribution or in homebrew).

We’re constantly working on improving Zellij and releasing new features and bug fixes. Today, on this last day of August, we’re releasing a large version with so many fixes and improvements we felt it warranted a post with a walkthrough.

So what’s new?

New Pane UI

Screens today are getting larger and terminal windows can take up more space. We feel we can take advantage of that space by having Zellij draw a frame around each pane.

Not only does this provide for a clearer and more sleek display, it also allows us to see the pane title (what would normally be displayed as the window title in a terminal window) as well as display the scrollback position for each pane.

If you don’t like this feature, you can toggle it on/off at at runtime with Ctrl-p + z. You can also start Zellij with this option turned off, either as a command line option:

zellij options --no-pane-frames

Or by adding the following line to your configuration:

no_pane_frames: true

In the future, we plan to present more information here such as the users focused on this pane in multiple-user sessions, the last command exit code, and more.

The session name is now displayed in the top bar

This makes it much easier to attach and re-attach to the same session later. The random yet Human-readable session names are generated by the cool names package.

Resizing panes with Ctrl-r has been changed to Ctrl-n

Keybindings, especially in an application such as Zellij, are a hard problem. We tried to choose ones that are both intuitive and unintrusive. We’ve received a lot of feedback on this one and so decided to change it.

Zellij will no longer “hijack” Ctrl-r - which is a very popular keybinding in both bash and vim - and instead use Ctrl-n.

While this has always been configurable (and one could also lock the interface with Ctrl-g to get around this problem) - sane defaults are important to us. And so we made this change.

New resizing algorithm

Resizing the whole terminal window now keeps panes in their proportional sizes. This is a big deal for us, since Zellij does not keep track of panes in a tree structure like most multiplexers do, in order to allow for greater freedom when resizing panes.

We implemented a constraint system in order to achieve this that in the future will allow users to describe layouts in the form of “pane X is above pane Y and always smaller than pane Z” instead of dictating a rigid YAML tree structure.

Indication when text is copied to the clipboard

Copying text to the clipboard in Zellij is possible with the mouse in a way that is pane and scrollback aware. This is done on mouse-release once text is marked. Up until now, it has been a little confusing if you’re unaware this is happening. So now we indicate this in the UI.

Note that copying to the clipboard doesn’t yet work with Gnome Terminal due to this issue: https://gitlab.gnome.org/GNOME/vte/-/issues/125

Layout Changes

This release separates the pane layouts into “template” and “tabs”. This currently allows specifying a layout that is common to all tabs, as well as different layouts for each tab. We hope this will make it easier to start Zellij with a more complex layout for creating dashboards and workspaces. For more information and examples: https://zellij.dev/documentation/layouts-templates.html

The Zellij default layouts can now also be dumped to STDOUT to make it easier for layout authors to get started: zellij setup --dump-layout [LAYOUT_] [default, strider, disable-status]

And many more!

This release includes quite a few more features and bug fixes. For the full changelog, see the release:

https://github.com/zellij-org/zellij/releases/tag/v0.16.0