Just Fucking Use Tmux

Let me guess. You've got 47 terminal windows open. You SSH'd into a server three hours ago to run a migration. Your WiFi burped for half a second and now that connection is fucking gone. The migration? Who knows. Probably half-finished. Your database is now in some cursed intermediate state because you couldn't be bothered to learn a tool that's been around since 2007.

This is your fault.

Every single time you lose work because "my SSH dropped" or "my laptop died" or "I accidentally closed the wrong tab," that's on you. You had the solution sitting right there. Free. Preinstalled on half the servers you touch. But no, you were too busy opening yet another terminal window like some kind of feral raccoon organizing garbage.

What the fuck is tmux

Tmux is a terminal multiplexer. It runs on the machine, not in your precious little terminal emulator. Your terminal is just a window looking at tmux. Close the window? Tmux doesn't give a shit. It keeps running. Your processes keep running. Your entire layout, your scrollback, your carefully arranged panes — all still there, waiting for you to pull your head out of your ass and reconnect.

SSH dies? tmux attach. Laptop battery dies? tmux attach. You accidentally type exit like an idiot? tmux attach. It's always there. It's always waiting. It's the only thing in your workflow that actually has your back.

But I use Screen!

Screen was released in 1987. Ronald Reagan was president. The Berlin Wall was still up. People thought New Coke was a good idea. And you're using software from that era to manage your terminal sessions in 2025?

Screen's default keybinding is Ctrl+a. You know what else uses Ctrl+a? Every fucking readline application ever made. Bash. Zsh. Python REPL. Node REPL. Beginning of line? Nope, Screen just ate that. Have fun with that conflict for the rest of your life.

The last person who answered a Screen question on the internet did it in 2009 on a mailing list that no longer exists. The archives are probably on a floppy disk in someone's garage. Good luck with that.

But I just open more terminal windows!

Oh, you sweet summer child.

You've got six terminal windows. Which one has your dev server? Which one has the logs? Which one is SSH'd into production? You don't know. You're clicking through them one by one like you're playing fucking Minesweeper with your own workflow.

And when you close your laptop? They're all dead. Every single one. That dev server you had running? Gone. Those log tails? Gone. That SSH session where you were in the middle of debugging something? Absolutely annihilated. You come back tomorrow and get to set everything up again from scratch, like some kind of productivity Sisyphus, forever pushing terminal windows up a hill only to watch them tumble back down.

But iTerm2 has splits!

Cool. Does it work on the Linux server you SSH into? No? Then what's the fucking point?

Your fancy Mac-only terminal emulator with its pretty splits and its tabs and its profiles doesn't help you when you're three machines deep into a production incident at 2 AM. You know what works there? Tmux. Because tmux doesn't care what terminal you're using. It doesn't care what OS you're on. It doesn't care if you're connecting from your MacBook, a Chromebook, or a fucking potato with an SSH client.

iTerm2's own documentation tells you to use tmux. They literally built a "tmux integration mode" because they know their native splits are toys compared to the real thing.

But VS Code has a terminal!

VS Code's terminal is a terminal the same way a hotel room microwave is a kitchen. Sure, technically you can heat things up. But you're not cooking Thanksgiving dinner in there.

Switch VS Code projects and your terminals evaporate. Your SSH connection drops and everything dies. The terminal exists to run npm install and maybe git status. It is not a workflow. It is not a tool. It is a checkbox on a feature list so Microsoft can say "yes, we have a terminal."

But WezTerm has multiplexing!

Ah yes, WezTerm. The terminal emulator that promised to make tmux obsolete. Let's talk about that.

WezTerm's multiplexing requires WezTerm to be installed on both the client AND the server. And not just installed — the same version. Server running 0.20? Client running 0.21? Error. "Please install the same version of wezterm on both the client and server!" Imagine seeing that shit at 2 AM during an outage. Meanwhile tmux just needs to be on the server. That's it. And it's already there because every sane sysadmin installed it years ago.

Oh, and WezTerm's multiplexing can't actually detach and reattach sessions. The maintainer admitted it: "We still don't have a formal dynamic detach/attach UX." Users keep asking "How do we save a session for later use after reboot?" The answer is: you don't. There's a "resurrect" plugin that kinda sorta works as a band-aid, but it "does not play well" with actual multiplexing. Incredible.

The funniest part? WezTerm power users eventually just... run tmux inside WezTerm. They went through the whole five stages of grief — denial, configuring Lua files, more denial, installing plugins — and ended up right back where they started. Terminal emulators come and go. Tmux stays.

But Ghostty is the future!

Mitchell Hashimoto made Ghostty. Mitchell Hashimoto also said he wants tmux to "disappear." Bold words from a guy who immediately followed that up by admitting tmux "still solves a lot of problems" that Ghostty can't solve.

You know what Ghostty can't do? Session persistence over SSH. The thing that makes tmux actually useful. Close Ghostty, your splits are gone. SSH connection drops, your work is gone. Someone asked about detach/reattach on their GitHub and got told it's "on the roadmap." It's been on the roadmap. Meanwhile tmux has had this feature for eighteen fucking years.

There's a blog post called "You Might Not Need Tmux" that Ghostty fans love to share. The author's solution to replacing tmux? Use three separate tools instead. Shpool for persistence (which has "active bugs" with terminal state restoration). A window manager for splits. SSH config hacks with RemoteCommand. Three buggy tools duct-taped together to poorly replicate what one tool does out of the box. That's not progress. That's a coping mechanism.

The best part? Ghostty users complain that running tmux inside Ghostty "feels sluggish." So Ghostty is fast... unless you use the tool you actually need for remote work... which makes it slow. You've replaced a solved problem with a new problem. Congratulations.

Look, Ghostty is genuinely fast and nice for local work. But "I don't need tmux" really just means "I don't SSH into servers" or "I haven't been burned yet." Give it time.

The commands

Fine. Here. This is all you need:

# Start tmux
tmux

# Detach (it keeps running, you can leave)
Ctrl+b d

# Come back later, reattach
tmux attach

# Split your screen because you're not an animal
Ctrl+b %    # vertical
Ctrl+b "    # horizontal

# Move between panes
Ctrl+b arrow-keys

That's it. That's the whole thing. Five commands. You could learn this in the time it takes to complain about losing your SSH session. But instead you'll keep doing what you're doing, losing work, and wondering why your life is hard.


Stop being a victim of your own laziness. Stop blaming your WiFi. Stop blaming your laptop battery. Stop blaming SSH. The tool exists. It's free. It works. It's been battle-tested by millions of developers who got tired of losing their shit.

Just fucking use tmux.

sudo apt install tmux && tmux

Or brew install tmux. Or pacman -S tmux. Or whatever. It's everywhere. You have no excuse.