I Wish TMUX Looked Good

I kinda like tmux. A terminal multiplexer. Hell yeah. What it does, anyway. Less so how it looks or works. 😬

Toss a little tmuxinator on there and now the config is a tolerable incantation of yaml.

tmuxinator start codepenCode language: Bash (bash)

(Or, probably, some shell script that sets things up and then calls that command.)

Away we go! The chances of a large modern project getting away with just npm run dev is slim. Chances are, you need lots of terminal stuff going on. Your web server over here, a build process over there, another different build process there in the corner, some legacy system needs to spin up, yadda yadda.

You can’t tell your developers “Just run these 12 commands, in order, oh and make sure #5 is fully spun up before you run #6, all in separate terminal tabs, and that’s your dev environment”. So, smash all the commands under one roof with a little config programming, and bingo-bango we’ve got a system that scales out to a team.

But why does it have to be so ugly? 😭

screenshot of tmux default
The bottom bar with awkward padding. In the same font as the rest of the terminal. With awkward numbers by the tabs that you really don’t need to see every second. With split panels labeled also in the same font which makes it hard to see that it’s just a label, and are unclear that you can resize but you can. I generally dislike the UI/UX of terminal output, but within tmux it’s extra sloppy. And don’t get me started on the copy-and-paste situation.

It just does have to be ugly, I guess. It has to emulate multiple terminal windows/tabs with ASCII. It’s impressive that it can pull it off, really. And, crucially, it doesn’t matter what terminal software anybody uses. The UI is built into the output of a single terminal.

What’s a shame is that many terminals already support the concept of tabs and split views. It’s very natural in iTerm, a favorite of many:

screenshot of tabs and splits in iterm
Real tabs and splits! Like real software!

It’s probably way too tall of an order, but maybe terminals could detect a tmux situation and convert the UI into a native UI situation? Yeah? Good? Ship it.

Anyway I was just thinking about this because I was daydreaming in Figma the other day about what I wish our own little tmux setup looked like.

figma mockup of a terminal with splits that looks slightly less bad.

Update: Holy Buckets iTerm Does Have Native Support!

Here’s their docs.

By adding -CC to the tmux invocation, and changing a tmus setting to “Tabs in the attaching window”, I get all my tmux tabs as native tabs and splits as native splits.

Never did I think that was going to happen. Impressed!

🤘

CodePen

I work on CodePen! I'd highly suggest you have a PRO account on CodePen, as it buys you private Pens, media uploads, realtime collaboration, and more.

Get CodePen PRO

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to Top ⬆️