Skip to content

Releases: zellij-org/zellij

Release v0.44.3

13 May 07:49

Choose a tag to compare

This is a small patch release set out to fix some issues introduced by our host query forwarding system.

Issues such as STDIN stalling, popup panes being blocked and mouse+key movement producing control characters should be fixed.

Full Changelog: v0.44.2...v0.44.3

Please Support the Zellij Developer ❤️

Zellij is a labor of love and is provided free and open-source to anyone who wishes to use it.

Zellij will never display ads or collect your data.

To help sustain the project, please consider a recurring donation so that the developer can pay their bills: https://github.com/sponsors/imsnif

Release v0.44.2

05 May 06:43

Choose a tag to compare

This is a small patch release to fix some issues found recently in 0.44, as well as some minor long standing annoyances.

The only major feature introduced in this patch is support for CSI 2031: automatically switching between dark/light theme (assuming the terminal emulator itself supports it), as well as forwarding these instructions to the apps running inside Zellij. With this change, comes the new theme_dark and theme_light configuration parameters, that will be used by Zellij when it is instructed to switch, eg.

theme "dracula" // normal theme as it was up until now
theme_dark "dracula" // Zellij will use this when instructed to change to a dark theme
theme_light "catppuccin-latte" // Zellij will use this when instructed to change to a light theme

For convenience (eg. when using a terminal emulator that does not support theme switching), Zellij also now includes the zellij action set-light-theme, zellij action set-dark-theme and zellij action toggle-theme CLI commands to allow doing this manually. (note: when issuing these commands, Zellij will also send a CSI2031 to running terminal applications inside it that requested it, even if the host terminal itself does not support them).

For a full list of changes, please see the changelog.

Please Support the Zellij Developer ❤️

Zellij is a labor of love and is provided free and open-source to anyone who wishes to use it.

Zellij will never display ads or collect your data.

To help sustain the project, please consider a recurring donation so that the developer can pay their bills: https://github.com/sponsors/imsnif

Release v0.44.1

07 Apr 13:07

Choose a tag to compare

This is mostly a patch release to fix issues discovered in 0.44.0

Some fixed highlights:

  • Fixed the performance regression when switching tabs
  • Properly report OSC52 support in DA1 which will help applications such as neovim discover Zellij's clipboard support
  • Codex scrolling bug: We have accepted a mitigation for an issue where users of Codex would not see scrollback inside Zellij. This was happening due to some off-spec behavior on the part of Codex (nothing wrong, just them relying on a gray area in the specification). This version adjusts the Zellij behavior to match Codex's expectations.
  • Various fixes for the recent Windows port
  • The web-client now uses the base-url when switching sessions as well
  • Fixed some CJK IME cursor positioning support for East Asian languages

New stuff

  • Added a focus-pane-with-id and are-floating-panes-visible CLI actions
  • Zellij now supports and forwards OSC-99 desktop notifications
  • Added zellij --layout-string to allow providing in-line layouts
  • Added --tab-id to all CLI actions opening new panes, to be able to open them in a specific tab

For the full list of changes, see the CHANGELOG.

Please Support the Zellij Developer ❤️

Zellij is a labor of love and is provided free and open-source to anyone who wishes to use it.

Zellij will never display ads or collect your data.

To help sustain the project, please consider a recurring donation so that the developer can pay their bills: https://github.com/sponsors/imsnif

Release v0.44.0

23 Mar 08:03

Choose a tag to compare

This is a large release including many new features, some of which long requested, as well as countless fixes, infrastructure overhauls and much more. I would like to thank everyone for their patience with this long awaited version being released. I hope you will agree it was worth the wait.

Following is a non-exhaustive list of some major and significant changes:

Native Windows Support

Zellij now runs natively on Windows(!!). Achieved through a major community code contribution, at long last Zellij is truly multi-platform. Allowing windows users to enjoy the same session management, workspace automation, plugin ecosystem and multiplayer capabilities that have been available on Linux and macOS since the inception of the tool. We are truly excited.

Special thanks to @divens for the implementation and hard work.

Layout Manager

This release introduces a new layout-manager interface, implemented as a built-in plugin allowing users to:

  1. Open their favorite layouts in a new tab or tabs
  2. Apply their layouts to the current tab (optionally keeping panes that do not match the layout or closing them outright)
  3. Create new layouts on the fly by recording the current tab state

