Make Tmux Pretty and Usable

(hamvocke.com)

128 points | by speckx 2 hours ago

41 comments

  • ndr 1 hour ago
    I gave up on it once I discovered https://zellij.dev/

    Just even for how tab and panes are setup, and how it's good for scrolling and text selection with your mouse for copy pasting.

    • hesdeadjim 1 hour ago
      100%. Tmux didn’t click for me but Zellij did within 5 minutes. Lifelong Vim user so it felt a lot more familiar.
    • dns_snek 1 hour ago
      Cool, I'm one of the lucky ten thousand today. Thanks.
    • KetoManx64 55 minutes ago
      Same here. I bounced off it a few times because KDE konsole already had built in tab/pane support but once I picked up neovim the key chords for triggering actions just made so much sense compared to the static key binds of Console that I just started using Zellij for tabs and panes within Console.
    • christiansafka 26 minutes ago
      If anyone is looking for a slightly higher level management of persistent sessions, we just launched https://haventerminal.com for Mac
    • llagerlof 1 hour ago
      I used tmux for a few years, until one day I discovered Zellij. With its significantly better UI and overall user experience, I was instantly convinced.
      • nDRDY 1 hour ago
        This comment would be a lot more convincing if it weren't in response to one expressing the same sentiment :-)
        • azthecx 1 hour ago
          It is actually true though, I only use tmux nowadays when I am SSHed into a server that I need to do some work on.

          The only issues I've had with it is that sometimes it's hot keys conflict with vim, but you can easily turn it temporarily off with ctrl+ g.

          If you're already used to tmux I'm not sure you would benefit much from changing, but it definitely has a better out of the box with pane hints, names, and more user friendly hot keys.

          • brewmarche 3 minutes ago
            Maybe give terminal windows in vim a try? vim is not a terminal multiplexer, but if all you need is multiple terminals windows:

            :term to open a terminal in a new vim window (or :vert term)

            Standard window movements apply (by default the window prefix is Ctrl-W), most important are: Ctrl-W,{hjkl} to switch between windows, Ctrl-W,{<>+-} to resize windows, Ctrl-W,{HJKL} to move windows to edges, Ctrl-W,{qc} to (force) close windows

            Enter normal mode of a terminal buffer with Ctrl-W,N: now you can perform vim motions and scroll the output

            Enter insert mode with i and you can type into the terminal again

            In insert mode: Ctrl-W "x to paste register x, Ctrl-W . to send a literal Ctrl-W. If too annoying, you can change the window prefix of vim

            This goes for vim, neovim also has a terminal mode but it works differently I think

      • fernandotakai 25 minutes ago
        i tried both and i honestly... i didn't see anything different.

        i want tmux for three things:

        1. easy splits

        2. easy scrollback

        3. being able to restart a session if my terminal dies

        given all that, tmux works exactly as expected.

        what are all these "significantly better ui and overall ux"?

      • dummydummy1234 1 hour ago
        Can you use zellij over ssh on a remote server?
        • TheTaytay 1 hour ago
          Yes you can!
          • ndr 58 minutes ago
            without running zellij on the remote machine? how?
            • kibwen 46 minutes ago
              I'm unclear what's being asked. Zellij is just a TUI-based terminal multiplexer like tmux and screen, you either run it locally and SSH within it to a remote machine, or SSH to a remote machine and run Zellij from within the remote connection.
    • garymiklos 35 minutes ago
      I prefer smux.dev
  • OhMeadhbh 1 minute ago
    I'm perfectly happy with tmux the way it is, but upvoting this one because it's a decent overview of what to modify to make tmux more better if you don't like its defaults.
  • alecsm 1 hour ago
    I had my tmux customized to the point I forgot how to use it on a clean install which is a problem when I'm sshing into a server.

    I wish it had better defaults but now I run it as is. After a while you get used to it. The only thing I always have to change is the mouse scroll and my brain cannot retain the exact command.

    • dpflan 1 hour ago
      Do you have a "dot files" repo? It would contain things like this, config files for tmux, zsh, <other tools>, etc.
      • throwa356262 50 minutes ago
        Is it not just easier to accept the default config?
      • esseph 53 minutes ago
        That may work for a server or two but doesn't really pan out for fleet management.
    • alt219 1 hour ago
      Why not just `scp ~/.tmux.conf remotehost:`?
      • al_borland 1 hour ago
        I can't speak for the parent, but I rarely login to the same remote server twice and don't want to need to set things up and clean them up anytime I do. This is why I try to keep my stuff as close to vanilla as possible. If anything goes wrong on a server and someone sees I have a whole bunch of dot files to customize my config, it becomes a red herring that I have to spend time explaining away.
        • cr125rider 38 minutes ago
          If only we had ways to automate repeating processes… oh well
      • monsieurbanana 1 hour ago
        Sometimes I ssh into a server as a specific user (e.g. as the "app" user that is used to run a web app), sometimes only root is available (probably not best practice, but it's not like I can or want to fix it myself).

        In any case it's not practical to carry your dotfiles everywhere you go. Changes are also a hassle to propagate

  • imankulov 1 hour ago
    I left tmux for zellij after several unsuccessful attempts to get Shift+Enter working.

    Was quite impressed initially and invested weeks in building new muscle memory, but somehow Zellij crashed with panic more than once, leaving all my processes orphaned. Decided to go back to tmux, and found a simple fix for my Shift+Enter issue.

    In case anyone is looking for it, the fix is "bind-key -T root S-Enter send-keys C-j" borrowed from https://github.com/anthropics/claude-code/issues/6072.

    • verall 49 minutes ago
      > In case anyone is looking for it, the fix is "bind-key -T root S-Enter send-keys C-j"

      I was looking, thank you!

    • strogonoff 59 minutes ago
      Is it possible for a multiplexer process to die, but in such a bad way that its child processes continue to run?

      I’ve been relying on the fact that in the worst-case scenario (if a pane hangs and tmux session becomes unresponsive) I can just kill tmux server and not have to hunt down and kill dozens of individual processes afterwards.

      • tolciho 35 minutes ago
        A `kill -9` will cause many a process to die and give no chance to cleanup any child processes. Some percentage of users continue to use `kill -9` by default, which may result in a mess of a process tree. Otherwise if the crash is bad enough that cleanup code cannot run (maybe it's being run on OpenBSD and an incompetent programmer didn't check the return value of a malloc and for some reason the kernel now nukes the process) then there may be orphan children. There may also be sporadic failures to cleanup if the crash, maybe, causes the whole process to exit before the cleanup code in some other thread can run. System load average may also influence how things maybe go sideways.
  • johnfn 45 minutes ago
    Guys, did you know about tmux control mode? It tells the host terminal to treat tmux tabs as actual tabs in the terminal. That means that things like scrollback, tab navigation, copy paste, keyboard shortcuts, etc are all handled natively, and you can visually see all your tmux tabs! It doesn't have great support across all terminals, but it does work great in iTerm 2.

    Try `tmux -CC` in iTerm.

    For a tmux novice like me, this was a total game changer :)

    • kelsey98765431 4 minutes ago
      this is the only reason i use a mac and in a decade no open source linux terminal has ever implemented this to my knowledge
    • mwpmaybe 20 minutes ago
      Holy carp.
  • bsdz 3 minutes ago
    At some point I switched to "oh my tmux" which seems to cover most of the customisations I needed https://github.com/gpakosz/.tmux
  • jzer0cool 29 minutes ago
    Could never get mouse copy to work well (using mac at moment). When I make text selection, selects yellow and upon release goes to terminal prompt. I had one config work at one point and it kept selecting from all panes, not just one the one I'm in. Any ideas?
  • seemaze 1 hour ago
    I've been thoroughly impressed with tmux control mode[0] in iTerm2. This lets you manage remote terminal windows with your local window management provider. It is currently in the process of being implemented in ghostty[1] as well, can't wait!

    [0] https://github.com/tmux/tmux/wiki/Control-Mode

    [1] https://github.com/ghostty-org/ghostty/issues/1935#issuecomm...

  • colton_padden 22 minutes ago
    I prefer to hide the status bar entirely, and use an fzf-powered named window switcher to navigate between windows.

    https://github.com/cmpadden/dotfiles/blob/6e767691a6b1295260...

  • yoyohello13 1 hour ago
    If you're interested in an out of the box multiplexer. https://zellij.dev/ is great. I've been using it for about a year now and loving it.
    • tosti 1 hour ago
      Your out of the box isn't my out of the box. Tmux is in main on OpenBSD, where it started.
  • himata4113 1 hour ago
    I highly recommend just turning the mouse on, it's amazing for resizing panels and the rightclick menu is nice.

      set -g mouse on
    
    for multi-monitor setups

      setw -g aggressive-resize on
    
    is also really nice.
    • throwa356262 46 minutes ago
      Honestly, this is the only configuration I need.

      Wish they could make this default, not sure why they haven't.

      • himata4113 39 minutes ago
        xterm, probably

        a lot of servers use tmux which probably has some weird broken edge cases

  • heatmiser 1 hour ago
    I read "tmux 2: mouse-free productivity" in a weekend years ago and it may be, pound-for-pound, one of the more impactful books on my productivity.

    Seems like they are keeping up-to-date too: https://bookshop.org/p/books/tmux-3-productive-mouse-free-de...

    • tosti 1 hour ago
      The book doesn't mention the author of tmux or its origins even once :(
      • racl101 49 minutes ago
        I believe that book would be called: "History of Tmux"
    • racl101 49 minutes ago
      Thanks for the reference.
  • strogonoff 1 hour ago
    There’s a lot of ways tmux could be used, but when it is part of IDE the most important usability tweaks that make tmux rock for me personally are:

    — session configuration save/recall (with pane layout for each tab and directory for each pane[0]),

    — nvim integration (for seamless split navigation and so that I can create or reattach to a tmux session in an nvim float, even though that nvim usually runs inside tmux),

    — a bind to force-reload a pane if (when!) a command hangs.

    For switching between tabs, I find that the most ideal bind is simply Cmd + pane number. There’s never more than 10 panes that I’d often want to switch to within a single session.

    [0] I always forget what terminology a given multiplexer uses, so let’s just call them “panes” and “tabs”.

  • tosti 1 hour ago
    I like having a red bar for tmux running as root and a blue one for running it as a normal user, e.g. for root:

        set -g status-style "bg=red"
    
    I also like to have the bar on top and the status centered:

        set -g status-justify absolute-centre
        set -g status-position top
    • stonecharioteer 1 hour ago
      I change the color of the bar in every server I've set it up so I know absolutely where I am.
      • tosti 1 hour ago
        Aren't you going to run out of colors to pick?
  • rbanffy 16 minutes ago
    I like to have an IBM 3270 style status bar on the bottom.

        set-option -gq status-style "fg=brightblue,overline"
  • hamasho 1 hour ago
    I use c-q for prefix key because it doesn’t conflict with common zsh and vim bindings.

    Because the author suggested swapping caps lock and control key, I also recommend mapping escape key at the control key and change the behavior based on whether another key is pressed. For example, if you press control + a, it sends c-a, but if you only press control key and then release, it sends escape. It makes your vim life (and in general) a lot easier. You don’t have to compete the most variable real estate on the keyboard, right next to the A key.

    For most bindings like moving, resizing, and splitting,I emulate vim bindings.

    Also, -r flag for bind-key command is impotent, because it enables to repeat commands like changing the pane size or move focus. You don’t have to press prefix key each time.

    If you want to get fancy look with minimal setting, use plugins like nord tmux theme.

  • halfwhey 1 hour ago
    My two favorite tmux QoL improvements are enabling seamless navigation between neovim and tmux (there are many plugins but i use this one https://github.com/aserowy/tmux.nvim) and extrakto which lets you fuzzy select anything in the tmux buffer and insert into the cursor or copy it to the clipboard. (https://github.com/laktak/extrakto)
  • pavel_lishin 52 minutes ago
    Hard agree on intuitive splits, I do this as well.

    My hotkey is the backtick, `, rather than a chord.

    The one thing I still struggle with - because it happens rarely - is easily copying the contents, full or partial, of a particular pane.

  • christiansafka 32 minutes ago
    I would also describe haventerminal.com as making tmux pretty and usable! but without any setup steps, first class support for agents, and management of multiple machines. Disclaimer: It's a macOS app we just launched and it ships its own open source session persistence.
  • Morantron 45 minutes ago
    One way to make tmux way more usable is to use tmux-fingers, which provides hint-based mouse-free copypaste capabilities

    https://github.com/morantron/tmux-fingers

    (disclaimer: I'm the developer of the plugin)

  • 1vuio0pswjnm7 55 minutes ago
    I prefer to use tmux non-interactively. For example, I use it for running daemons in the foreground, (textmode) screen scraping and scripting text-only browser

    I do almost all interactive work while detached from tmux (personal preference)

    I also rely on tmux buffers for a textmode "clipboard". I do not use x11

    I've been using tmux since 2011 well before it became popular. I only use a fraction of its features

    • pavel_lishin 53 minutes ago
      > I do almost all interactive work while detached from tmux

      How come?

  • post-it 1 hour ago
    I appreciate that tmux has theoretical advantages over screen, but man does the implementation suck. On Mac it still seems like there's no way to copy text if you have mouse mode on (at least in code-server).
    • ramses0 3 minutes ago
      Often, holding down "Shift" while making mouse selections will "break through" and let you get at the O.S. copy/paste/selection mechanism. Highly terminal dependent, though!
    • adamors 1 hour ago
      Select copies, what do you mean?
      • post-it 39 minutes ago
        Not for me. Some kind of OSC 52 problem.
    • ihowlatthemoon 1 hour ago
    • szopa 1 hour ago
      Yeah, that really sucks. I couldn’t quite believe what was the case and spent many hours trying to debug it.
  • 0xDEFACED 47 minutes ago
    my favorite thing to do with tmux is using a sessionizer script[0] (credit for the idea/original implementation goes to ThePrimeagen). allows for fzf-ing my projects and creating a separate session for each one. especially handy for bouncing around when working on features/fixes that span multiple repos

    for (neo)vim users, flattening vim splits and tmux panes into the same level for switching with ctrl+hjkl is handy too

    [0](https://github.com/tolly-xyz/dotfiles/blob/main/.local%2Fbin...)

  • _345 33 minutes ago
    I actually asked chatgpt to recommend me a great starter tmux conf, and it gave me 80% of this blog post. Not an insult btw.
  • hugodan 1 hour ago
    I would love to have a way to switch sessions easily, like with panes where I just click or have more shortcuts available
    • gsinclair 14 minutes ago
      People have developed plugins for this. Check out “sesh” for instance.

      Switching between sessions with fuzzy finding, and creating new ones when needed, is a wonderful feature.

    • lozf 1 hour ago
      Prefix-w works, or did you want something more?
  • kristopolous 1 hour ago
    Worth mentioning my tmux llm chat helper sidechat: https://github.com/day50-dev/sidechat

    I've been told more than once it's life-changing. I certainly use it every day.

  • jimbokun 1 hour ago
    Any guides for tmux configuration that works well with Emacs? The use of Ctrl and Meta for basic operations conflicts with a lot of Emacs commands.
    • stebalien 1 hour ago
      My experience is that Emacs wants to be your everything, and works best if you let it. Have you tried putting your terminals inside of Emacs instead of the other way around?

      * If you need a "real" terminal emulator, you can use something like vterm (https://github.com/akermu/emacs-libvterm/).

      * If you need to be able to attach/detach Emacs sessions on remote machines, you can use something like dtach or abducto (https://www.brain-dump.org/projects/abduco/).

    • alexhans 1 hour ago
      Tmux conflicted with my vim bindings and i tweaked the tmux.conf to fit my needs. It's worth playing around on pure tmux and figuring out what would work for you.
  • traderj0e 1 hour ago
    I've always written my code in vim and preferred CLIs in general, but I really want a GUI for the terminal itself, including tmux. iTerm2 makes it nice for example, even if it's only to use the meta/super key instead of the heavily overloaded control.
  • monological 51 minutes ago
    The only reason I don't use tmux is because of how annoying it is to look at scrollback. Am I using it wrong?
    • lancebeet 37 minutes ago
      I would "just" do C-B PgUp and then use vi-like movement keys like hj, gg/G etc., and q to escape the pager, but I realize now that I say it that it doesn't sound very convenient or discoverable.
    • client4 35 minutes ago
      C-b [ allows you to scroll up/down
  • knubie 1 hour ago
    I stopped using tmux when I started using kitty terminal with native split windows. I prefer the native window management of kitty, but I do miss the session saving of tmux (e.g. if I accidentally close a tab).
    • kjs3 1 hour ago
      but I do miss the session saving of tmux

      Interesting...I kinda thought that was 90% of the use case for using tmux.

    • leephillips 16 minutes ago
      Recent versions of Kitty have sessions. https://sw.kovidgoyal.net/kitty/sessions/
    • orbital-decay 1 hour ago
      There are many separate session persistence daemons: dtach, zmx, hauntty, shpool, diss, abduco - take your pick
      • 0xbadcafebee 1 hour ago
        screen's another nice one. been using it for 25 years, so far so good
        • vessenes 53 minutes ago
          I used screen until like 2010 or so -- but you triggered me to look back at it again today. One nicety there now is that you can easily get a dump of what's showing in the pty with screen -S <session_name> -X hardcopy. This is actually somewhat hard to do in tmux, but it's a thing you want your AI agents to do all the time. I'm curious if claude / codex are comfortable with screen, I'll check it out.
  • tombert 49 minutes ago
    I almost never bother theming things on my computer; I usually don't really care about how things look and I can't be bothered with it.

    I have two exceptions to this: NeoVim and tmux.

    tmux in particular looks very ugly out of the box; I'm not sure why they decided to have a bright green bar on the bottom (presumably to be high-contrast in a low color terminal), but I really hate staring at it all day (since I kind of live in tmux most of the day on both my work and personal computer). I have it set as close as I can to the Wombat color scheme that's built into emacs (and which can be easily added to Vim), because I personally have always felt that that was the most pleasant theme to stare at for long periods of time.

    Another thing I do is set the prefix key to backtick. I have no idea why I started doing this, but at this point I'm too geriatric to change, and I still greatly prefer this over ctrl-b. The only issue I've had is when I need to do code blocks in markdown, but I've just gotten used to hitting backtick twice when I need to actually use a backtick.

  • hybirdss 50 minutes ago
    feels wrong to scp a dotfile to a server you only touch once
  • hleszek 29 minutes ago
    I love tmux but one thing which really annoys me is the fact that I cannot use the mouse wheel or the scroll back to see the previous content. I know there are shortcuts to go forward and back but I always forget them and they are not easily accessible on my keyboard and cumbersome.
  • garymiklos 35 minutes ago
    Just use smux.dev
  • Lihh27 1 hour ago
    the most tmux thing in the world is that "make tmux usable" is still a genre.
  • faangguyindia 1 hour ago
    i used to use tmux a lot when i used to develop on arch, since i moved to macos i never installed it.

    tbh i even forgot what it used to buy me.

  • capitainenemo 1 hour ago
    I've had the ctrl-a setup ever since migrating from screen to tmux, just due to muscle memory. But it is more conveniently located than ctrl-b - it's also rather nice if I have multiple nested layers of tmux due to temporary ones on other hosts. Sure you can just keep repeating the bind, but, just remembering that the second layer uses ctrl-b is a bit more convenient I feel. Slows me down a little, but usually I'm not using the 2nd layer as much.

    I don't use capslock for ctrl though. It's much too useful as the Compose key ;)

  • imiric 47 minutes ago
    I've used ` as prefix for years now. Considering how often you switch windows/panes, I reckon using a single character has saved me hours per year. :D

    It rarely conflicts with whatever I'm doing, but I have a binding to temporarily switch it to `C-a` and back, which I almost never use.

    Oh, and I've used this themepack[1] for years as well.

    Actually, here's my config[2] if someone finds it useful. I can't claim ownership of it, and probably stole it from somewhere I don't remember anymore.

    BTW, the author's site https://rootloops.sh/ is certainly... something. :)

    [1]: https://github.com/jimeh/tmux-themepack

    [2]: https://gist.github.com/imiric/9bd3e5b7fc5e1468d05abc674f42e...

  • troupo 1 hour ago
    I ended up AI-slopcoding myself a small shell script for the few things I need from tmix: https://gist.github.com/dmitriid/523a5229c9a17a1cf4ad9182f4c...

    I just couldn't be bothered to remember all the prefixed commands :)

  • Ravitej_Neeli 1 hour ago
    nice update on tmux
  • 0dayman 2 hours ago
    that's pretty nice, but did you try cmux.com
    • wffurr 1 hour ago
      That's a totally different thing. Native macOS app vs portable terminal multiplexer. My main use case for tmux is detaching and re-attaching to a session on a remote server, for which it's extremely useful.
      • jarredkenny 1 hour ago
        I've been building a tmux wrapper that is similar you might be interested in. https://jmux.build
      • faangguyindia 1 hour ago
        what does it add over screen which i don't even need to install?
        • esseph 45 minutes ago
          If screen crashes you lose the sessions, Tmux maintains state.

          Screen does not have UTF8 support, tmux does.

          Otherwise just a bunch of more sane original defaults in tmux to make things much familiar.

          In 2026 if given a choice between screen and tmux to use/learn, most are going to go with tmux.

      • stonecharioteer 1 hour ago
        That's what I tell people who keep telling me to try cmux. It's false advertising to say it's like tmux. No, Zellij, sure. But not this. I will hold onto tmux forever and you'll have to pry it from my cold dead hands.
    • phito 1 hour ago
      OP doesn't seem to be on Mac
      • TheRealPomax 1 hour ago
        Even if they are, cmux isn't an alternative to tmux, as it can't attach to/detach from sessions, which is usually the whole reason to use tmux.