It’s time to publish something more technical. This year, unexpectedly for myself I have switched my primary terminal emulator I’m using on a daily basis. I must confess after months with current setup - terminal never felt so good on MacOS before.

iTerm2 is the king

Everyone’s using terminal on MacOS knows built-in terminal is good to instal another terminal. Just like Internet Explorer years ago was meant to download another browser. For me it’s been always pretty the same feelings for MacOS terminal. At least it’s there and my non-geeky friends and family members can execute a bunch of commands when I ask them.

For the real work - there’s just one good choice. At least I thought so for many years. That’s the iTerm2. Plethora of options, reliable, battle tested. Having tabs and panes management built in - an absolute must for me. Was it ideal? Not really. It was never a multiplexer.

Terminal Multiplexer

Without getting too deep and broad - multiplexer allows to spawn multiple instances, optionally connected to the same session. It also allows to close the client itself (quit terminal) - letting process working. This is sometime very useful for long-running processes.

What comes to your mind when you hear terminal multiplexer? For me the answer was always the same - tmux. There are alternatives, but tmux always seemed to be more friendly. Providing clear controls, always easily available using each and every packet manager. Often referred by people around me.

The change

I was browsing the Rust community the other day and spotted Zellij. It was not the first time, yet this time it was a perfect timing. It has caught my eye. It has one huge benefit comparing to tmux. I was never patient enough to learn shortcuts and master commands. Starting, then leaving for a long time, that’s enough to forget it. Then starting over when I need a few of these.

In Zellij - well everything was in front of my eyes. All the commands, dynamically changing according to the state I’m currently in. It required no switching - just some muscle memory to build for basic commands, like splitting panes, switching and closing.

I have also met Alacrity earlier before, which is a beautiful terminal emulator. But it lacked panes. And that’s the basic workflow for me. So years ago the suggestion was - go with tmux. And I have already mentioned what was the problem. Learning again, discomfort on the worst possible level - the one that requires to re-learn how to make basic operations within my tools.

That was the point when it clicked.

A perfect match

I understood that might be a chance to start using one of the best modern Terminal emulators and much more convenient multiplexer available out there. This is how I set up Alacrity with Zellij inside.

Reconfiguring shortcuts for Zellij took a while and some friction, but overall went fast. Having a single config file that immediately landed on my flash-drive and distributed across multiple machines I use. The linux machine required some adaptations to match difference in the keyboard layout (yeah, it’s still Cmd vs Ctrl).

And this is how my better experience with terminal started. Alacrity feels more accurate rendering fonts (that matters on 4k displays) and being blazingly fast at doing so.

Workspace plugin for Zellij gave me a possibility to start most used sessions with proper layouts with a few clicks. And all the shortcuts and suggestions was right there - in front of my eyes. Most of shortcuts felt more native and logic from the day 1. Some others - took just a while to explore and understand the logic behind the combination.

Is it perfect?

Living in imperfect world requires us to adopt. This combination became my daily driver and still bring some extra enjoyment from using it. However, there is one things that is still missing.

In the beginning I mentioned iTerm2 is the king of MacOS terminal. For that reason it has perfect integrations. Which one do I care about? ChatGPT MacOS app. It is convenient to connect it to the session and ask for help to understand and solve the issue.

On day to day basis I don’t need a lot of AI assistance, dealing with a bunch of tools I use for years - git, docker and similar. However, it means one inconvenience - if I need an AI assisted session - I have to start an iTerm2. That feels sloppy and bulky, yet does the job and seamlessly provides context for the ChatGPT app. At this point, being already configured, it has no major impact. I hope Alacrity will get integration with ChatGPT companion app the other day.

MacOS terminal I finally love