github zellij-org/zellij v0.38.0
Release v0.38.0

latest releases: v0.40.1, v0.40.0, v0.39.2...
12 months ago

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

262799415-6d93e314-8096-49a3-9a51-36f794b3a2c0

Read more...

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.

> Move panes between tabs

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.

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

If you have a custom keybindings configuration, please see the "Updating a custom keybindings configuration" section below.

> 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:

  1. Remove the clear-defaults=true part in order to get these keybindings "merged" with your custom keybindings.
  2. 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!)

img-2023-08-12-164545

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

  1. Plugged a memory leak (more info: #2675)
  2. Fixed occasional pane resizing glitches
  3. 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

Don't miss a new zellij release

NewReleases is sending notifications on new releases.