tmux is awesome
Β· notei recently started using tmux, a terminal multiplexer that splits a single terminal into multiple sessions, each with its own windows, and each window splittable into panes. itβs awesome. one tip before diving in: if youβre on mac, run it inside iterm2 rather than the default terminal app.
for me, still fairly new to it, the win is opening a window per project with a single command, hub. it kills any existing projects session and rebuilds tmux from scratch, each window already cdβd into the right directory:
hub() {
local s="projects"
tmux has-session -t "$s" 2>/dev/null && tmux kill-session -t "$s"
tmux set-option -g allow-rename off
tmux set-option -g automatic-rename off
tmux new-session -d -s "$s" -n "web-app" -c "$HOME/workspace/web-app"
tmux new-window -t "$s" -n "design-system" -c "$HOME/workspace/design-system"
tmux new-window -t "$s" -n "api" -c "$HOME/workspace/api"
tmux new-window -t "$s" -n "chat" -c "$HOME/workspace/chat"
tmux select-window -t "$s:0"
tmux attach -t "$s"
}
from there i switch between projects with prefix + n, and split each projectβs window into panes that stay open all day: claude code, opencode, the dev server, a shell for git.
[projects] 0:web-app* 1:design-system 2:api 3:chat
βββ claude βββββββββββββ¬ββ opencode βββββββββββ
β refactoring the auth β ~ planning the v2 β
β middlewareβ¦ β ingestion pass β
βββ dev server βββββββββΌββ git ββββββββββββββββ€
β β² ready on :3000 β $ git status β
β β compiled in 240ms β β nothing to commit β
ββββββββββββββββββββββββ΄βββββββββββββββββββββββ
right now iβm also learning neovim, the goal being that i never have to leave the terminal at all. i still keep vs code open next to it for actual editing while the nvim muscle memory catches up. but even before thatβs done, even with no real ide in the picture, this setup is a straight 100% productivity gain over what i had before. and itβs just so beautiful to look at.
if you want to get into tmux and neovim, typecraft.dev has a free course thatβs genuinely excellent. π