Taming Zellij Keybindings on macOS: A Journey Through Conflicts and Dead Ends

If you use Zellij as your terminal multiplexer on macOS, you’ve probably hit the same wall I did: the default keybindings are built around Ctrl, but on macOS inside a modern terminal like Ghostty, Ctrl is a warzone. This post documents the full journey of finding a setup that actually works — including all the wrong turns.

The Problem with Ctrl on macOS

Zellij’s defaults use Ctrl as the modifier for every mode-entry key: Ctrl+T for tabs, Ctrl+P for panes, Ctrl+O for sessions, and so on. On macOS, this causes immediate conflicts:

Continue Reading »

→ Zellij Plugins : zellij-forgot

I didn’t even know Zellij had such extensive plugin system.

I’m going to explore more of those in coming days.

Let me start with Zellij Forgot

While the main (original?) purpose was (I assume) to remember various Zellij Keybindings, it can be extended to remember anything. 1

While default/out of the box config will load the existing keybindings, it is a bit weird. It shows things like Some(Down, None) which seems more of Rust internal code and may not be directly useful to the user.

Instead, (as the README suggested) I added my own “pairs” (This is also given in the README, I just copy/pasted it)

By default, this adds to the existing list.

Not what I wanted.

Luckily, adding "LOAD_ZELLIJ_BINDINGS" "false" to the config will disable automatic keybinding loading.


  1. The README has example of buy eggs 😄. Personally, I don’t think it is very good example. If you remember to look it up, you’ll also remember to buy eggs anyway. IMO, this is meant for things that one does not use frequently, and needs to “look up” ↩︎

How Zellij saved me

OK, title is a bit of clickbait. It saved me some inconvinence 😉

Yesterday, Wezterm crashed.

At first, I was worried that all my “work” is lost (few blog posts were in-progress and open in helix)

But I had forgotten that I always start zellij these days.

So all my “work” was indeed there.

All I had to do was zellij ls followed by zellij a my_session1 (and my_session2 and so on)

Continue Reading »

How to create IDE like experience in terminal using Zellij

(undocumented?) Zellij Keybindings

Undocumented, because these don’t show up in the default configuration, which shows (I assume) most useful key bindings. I had to look for these, and found them in Github discussions/issues.

  • Ctrl p d
    • Ctrl p is for pane, but d after that (which I assume stands for down) is not documented.
    • This creates a new terminal in horizontal split fashion 1
  • Ctrl n - to reduce the size of the terminal.
    • By default, it is split 50-50
    • Usually, you’ll want more screen real estate for the editor (Helix in my case, but works for (n)vi(m) or emacs-in-terminal as wlel)

There is also a possibility of running a floating pane. This may be used for running a server process, which mostly one doesn’t need to look at constantly.

Continue Reading »

Why I switched to Zellij

I had tried switching to tmux for local shell sessions in past, but never truly understood why I might need it.

I extensively used tmux for remote sessions. But why might I need it locally ?

Then slowly I stopped using tmux and switched to wezterm which provided multiple tabs.

Fast-forward several years later.

Recently I came across Zellij. I decided to give it a go.

When I had tried tmux it took some time to get used to the keybinding.

Continue Reading »