DEV Community

Cover image for run.sh Diaries #3: My Terminal Stack – tmux, zoxide, and lazygit
LazyDoomSlayer
LazyDoomSlayer

Posted on

run.sh Diaries #3: My Terminal Stack – tmux, zoxide, and lazygit

TL;DR
This post walks through the terminal tools I bootstrap with my WSL setup: tmux for multitasking, zoxide for lightning-fast directory switching, and lazygit for painless Git management.
These aren’t just cool tools and they’re essentials in my terminal-first workflow.

Why a Terminal Stack?

I’ve said it before: I prefer a terminal-first workflow.

  • Modern IDEs? Too heavy.
  • GUI Git clients? Slow and mouse-driven.
  • I want speed, control, and tools that work over SSH, WSL, or raw Linux.

So I built my environment around powerful CLI tools that:

  • Launch instantly
  • Don’t eat memory
  • Let me work efficiently in any shell or session

Let’s break down the tools I install automatically via my bootstrap scripts.

tmux – Terminal Multiplexing

tmux lets me split one terminal into multiple panes and windows. I use it to:

  • Run multiple shells or logs side-by-side
  • Persist sessions even after closing the terminal
  • Combine editor + server + shell in one view

Why I love it:

  • Clean, scriptable config
  • Always available in headless setups
  • Works beautifully with neovim, fzf, and my dotfiles

TPM – Tmux Plugin Manager

My tpm-setup.sh script installs TPM (Tmux Plugin Manager) which makes installing and updating tmux plugins painless. It lives in ~/.tmux/plugins.

`zoxide – Smarter cd`

zoxide is a fast, smarter alternative to cd. You just type:

z GitHub
z os-bootstraps
Enter fullscreen mode Exit fullscreen mode

…and it jumps to your most-used directories.

Why I use it:

  • Tracks recent paths automatically
  • Works across shells
  • Insanely efficient once you get used to it

lazygit – Git, But Better

lazygit is a TUI-based Git interface I use daily to:

  • Switch branches
  • Stage/commit
  • Resolve merge conflicts
  • Review logs and diffs

It’s keyboard-first, extremely fast, and integrates perfectly into a tmux workflow.

All of These Are Auto-Installed

Once I run:

./run.sh
Enter fullscreen mode Exit fullscreen mode

My terminal stack: tmux, zoxide, lazygit, neovim, and more is ready to go. No more downloading, aliasing, or reconfiguring things manually.

Next: Languages and Containers

In run.sh Diaries #4, I’ll walk you through how I set up:

  • Node.js with NVM
  • Python environments
  • Docker with user group access

And how it all ties into real-world frontend + backend dev work.

Top comments (0)