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
UI/UX
> Session Manager
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. By default, the session-manager can be started from the If you have a custom keybindings configuration, please see the "Updating a custom keybindings configuration" section below.
Read more...
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.
SESSION
mode, the default key-binding sequence being Ctrl o
+ w
.
> Move panes between tabs
Panes can now be moved between tabs. One can If you have a custom keybindings configuration, please see the "Updating a custom keybindings configuration" section below.
Break
a pane to a new tab, meaning that a new tab would be created "around" this pane.
Read more...
These new keybindings can be found in `Tab` mode. By default, they are:
* `Ctrl t` + `b` - Break pane into new tab
* `Ctrl t` + `[` or `]` - Move pane between tabs
> Support shortcuts for opening commands in floating panes
Read more...
The `Run` keybinding now supports `floating true` and `name `. This would allow you to bind a key shortcut (eg. `Ctrl f`), to open a specific command (eg. `cargo test`) in a floating pane.> All session names should now be non-offensive
Thanks @tlinford for your work on this!
> Updating a custom keybindings configuration
Read more...
Do you have a custom keybindings configuration in your `config.kdl` file? Does the `keybinds` section have a `clear-defaults=true` attribute? If so, you have to take a small extra step to get the new keybindings for the `session-manager` and the `Break pane` keybindings:You'll need to either:
- Remove the
clear-defaults=true
part in order to get these keybindings "merged" with your custom keybindings. - Manually add the following sections to your configuration: session-manager, break-tab
Plugins
> Plugins are now configurable
Read more...
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"
> Plugin permission system (thanks and great work @jaeheonji!)
Read more...
Zellij now includes a permission system for plugins. Plugins can request permissions with the `request_permission` API call. This will display a help screen asking the user to approve permissions to this plugin. Permissions are cached in a `permissions.kdl` file in the user's cache folder and can be cleared by deleting or editing the file.
> move_to_focused_tab
attribute added to the LaunchOrFocusPlugin
keybinding
Read more...
The 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.
> Plugins are now forwards compatible thanks to protocol buffers
Read more...
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.
Bug Fixes
- Plugged a memory leak (more info: #2675)
- Fixed occasional pane resizing glitches
- Pane frame is now colored when in a mirrored multiplayer session
Special thanks to @har7an for his tremendous efforts bringing the CI into shape before the release!
New Contributors
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. 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: v0.37.2...v0.38.0