A terminal workspace with batteries included
This is a patch release mainly aimed at fixing some issues mostly introduced or exposed in the latest 0.40.0
release.
However, this version also introduces two exciting new features:
Ctrl j
is now bindable thanks to a community contribution (thanks @hiasr !) - you can read more about the technical details of the implementation.zellij action list-clients
command was added for tools wishing to integrate with Zellij through the command line (this should facilitate interaction with other nested multiplexers such as neovim).default-layout
) when creating a session in the background from the CLI (https://github.com/zellij-org/zellij/pull/3288)zellij action list-clients
to allow listing the connected clients as well as their pane_id and running command (https://github.com/zellij-org/zellij/pull/3314)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
This release includes exciting new features as well as some long awaited and requested improvements.
Check out the official announcement
Also check out the two new screencasts/tutorials about session management and the new filepicker.
In order to take advantage of some of the new features (eg. the welcome-screen and filepicker), you'll need to swap the plugins
section in your configuration file with the one from the default file.
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!
This is a patch release mostly to fix an issue where the sessions in the session-manager would take ~1 minute to be updated.
Full Changelog: https://github.com/zellij-org/zellij/compare/v0.39.1...v0.39.2
This is a patch release to fix some issues that came out with the recent 0.39.0
release.
The main user-facing issue here is reducing the serialization interval to 1 minute by default and allowing it to be configured using the serialization_interval
configuration parameter.
Thanks to the many community contributions which helped quickly fix a lot of the bugs found in the release! It's good to see so many people relying heavily on the tool and helping maintain it so quickly.
Full Changelog: https://github.com/zellij-org/zellij/compare/v0.39.0...v0.39.1
This is a significant release with lots of major and long requested features. Here's a run down:
This version adds a built-in capability to resurrect sessions. Attaching to "exited" sessions will re-create them, placing any running commands behind a Press <ENTER> to run
banner so as to prevent awkward situations with things like rm -rf
. Sessions can also be resurrected through the session-manager
.
Special thanks to @AlixBernard for implementing the serialization algorithm, as well as to @alekspickle for helping integrate the algorithm with our code base. Without them this feature would not have come to be.
This version introduces UI Components for plugins. Allowing plugins to render beautiful and consistent UI elements (eg. table
, ribbon
, nexted-list
) no matter which programming language they were developped in. These components are serialized on the plugin-side and interpreted by our ANSI interpreter using a private DCS
.
This release introduces the http(s)
prefix for plugin URLs. Meaning we would be able to load them from the web just like we load them from the HD.
A new top-level CLI command was also added to make loading plugins easier:
zellij plugin -- https://example.com/plugin.wasm # Will also work with file: and zellij: urls
Thanks @jaeheonji for designing and implementing this feature.
It's now possible to rename the current session. This can either be done through the CLI with the new rename-session
action, or through the session-manager
with Ctrl r
.
Sometimes, when opening new panes it can be convenient to have them open "in-place", meaning that they would replace the currently active pane and then drop back to it once they exit. This release adds this ability to zellij run
and similar commands using the --in-place
flag.
While not user facing, this is an important upgrade of our WebAssembly runtime that makes packaging easier as well as facilitating compatibility to some platforms.
Thanks @tlinford for his tremendous efforts in getting this done
This API allows plugins to run a command on the host machine. The command will run in the background and the plugin will be notified with an Event
when the command has completed, receiving its exit code, STDIN and STDOUT.
This API allows plugins to make a web request and receive its output. The request will run in the background and the plugin will receive an Event
with the response once the request is complete.
<ESC> - Drop to shell
to command panesFor a while now, Zellij has had the concept of "command panes" - panes that run a specific command as part of the UI. Now, in addition to being able to re-run the command with ENTER
and close the pane with Ctrl c
, it's also possible to drop to a shell with <ESC>
. This can be especially useful when combined with the session resurrection feature (eg. if one does not want to run the resurrected command but does not want to close the pane either).
Zellij now supports the "styled underlines" ANSI extension.
Thanks @eatgrass and @mike-lloyd03 for the implementation
Starting this release, plugins are opened to the working folder of the currently focused terminal pane (if available), rather than the folder in which the Zellij session was started.
Full Changelog: https://github.com/zellij-org/zellij/compare/v0.38.2...v0.39.0
This is a patch release to fix a regression in line wrapping handling while in alternate screen mode. The main reported issues have been with the latest version of neovim.
Apologies for the inconvenience and for the delay in fixing. The new neovim version relying on this behavior was released while I was on vacation, so just a bit of bad luck!
More details: https://github.com/zellij-org/zellij/pull/2789
Full Changelog: https://github.com/zellij-org/zellij/compare/v0.38.1...v0.38.2
This is a patch release, fixing some minor issues encountered after the latest major release
Full Changelog: https://github.com/zellij-org/zellij/compare/v0.38.0...v0.38.1
This release includes lots of improvements for the Zellij UI/UX as well as some exciting new plugin features and infrastructure. It also provides some performance and resourcee utilization improvements.
This release is a breaking change for plugins. Please see the upgrade guide for plugins
Zellij now includes a built-in session-manager. It is implemented as a plugin and so all of its API is available to plugin authors as well. The session-manager can switch between sessions, focus a specific tab or pane in the current or in another session, create new sessions and fuzzy-find sessions/tabs/panes by their names.
By default, the session-manager can be started from the SESSION
mode, the default key-binding sequence being Ctrl o
+ w
.
If you have a custom keybindings configuration, please see the "Updating a custom keybindings configuration" section below.
Panes can now be moved between tabs. One can Break
a pane to a new tab, meaning that a new tab would be created "around" this pane.
If you have a custom keybindings configuration, please see the "Updating a custom keybindings configuration" section below.
Thanks @tlinford for your work on this!
You'll need to either:
clear-defaults=true
part in order to get these keybindings "merged" with your custom keybindings.One can now start plugins with a custom key/value configuration, either from layouts:
pane {
plugin location="file:/path/to/my/plugin.wasm" {
some_key "some_value"
another_key 1
}
}
Or from the cli:
zellij action launch-or-focus-plugin --configuration "some_key=some_value,another_key=1"
move_to_focused_tab
attribute added to the LaunchOrFocusPlugin
keybindingThe LaunchOrFocusPlugin
keybind (and launch-or-focus-plugin
cli command) now include a move_to_focused_tab
attribute. If true, when focusing the plugin it will always start in the user's focused tab. This is useful for UI pop-up windows (such as the session-manager
) to not move the user's focus from the tab they're in.
Zellij plugins have always communicated with the host system (Zellij itself) by serializing/deserializing complex structures over STDIN/STDOUT. This caused problems both for other SDK writers who had to reverse engineer the serialization and for plugin upgrading. Starting this version, Zellij uses Ptorocol Buffers in order to communicate across the wasm boundary.
This means that plugins now should not break in future versions unless there's an API behavior change, which we as maintainers make an effort to do only very rarely.
Special thanks to @har7an for his tremendous efforts bringing the CI into shape before the release!
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. 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
Full Changelog: https://github.com/zellij-org/zellij/compare/v0.37.2...v0.38.0
This is a patch release to fix some minor issues in the previous release.
Full Changelog: https://github.com/zellij-org/zellij/compare/v0.37.1...v0.37.2
This is a patch release mainly to fix a regression in 0.37.0 where the user's theme_dir
was not picked up.
v0.37.0
by @jaeheonji in https://github.com/zellij-org/zellij/pull/2562
Full Changelog: https://github.com/zellij-org/zellij/compare/v0.37.0...v0.37.1