It should be noted that with the layout manager comes the new override-layout capability, appearing both a as a plugin command (used by the plugin) and as a CLI command. This capability allows us to change the layout of the current tab or all the tabs in the session to match a specific layout. An example use case for this is to toggle between the standard status-bar and the compact bar (in itself a much requested capability).

To open the layout manager: Ctrl o + l

Terminal-to-Terminal Attach over HTTPS (remote attach)

This feature allows us to attach to a remote Zellij session (with the web server running and the session shared) from the terminal, just like we would from the browser. Using the same authentication tokens and doing so over HTTPS:

zellij attach https://example.com/my-cool-session

Read-Only Session Sharing

We are now able to issue "read-only" authentication tokens, which will allow users to attach to sessions without being able to affect them in any way (keyboard/mouse input or terminal window resizing). This can be especially useful for teaching, demonstrations, screencasting or streaming.

These tokens can be issued with:

zellij web --create-read-only-token

Or through the share plugin with Ctrl o + s

CLI Automation

This release dramatically expands what can be accomplished from the command line. Some main areas:

Conditionally Blocking Command Panes

The zellij run command now includes a --blocking, --block-until-exit-success and --block-until-exit-failure flags. Using these we can conditionally block the CLI before moving to the next command, depending on the outcome of the command run in the new pane.

