joseph zhong

iTerm2/et/tmux MacOS Setup

It’s been a quite a long time since I’ve written a post on computer-setup.

It’s just been a while since I’ve been challenged to change what I’m comfortable with… Anyway, glad to finally have been challenged once more to make some change :)

Terminal.app/ssh/screen – I’ve always been using the native Terminal.app, refusing to learn the iTerm2.app/et/tmux, “new-kid tools” since 2013. Wow what a difference 7+ years makes, now I feel old! Is this what it feels like to be a “responsible” adult? yay

iTerm2 setup

welp, dark-background on default. Never liked that for terminal ever since it was introduced (I use dark-mode by default otherwise, weird…) I just like reading logs on a white background, although all my code-editing is always on dark-backgrounds otherwise. Years of learned visual-muscle-memory?

Just look how bad this looks… also the cursor was invisible while typing the commands

fixing the default color profile

I never understood why I’d ever want to have multiple color profiles, unless your workflows are seriously dialed for different things (e.g. sql vs coding vs log-reading etc… maybe super-nerds/data-base admins for schools/hospitals get a pass), why not just use what’s most comfortable for as many situations as possible?

let’s fix that quickly

image to set “light background”

Also… why the heck is the nice “SF Mono” font not available: quickly download that from Apple (lol, apparently they also made a “New York” font, where’s the love for Seattle, huh?)

I thought that was it, but there’s a bunch of other defaults that were changed that I hate.

The cusor is invisible in my dark-mode editor! WTF, why would you use 100% black? That’s like the number one design principle broken from my favorite design site! The default in Terminal.app is 50% gray! Compatible in both light/dark backgrounds!

More small annoying minor tweaks…

“Natural Text Editing” Preset

edit: I later noticed that fn + delete wasn’t deleting (emulating the Delete key correctly), I later changed the preset to “Terminal.app Compatibility” (I should have known earlier) and this fixed the issue, and kept the option + <arrow-key> mappings I liked.


Okay, light-mode-for-iTerm2, white-background, SF Mono 11, nice neutral gray block-cursor and non-skinny text. Looks and quacks like a duck! Let’s move on.

From here it’s pretty simple, let’s go setup Eternal Terminal

et setup

On your Linux server

# Installs et.
sudo whatever-you-run-to-install et

# Enable et.
sudo systemctl enable --now et
systemctl status et

# Make sure you can run et on the right port for your ssh. important! 
sudo sed -i "s/port = XYXY/port = XYXZ/" /etc/et.cfg 
sudo systemctl restart et

# this takes a while! go get lunch or something.
# EDIT: In a previous version I said to 
# sudo-reboot but turns out shouldn't be necessary!
# sudo reboot

And finally… on the MBP

brew install MisterTea/et/et

# Basically use `et` in-place of `ssh`.
et $USER@your-server.wee.xyz:XYXZ

I usually set an alias for whatever servers I need:

$ type et-small
et-small is aliased to `et $SSH_SMALL:XYXZ'

Once you’re in, let’s tmux!

tmux setup

A Quick overview of how to run tmux

# Starts a new session
tmux -CC 

# Resumes previous session
tmux -CC a -d 

# New named session
tmux -CC new-session -AD -s <NAME-OF-SESSION-HERE>

You’ll also want to make sure your ~/.tmux.conf is set to what you like to use.

I personally like scrolling up/down via mouse-wheel, and we spent so much time on getting the colors right, make sure that hard work isn’t wasted by setting 256colors!

$ cat ~/.tmux.conf
# Make mouse useful in copy mode.
setw -g mouse on

# Enables scrolling via mouse-scroll wheel.
bind -n WheelUpPane if-shell -F -t = "#{mouse_any_flag}" "send-keys -M" "if -Ft= '#{pane_in_mode}' 'send-keys -M' 'copy-mode -e; send-keys -M'"

# Scroll history.
set -g history-limit 99999

# Lower escape timing from 500ms to 50ms for quicker response to scroll-buffer access.
set -s escape-time 50

# Setup 256 colors.
set -g default-terminal "xterm-256color"

Wahoo!!!! Now if you lose internet or VPN crashes, you won’t lose your ssh/tmux session since it auto-connects :) amazing!!!!