Oh hi Zellij
Well, I was finally settling into my terminal lifestyle with Tmux+Tmuxp managing my workspaces. And along came Zellij.
While I'm generally happy with Tmux, there was some wonkiness with Neovim. More specifically, when I'd use the Navi Tmux widget to paste a cheatsheet item into my buffer, it would sometimes totally bork the rendering. All the text in the Neovim buffer would disappear, and I hadn't yet found a reliable way to fix that. Even detaching and re-attaching to the session wouldn't always work.
I don't know who to blame: Tmux, Neovim, my Navi script, my terminal. It's like trying to find a responsible party in the federal government.
When I went searching for an answer, one of the first and most-upvoted comments I found was from someone who'd left Tmux to Zellij due to similar problems and was happy about their decision.
Wild-eyed and cold-sweating from weeks of cognitive overload, I installed Zellij and entered manic-tire-kicking mode. After a day of distraction and reworking my scripts, I think I'm back up to speed and feeling optimistic about the move.
Zellij is meant to be a batteries-included multiplexer experience with a bunch of human-friendly config out of the box. This is in contrast to Tmux, whose features and config can be inscrutable for the uninitiated. The Zellij UI has a helpful menu bar that guides you through creating and navigating tabs and panes, moving and resizing panes, etc. Since I'd figured out Tmux well enough for my needs, this wasn't all that compelling to me.
But Zellij's
floating panes
had my attention.
The feature reminds me of the
i3 scratchpad,
which I used the heck out of when Linux was my daily driver.
Basically: you can show and hide a floating pane
— one that appears over the top of your other ones and then vanishes at your command —
with a hotkey.
I have it bound to Alt-;.
This is great for anything you frequently but briefly access.
My main use cases are:
- My daily note, where I keep a scrappy log of my thoughts and tasks. I often want to quickly add a log line and then go back to what I was doing.
- My Git TUI, lazygit, open in the current workspace's repo. I can make a commit, push, and get back at it without losing my train of thought.
- Less often, a scratch terminal pane for quick commands, although just creating a new tiled pane is usually fine for this as well.
Another cool feature: out-of-the-box layouts. Tmux has a half-dozen third-party extensions that do this sort of thing, and picking the "right" one is an endeavor. I landed on Tmuxp after a lot of fumbling around with alternatives. Including this as a first-party feature is great!
Zellij feels like a win so far, and I signed up as a sponsor. It never ceases to amaze me how many wonderful tools people are creating and making freely available for us nerds. It's a glorious age for the terminal.