points by ninkendo 10 hours ago

Tmux only makes sense if you’re connecting remotely in some form or another. Otherwise, it’s just terminal windows/tabs with extra steps. Even if your terminal integrates with tmux like iterm2 does (where local tabs become tmux tabs, local windows become tmux windows, etc), it doesn’t really mean much if it’s all local anyway.

The usual arguments make no sense if you’re only on your local machine:

- You can detach the session: well yeah, I can minimize the terminal window too.

- You can have multiple tabs/windows in a session: yup, same with my window manager

- You can keep multiple sessions and attach/detach from them whenever: I can do that with multiple desktops in my window manager

And so on.

But, once you want to do all of this on a remote server, it all makes sense: putting my laptop to sleep shouldn’t end the session on the server. If I get disconnected for some reason, I should be able to reattach and resume it if I reconnect. So then you have the session run on the server and you only “attach” to it when you connect, and if your terminal has good integration, new tabs become new tmux tabs etc… it’s all transparent.

It’s also useful if you’re running a session locally but anticipate wanting to attach to it from somewhere else: if your terminal session is tmux from the start, you can transparently attach to it from another machine too.

But, if you’re just dealing with one machine, who cares, just skip the multiplexer. (It’s literally not “multi” plexing if there’s only one client!)

Another thing worth mentioning is that if your terminal doesnt have good tmux integration, and you’re only running locally anyway, your life is strictly worse off with tmux: scrolling is a horribly broken hack, buffer search sucks, copy/paste never works, switching open terminals is an awkward ctrl+b contortion, etc. No amount of fiddling with your tmux config is going to make the UX as good as a decent terminal has, and I will die on this hill. :-)