New CLI actions of note

  • zellij detach and zellij action switch-session
  • zellij action list-panes - lists all panes in the current or specified session, including metadata such as running commands, titles, coordinates, etc. Also optionally in --json format.
  • zellij action send-keys - allows us to send Human readable keys to a specific pane (eg. zellij action send-keys "Enter" "Ctrl c" "F1" "a" "b")
  • zellij subscribe - allows us to continuously subscribe to pane updates (viewport and scrollback) from one or more panes, optionally in --json format, optionally with --ansi (so colors and styling won't be stripped)
  • zellij action dump-screen now has a --pane-id flag so that we can query the pane viewport/scrollback actively (also from other session by prefixing the action with --session <name>)
  • CLI commands that create panes (eg. zellij run) now return the pane_id for easy storing and manipulation in following commands and scripts. CLI commands that create tabs (eg. zellij action new-tab) similarly return the created tab index.

For more info, including examples, recipes and directions for external programmatic control, please see: https://zellij.dev/documentation/controlling-zellij-through-cli.html

Resize Panes with the Mouse

Panes can now be resized with the mouse. Either by dragging their borders (floating panes require ctrl + dragging, as normal dragging moves them) or by floating over the pane, holding ctrl and scrolling the mouse up or down.

Note: this feature includes hints for the above keys that appear on hover. For those who do not like this behavior, the hints (as well as other mouse hover actions) can be disabled by specifying mouse_hover_effects false in the configuration.

Click-to-Open File Paths

By default, Zellij now highlights file paths (relative and absolute) when hovering over them with the mouse. When we Alt + Click them, these files will be opened in a new floating pane in our default EDITOR.

This new capability is implemented as a built-in plugin. For those who don't like this behavior, it can be disabled by commenting out the link plugin in the configuration: https://github.com/zellij-org/zellij/blob/main/zellij-utils/assets/config/default.kdl#L249

New Session Manager UI

The session manager UI has been revamped and is now much simpler, including only one screen that allows user to create new sessions, attach to existing ones or resurrect exited ones - all depending on which session name is specified.

For those wishing to remain with the old experience, the session manager can be run with multi_screen true.

New Rust APIs

It is Zellij development policy to create new UI interfaces as built-in plugins. This means that the new APIs created for all the above interfaces are now also available for third-party plugins (gated behind relevant permissions).
These capabilities include:

  1. Read pane scrollback - Plugins can now read the scrollback buffer of other panes, optionally including the ANSI colors and styling
  2. Configuration propagation - Changes to plugin configuration are now propagated to running plugins
  3. Query environment variables - Plugins can query env vars set upon session creation
  4. Highlight viewport text - Plugins can change the style of arbitrary text in any pane's viewport, optionally on mouse hover, optionally receiving an event when the user Alt + Clicks them
  5. Change pane colors - Set foreground/background colors of panes
  6. Explicit session save - Trigger a session save for resurrection without waiting for the automatic interval

For more info: https://zellij.dev/documentation/plugin-api.html

Infrastructure Overhaul

Under the hood, this release includes significant infrastructure changes:

  1. WASM runtime migration: The plugin runtime has been migrated from wasmtime to wasmi, meaning they now do not require an explicit compilation step and so do not need to be cached. This might incur a slight performance penalty for plugins, but this penalty can be almost completely mitigated by adding the following to the plugin's Cargo.toml:
[profile.release]
lto = true
strip = true
codegen-units = 1
  1. Async runtime migration: for historical reasons, up until now we've had two async runtimes: async_std and tokio. This release migrates us to use tokio exclusively.

Forwards Compatibility

Due to the lack of a client-server contract, Zellij sessions have never been backwards compatible. Each version upgrade would orphan existing sessions, forcing users to manually kill them and recreate them. While this is unfortunately still the case with this version, this will be the last time.

A new client/server contract has been created and enforced with protocol buffers. Future versions will be able to connect to existing sessions. The only caveat being that new features won't work with old sessions and will silently fail.

Additional Improvements

Beyond the above features, this release includes a large number of bug fixes and quality-of-life improvements:

  • Borderless panes - open specific panes as borderless or toggle border status at runtime
  • Terminal BEL forwarding from unfocused tabs and panes with visual indication
  • Configurable focus_follows_mouse and mouse_click_through
  • Line-wrapping/resize performance improvements
  • Better STDIN segmentation with latency (eg. over SSH)
  • Mobile web client viewport sizing and touch scrolling improvements
  • Numerous fixes for session resurrection, floating pane behavior, cursor handling, grid rendering and more

For the full list of changes, see the CHANGELOG.

Please Support the Zellij Developer ❤️

Zellij is a labor of love and is provided free and open-source to anyone who wishes to use it.

Zellij will never display ads or collect your data.

To help sustain the project, please consider a recurring donation so that the developer can pay their bills: https://github.com/sponsors/imsnif

Release v0.43.1

08 Aug 12:55

Choose a tag to compare

This is a patch release to fix minor bugs and usability issues discovered in the recently released 0.43.0.

What's Changed

  • fix: pane rename backspace regression by @imsnif (#4346)
  • fix: Zellij Web login issue with safari by @imsnif (#4345)
  • fix: terminal title regression by @imsnif (#4352)
  • fix: resurrection listing regression by @imsnif (#4354)
  • fix: tooltip keybinding backgrounds by @imsnif (#4356)
  • fix: default to session name for window/tab title in Zellij Web by @imsnif (#4357)
  • fix: handle omitted flags in the push sequence of the KKP by @2asoft (#4334)

Full Changelog: v0.43.0...v0.43.1

Please Sponsor the Zellij Developer! ❤️

Zellij is developed and maintained as a labor of love, but love does not pay the bills.

Zellij will always be free and open-source. Zellij will never contain ads or collect your data.

If you are able, consider sponsoring the Zellij creator and lead developer with a recurring monthly donation. There are Zellij stickers in it for you!

Release v0.43.0

05 Aug 06:57

Choose a tag to compare

join the discussion: https://github.com/zellij-org/zellij/discussions/4340

Web Client

This release includes the long promised web-client, allowing Zellij users to start up a built-in web server in order to share their existing terminal sessions in the browser, start new ones or resurrect exited ones.

The web-client includes built-in security measures such as enforced authentication and HTTPS. More info in the documentation or the screencast.

This feature is opt-in. The server will not be started except by an explicit user action or configuration. Even so, the Zellij maintainers are aware some users might prefer a version of Zellij that does not include this capability, and so we will now start providing a zellij-no-web release binary. This new binary does not contain this feature or any of its dependencies.

Multiple Pane Select + hover effects

This release offers the ability to perform bulk operations on panes. For example: stack multiple panes, break multiple panes to a new tab, float multiple panes, etc. Panes are selected either with the mouse (Alt + <left-mouse-click> on any pane) or with Alt p.

As part of its UI feedback, this feature also includes mouse hover effects. Users who do not like these can disable the feature by adding advanced_mouse_actions false to the config. It's unfortunately not yet possible to only disable the hover effects.

Optional Key Tooltips for the compact-bar

A long requested feature has been the ability to temporarily see the keybinding hints when using the compact-bar, rather than having them being displayed all the time as they are with the status-bar. This version adds an optional tooltip to the compact bar that will appear when toggled or when entering a non-base mode (eg. Pane, Tab, etc.)

More info: https://zellij.dev/documentation/faq.html#the-ui-takes-up-too-much-space-what-can-i-do-about-it

Performance Improvements

This version places all renders behind an asynchronous rendering engine, reducing the number of render events sent to the client. While the raw performance numbers themselves will not be directly affected, the perceived performance is much smoother.

Stack Keybinding

While stacked panes have been available in Zellij for a while, this version adds the ability to directly open a new stacked pane on top of the current one. This can be done with Ctrl p + s (or Ctrl g + p + s). For those with a pre-existing config, you can add this line to the keybinds block in the config in the pane section:

// default
bind "s" { NewPane "stacked"; SwitchToMode "normal"; }

// for the unlock-first preset
bind "s" { NewPane "stacked"; SwitchToMode "locked"; }

Fix multiline hyperlinks

A long standing issue with Zellij has been that hyperlinks in the terminal that are broken down by line wraps do not behave properly: clicking on these links would only lead to the first wrap of the URL rather than the full URL itself. This version fixes this issue by utilizing OSC 8 more intelligently (essentially: sending the full link data with each URL wrap and giving them all the same ID so that the terminal emulator knows to underline all of them on hover).

post_command_discovery_hook

The Zellij session-resurrection is a much loved and essential feature in Zellij: allowing users to pick up where they left off with their previous session even after a machine reboot. The way Zellij detects running commands in panes though is not perfect, often not working well with command wrappers such as nix, actively running shell pipeline, etc. This version offers a way to mitigate this in the form of a post_command_discovery_hook, allowing users to apply edits to these commands before they are serialized.

More info: https://zellij.dev/documentation/session-resurrection.html#post_command_discovery_hook

Please Sponsor the Zellij Developer! ❤️

Zellij is developed and maintained as a labor of love, but love does not pay the bills.

Zellij will always be free and open-source. Zellij will never contain ads or collect your data.

If you are able, consider sponsoring the Zellij creator and lead developer with a recurring monthly donation. There are Zellij stickers in it for you!

Release v0.42.2

15 Apr 07:14

Choose a tag to compare

This patch release is mainly intended to address a breaking change in the Rust compiler that caused compilation to fail with --locked starting from Rust version 1.86. (Thanks @tranzystorekk for bringing this to our attention and for the quick fix!)

This patch also includes some terminal rendering performance improvements - namely consolidating some renders and thus reducing the occasional text flicker.

What's Changed

  • refactor(terminal): log scroll region as tuple rather than Option by @imsnif in #4082
  • chore: Introduce workspace dependencies by @har7an in #4085
  • build: Don't use default features by @har7an in #4086
  • build: Don't re-export foreign crates in utils by @har7an in #4087
  • performance(render): improve rendering performance by consolidating renders and introducing repaint_delay by @imsnif in #4100
  • fix(deps): fix --locked build on rust 1.86 by @tranzystorekk in #4118

Do you like Zellij? ❤️

Me too! So much so that I spend 100% of my time developing and maintaining it and have no other income.

Zellij will always be free and open-source. Zellij will never contain ads or collect your data.

So if the tool gives you value and you are able, please consider a recurring monthly donation of 5-10$ to help me pay my bills. There are Zellij stickers in it for you!

Release v0.42.1

21 Mar 08:47

Choose a tag to compare

This is a patch release to fix an issue with Windows Terminal (and associated terminals on windows presumably going through the win conpty) mishandling of mouse any-event motions that caused flickering and other odd behavior in Zellij. While this is not a bug on our side, we mitigated it with the help of our STDIN parsing library termwiz. More details here.

Special thanks to @zeevro who did the troubleshooting and issued a fix to termwiz!

Release v0.42.0

17 Mar 08:06

Choose a tag to compare

This version brings multiplexing to the next level with new user-facing features. It also includes a brand new theme definition spec and some more goodies.
Read all about it in the official release post.

Stacked Resize

This version of Zellij introduces an innovative new way of managing multiple panes. When resizing panes, Zellij will attempt to stack them with their neighbors - giving us more space on screen while still keeping the title of the other panes around so that we can easily navigate to them with the keyboard or mouse.
This behavior can be disabled through configuration

Pinned Floating Panes

One of the most loved features of Zellij is its native integration of floating panes. This version adds the ability to “pin” any such pane so that it is always on top, even when not focused. Floating panes can be pinned with a mouse click or with a keyboard shortcut: Ctrl p + i.

New Theme Definition Spec

This version introduces a new theme definition specification, allowing much greater flexibility when defining the Zellij UI appearance - extending to user plugins as well. This specification concentrates on the generic UI components used to make-up the Zellij UI rather than mapping colors. We look forward to seeing new themes created by the community with these capabilities.

For more information, see the new theme documentation

New (Rust) Plugin APIs

This version adds lots of new capabilities to plugins and exposes them in the built-in Rust SDK. Some highlights:
* Change the /host folder at runtime
* Change floating pane coordinates
* Stack arbitrary panes
* Read mouse motions

Double/Triple Mouse Click Text Selection in Terminals

Since Zellij implements its own mouse selection and copying, many users have noted the lack of ability to double or triple click text in order to mark the word boundaries or canonical line respectively. This version implements this capability for terminal panes. Upcoming in the next version is the ability for plugins to opt-in to text marking with the keyboard/mouse on all or parts of their scrollback.

Release Notes and Tips on Startup

Starting this version, on first run Zellij will display the release notes for the current version. On subsequent runs, Zellij will display a random useful usage tip on startup. It’s possible to disable both of these behaviors through the config (and in the case of tips, also at runtime through the tips window as specified). More info here and here.

Both of these can be browsed through the new about plugin with Ctrl o + a.

Do you like Zellij? ❤️

Me too! So much so that I spend 100% of my time developing and maintaining it and have no other income.

Zellij will always be free and open-source. Zellij will never contain ads or collect your data.

So if the tool gives you value and you are able, please consider a recurring monthly donation of 5-10$ to help me pay my bills. There are Zellij stickers in it for you!

Release v0.41.2

19 Nov 12:34

Choose a tag to compare

0.41.2

This is a patch release which fixes some regressions from 0.41 and general bugs that happened to be fixed along the way. Some dependencies were also vendored (or had a vendored toggle added) to facilitate packaging.

A notable addition is that plugins now have access to a /cache folder which maps to an entry unique to their loaded URL in the Zellij cache folder.

What's Changed

  • fix(input): keypresses not being identified properly with kitty keyboard protocol in some terminals (#3725)
  • fix(input): reapply ctrl-j fix for the new architecture
  • fix(plugins): various cwd and usability fixes for the plugin manager (#3749)
  • fix(output-buffer): handle race that sometimes caused text spillover (#3750)
  • fix(tabs): some event ordering issues exposed by the recent runtime change (#3758)
  • fix(plugins): do not duplicate built-in plugins, eg. session-manager (#3759)
  • fix(terminal): reset kitty keyboard support when resetting terminal state (#3760)
  • fix(startup): crash when unable to watch config dir (#3761)
  • fix(startup): slow start in some cases due to a race in the server retry queue (#3767)
  • fix(screen): various crashes due to invalid state exposed by the recent wasm runtime change (#3776)
  • chore(package): add the option to use the system curl instead of the vendored version when compiling (#3766)
  • fix(ux): change plugin manager "open from filesystem" shortcut for consistency with the session-manager (#3779)
  • fix(plugins): send PaneClosed event to plugins also when an entire tab was closed (#3781)
  • feat(plugins): add a /cache folder to plugins to persist data between runs (#3787)
  • feat(package): vendor the common_path dependency (#3780)
  • fix(plugins): derive Hash and Ord for PaneIds (#3790)

Do you like Zellij ❤️ ?

Me too! So much so that I spend 100% of my time developing and maintaining it and have no other income.

Zellij will always be free and open-source. Zellij will never contain ads or collect your data.

So if the tool gives you value and you are able, please consider a recurring monthly donation of 5-10$ to help me pay my bills. There are Zellij stickers in it for you! https://github.com/sponsors/imsnif