Zellij 0.41.0: Solutions for Colliding Keybindings, Plugin Manager, new UI
2024-11-04Zellij 0.41.0 has just been released! Check it out!
Here’s a short video demonstrating the highlights. Be sure to scroll down to read more!
Some highlights:
- Solutions for Colliding Keybindings
- Support for multiple-modifiers and the kitty keyboard protocol
- Change the Configuration at Runtime
- New UI
- Configuration Screen and Setup Wizard
- Load Layouts from the Web
- New Plugin APIs
- A new Plugin Manager
- New Themes
- Do you like Zellij? ❤️
Solutions for Colliding Keybindings
A problem that has plagued users of Zellij since its inception is the “colliding keybindings” issue. Where Zellij would take up a keyboard shortcut that an app running inside it would be listening for. For example, Zellij uses the Ctrl o
shortcut to enter Session
mode, and vim uses the same shortcut to jump forward in the user’s jumplist.
While users were always able to circumvent this issue by rebinding keys in the configuration file, this release now offers two easy solutions that do not require any thought, design or tinkering:
- One is now able to choose a “non-colliding” keybinding preset, where one unlocks the interface before entering the various modes
- It’s now possible to rebind the leader keys (by default
Ctrl
for modes andAlt
for quick shortcuts) at runtime
Both of these (as well as a combination of the two) can be chosen and applied through the new configuration screen
Support for Multiple Modifiers
Zellij has chosen to adopt the Kitty Keyboard Protocol which has recently been growing in popularity among terminal emulators. With the help of this protocol, Zellij now allows users to bind multiple modifiers to specific actions (eg. Ctrl Alt a
) as well as special previously unavailable modifiers (eg. Super a
).
Zellij of course also supports this protocol for applications running inside its panes.
Note that in order to take advantage of this feature, one must also use a terminal emulator that supports it. The Zellij maintainers recommend Alacritty
or WezTerm
.
Change the Configuration at Runtime
Starting from this release, Zellij supports changing the configuration file and having the changes applied at runtime. We recommend trying it out by switching to one of the new themes and seeing them applied to the UI in real time.
New UI
The Zellij status-bar has been redesigned, offering a variation for users choosing the “Unlock First” keybinding preset as well as a new more conceise one-line look for the default preset.
Configuration Screen and Setup Wizard
In order to facilitate the usage of the new Non-Colliding Keybinding Preset, Zellij will now display a short setup wizard on first run. This setup wizard will allow users to discover the new keybinging preset and either choose to use it immediately or know that they can switch to it at a later time.
The setup wizard can be accessed as a configuration screen in-app by pressing:
Ctrl o
+c
in the default presetCtrl g
+o
+c
in the non-colliding preset
Load Layouts from the Web
Layouts are the core automation primitive of Zellij. They allow users to create their own personalized workspaces, automate tasks and share all of this with others in a friendly Human-readable file. Starting this release, Zellij allows users to load layouts directly from the web: zellij --layout https://example.com/my-layout.kdl
.
For security reasons, all commands in these layouts will be suspended behind a Waiting to run <command>
, prompting the user’s approval before running each one. Plugins - as always - will require explicit user permissions in order to perform sensitive actions.
This is a great way to share workspaces with others for fun and collaboration.
New Plugin APIs
This release offers many new plugin APIs (gated behind relevant permissions), a few examples include:
- Rebind keys at runtime as well as reconfigure Zellij (used by the built-in configuration)
- Controlling
command
panes (knowing when they were opened, closed, exited, re-run) and getting information about their exit code - Hiding and showing panes based on their pane id
- Control other panes (everything from writing input to arbitrary panes, changing them to fullscreen, toggle their floating status, etc.)
- Load/reload other plugins
- List-clients (including their focused pane_id, running command or plugin url)
This release also introduces a new load_plugins
configuration section, allowing users to load plugins in the background on session start.
A New Plugin Manager
As the Zellij plugin ecosystem begins growing, it’s becoming more and more difficult to keep track of which plugins are running inside a Zellij session. For this reason, the new release introduces a new Plugin Manager. Allowing users to track which plugins they have running inside the session and where they got them from. Users can also use it to easily load new plugins, specify configuration for them as well as reload existing ones.
The plugin manager can be accessed by default with Ctrl o
+ p
.
New Themes
This release includes many different themes added by the community. You can see the new “night-owl” theme above. For a full list of themes, please see the theme list.
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!