There are two pieces of sticky software that I have never been able to escape from: vim & tmux.
tmux in particular was a huge upgrade for me over my previous workflow. It was the first time I realized that terminals could be smarter and do splits, tabs, etc.
Those things are built into terminal apps now, but ten years ago, as I was getting comfortable in the command-line, it was mind-blowing!
But I have always fought with tmux over a few specific things: sane scroll behavior, keybindings, and theming.
Not sure where I first saw Zellij, but when it was mentioned as a modern tmux, I was intrigued! Now, after a few weeks of usage, I'm confident Zellij is going to replace tmux on all my machines.
It has great defaults for those three things I mentioned above. Scrolling via the trackpad just works in Zellij. Zellij makes its keybindings very visible (see screenshots), but it also has support for the default tmux keybidings, which is a neat touch considering I have a decade of muscle memory doing <C-b> n, <C-b> p, etc. I'll slowly relearn those habits, but having that to fallback onto is great.
I'm excited to dig into some of the more advanced functionality too - I see that it has floating shell support, it can revive sessions after they've been killed, and I'm sure there's a lot more I haven't even discovered yet.
Like a lot of really good CLIs, it's been unobtrusive while I get my bearings. The complex stuff is still there! But I know it will stay out of my way until I'm ready for it.
It's a fun time to be into command-line tools! So many new things to try out.
Naming sessions
The only thing I don't like about Zellij is the random session names. Every session is automatically named something like colorful-aardvark when you start it up, which makes it hard to find existing sessions for projects when you come back to them.
The za alias fixes that. It uses the current directory name, or a parameter, as the session name. Then it tries to join an existing Zellij session with that name, or creates a new one:
za() {
local session_name=${1:-${PWD:t}}
zellij attach "$session_name" || zellij -s "$session_name"
}Now, in any directory, you can type za. If I'm in ~/src/blog, it looks for a session called blog and joins it, or creates one if it doesn't exist.