Zellij 0.42.0: Stacked Resize, Pinned Floating Panes, New Theme Spec
2025-03-17Zellij 0.42.0 has just been released! Check it out!
Some highlights:
- Stacked Resize
- Pinned Floating Panes
- New Theme Definition Spec
- New (Rust) Plugin APIs
- Double/Triple Mouse Click Text Selection in Terminals
- Release Notes and Tips on Startup
- Do you like Zellij? ❤️
Here’s a short video demonstrating the highlights. Be sure to scroll down to read more!
Stacked Resize

If you want to learn more, check out the Stacked Resizes and Pinned Floating Panes Screencast/Tutorial.
This behavior can be disabled through the configuration.
Pinned Floating Panes

Ctrl p + i.
New Theme Definition Spec

For more information, see the theme documentation.
Special thanks for DeaconDesperado for implementing the specification.
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
let new_host_folder = PathBuf::from("/different/path/on/machine");
change_host_folder(new_host_folder);
Plugins can now change their mounted /host folder at runtime, so that they can access different parts of the user’s machine - gated behind the new FullHdAccess plugin permission. This ability became possible due to our recent migration to wasmtime to manage our WebAssembly/WASI runtime for plugins.
Change floating pane coordinates
let coordinates = vec![
(PaneId::Terminal(1), FloatingPaneCoordinates {
x: Some(10),
y: Some(10),
width: Some(20),
height: Some(20),
pinned: Some(true),
})
];
change_floating_panes_coordinates(coordinates);
Plugins can now change the floating pane coordinates of themselves and other panes. The coordinates include the x/y location, their width/height and whether they’re pinned or not. Since these can be done in bulk by sending a vector, this opens lots of interesting possibilities for creating dashboard and control flow experiences.
Stack arbitrary panes
stack_panes(vec![PaneId::Terminal(1), PaneId::Plugin(1), PaneId::Terminal(2)]);
Plugins can now combine existing panes into a stack using their pane ids. Combined with the new stacked_resize capabilities described above (also accessible to plugins through the normal resize methods), this can allow plugins to create multiple-select and grouping experiences.
Read mouse motions
fn update(event: Event) -> bool {
match event {
Event::Mouse(Mouse::Hover(x, y)) => {
eprintln!("hovering over coordinates: {:?}, {:?}", x, y);
},
// ...
}
// ...
}
Plugins can now read mouse motions when the user hovers over them. Combined with the built-in UI components, this allows creating very pleasant user experiences in the terminal (an example can be seen in the new built-in about plugin, accessible with Ctrl o + a).
Double/Triple Mouse Click Text Selection in Terminals

Release Notes and Tips on Startup

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!
