[HN Gopher] Make tmux pretty and usable (2024)
___________________________________________________________________
Make tmux pretty and usable (2024)
Author : speckx
Score : 283 points
Date : 2026-04-13 14:48 UTC (8 hours ago)
(HTM) web link (hamvocke.com)
(TXT) w3m dump (hamvocke.com)
| 0dayman wrote:
| that's pretty nice, but did you try cmux.com
| phito wrote:
| OP doesn't seem to be on Mac
| TheRealPomax wrote:
| 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.
| traderj0e wrote:
| iTerm2 gives you that then. I use it every day at work. Idk
| why there's no equivalent for Linux.
| wffurr wrote:
| 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 wrote:
| I've been building a tmux wrapper that is similar you might
| be interested in. https://jmux.build
| stonecharioteer wrote:
| 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.
| faangguyindia wrote:
| what does it add over screen which i don't even need to
| install?
| esseph wrote:
| 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.
| teddyh wrote:
| > _Screen does not have UTF8 support, tmux does._
|
| "'-U'
|
| Run screen in UTF-8 mode. This option tells screen that
| your terminal sends and understands UTF-8 encoded
| characters. It also sets the default encoding for new
| windows to 'utf8'."
|
| -- <https://www.gnu.org/software/screen/manual/screen.htm
| l#Invok...>
|
| "Command: defutf8 state
|
| (none) Same as the 'utf8' command except that the default
| setting for new windows is changed. Initial setting is on
| if screen was started with '-U', otherwise off."
|
| -- <https://www.gnu.org/software/screen/manual/screen.htm
| l#Chara...>
| esseph wrote:
| Which does not work correctly for Korean, Japanese,
| Chinese, I think Thai, and a few more with somewhat
| ambiguous character widths.
|
| This can lead to ghost characters that aren't shown,
| overlapping characters, etc.
|
| It was an attempt to bolt on UTF8 support, but it's not
| great.
| wffurr wrote:
| cmux? I don't know and it's not even a good comparison.
|
| tmux? https://www.google.com/search?q=tmux+vs+screen
| 0dayman wrote:
| hm, seems i misunderstood something
| ndr wrote:
| 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.
| llagerlof wrote:
| 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 wrote:
| This comment would be a lot more convincing if it weren't in
| response to one expressing the same sentiment :-)
| azthecx wrote:
| 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 wrote:
| 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
| dummydummy1234 wrote:
| Can you use zellij over ssh on a remote server?
| TheTaytay wrote:
| Yes you can!
| ndr wrote:
| without running zellij on the remote machine? how?
| kibwen wrote:
| 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.
| Kim_Bruning wrote:
| I guess they mean 'have zellij hold your session when you
| log off/close controlling terminal'. (that would require
| zellij on remote)
| fernandotakai wrote:
| 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"?
| Groxx wrote:
| There's a number of people who effectively use tmux as
| their window manager - one terminal window doing literally
| everything. Locally as well as remotely, but it's more...
| understandable for remote, where other options are often
| worse or nonexistent.
|
| For them, there's as much variety of desires as for any
| other window manager, and there are tons of those. But
| terminal ones are usually significantly easier to configure
| in wild ways due to having fewer (but more powerful) knobs
| to tweak, so a fair number choose just one and configure
| the heck out of it.
| dcminter wrote:
| My terminal (terminator) does (2) and the "easy" scrollback
| on tmux messes up the ability to scroll with the mouse, at
| least with default settings. I just tried it in zellij and
| that doesn't. Since I'm only using a multiplexor for (3)
| and zellij does that too, I'm already inclined to switch.
|
| I know I'd get used to them, but the key combos used by
| tmux seem very odd choices, even to someone who used to
| code on a _real_ glass tty!
| hesdeadjim wrote:
| 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 wrote:
| Cool, I'm one of the lucky ten thousand today. Thanks.
| soraki_soladead wrote:
| Context: https://xkcd.com/1053/
|
| Then, if you're like me and read this years ago, play around
| with the Light Mode dropdown which was new to me. :)
| grgergo wrote:
| > play around with the Light Mode dropdown which was new to
| me. :)
|
| It's this year's April Fools' joke: https://xkcd.com/3227/
| :P
| KetoManx64 wrote:
| 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.
| garymiklos wrote:
| I prefer smux.dev
| christiansafka wrote:
| If anyone is looking for a slightly higher level management of
| persistent sessions, we just launched https://haventerminal.com
| for Mac
| senderista wrote:
| I have been using zmx for the last 2 weeks. It's still a bit
| buggy (screen repainting) but quite pleasant to use with
| ghostty.
|
| https://github.com/neurosnap/zmx
| modeless wrote:
| Thanks for the report, I heard about it recently and was
| wondering how buggy it was since it's very new. I'll probably
| still try it soon.
| fullstop wrote:
| I have a few embedded devices where flash space is limited.
| tmux is so much smaller than zellij, and it's not even close.
|
| Zellij is close to 50 megabytes, but tmux and all dependent
| libraries (minus libc, it's always there) is about 2 megabytes.
| snthpy wrote:
| This sentiment seems to be shared widely. Is there a good
| conversion guide for tmux users?
|
| I tried zellij a couple of years ago when it first got popular
| and it didn't click for me.
| baby wrote:
| Tried it when it came out on mac and it was super glitchy so
| I gave up. Also usally tmux is useful when I ssh
| ndr wrote:
| https://zellij.dev/screencasts/
|
| has some starting links, if screencasts do it for you
|
| For me the only glitch was some key binding collision with
| ghostty/aerospace but it works perfectly out of the box on
| alacritty for me
| kator wrote:
| I tried tmux so many times, could not commit the sequences to
| memory, but then zellij was just out of the gate, easy to
| "discover," and then I started writing plugins (rust wasm), and
| I even submitted a PR which got accepted to support background
| colors in panes/tabs.
|
| I am a monthly donor, I think it has the right balance of
| community plus the lead dev has a vision, opinionated but open
| to inputs, and focused.
| snapplebobapple wrote:
| I did the same, however, I recently switched back because
| zellij has just gotten too annoyingly bloated. I ended up on
| tmuxp to build my tmux session and autossh to keep me connected
| to my various ssh sessions and am much happier.
| ori_b wrote:
| Once I discovered window managers and graphics, I stopped using
| half-baked features to emulate them in the terminal.
|
| I use tmux to reattach to programs after the network connection
| dies, and not really anything else. I would welcome a version
| of it that stripped out everything but that, and just replayed
| the last few pages of scrollback on reattach.
| setopt wrote:
| > I would welcome a version of it that stripped out
| everything but that, and just replayed the last few pages of
| scrollback on reattach.
|
| Like `dtach`?
| ori_b wrote:
| Thanks. Dtach is definitely closer to what I want than
| tmux, I'll be trying it out this week.
| ssivark wrote:
| Check out shpool, whose tagline is _" Think tmux, then aim...
| lower"_ :-)
|
| https://github.com/shell-pool/shpool
| ndr wrote:
| window manager like what though?
|
| Mac WM is horrible, I use aerospace to make it tolerable
| kelvinjps10 wrote:
| i3, dwm, hyprland etc...
| ghshephard wrote:
| The only (deal breaker for me ) weakness of zellij - doesn't
| support copy/paste from the keyboard (from the
| screen/scrollback) and doesn't support multiple copy/paste
| buffers.
|
| I do that roughly every 60-90 seconds with tmux - so, until the
| zellij developers relent (they suggest the "proper way" of copy
| paste is to pipe the data into a text editor and use that - but
| has the downside of not supporting _system_ copy-paste
| buffers.) - no options other than to stick with tmux (or fork
| zellij - but that seems a bit much....)
| evanjrowley wrote:
| Zellij has some controls for how copy/paste is handled.
| Perhops these could help you in the future? Link:
| https://zellij.dev/documentation/options.html#copy_command
| clintonc wrote:
| <button type="button" class="download-hover"
| onclick="location.href='https://github.com/zellij-
| org/zellij/releases/latest/downloa...'"> linux download
| </button>
|
| Screaming into the void, I guess, but PSA. Don't use buttons
| for links. In my case, I couldn't right-click and copy the URL,
| but there are a lot of other reasons not to do this.
| semiinfinitely wrote:
| I tried zellij and it feels like its ui was designed by someone
| raised in the world of blade runner 2049
| halfwhey wrote:
| 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)
| heatmiser wrote:
| 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 wrote:
| The book doesn't mention the author of tmux or its origins even
| once :(
| racl101 wrote:
| I believe that book would be called: "History of Tmux"
| racl101 wrote:
| Thanks for the reference.
| tosti wrote:
| 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 wrote:
| I change the color of the bar in every server I've set it up so
| I know absolutely where I am.
| tosti wrote:
| Aren't you going to run out of colors to pick?
| Lindby wrote:
| My approach is to color ssh sessions to prod servers red,
| less dangerous servers orange, my own non shared computers
| blue.
| backwardsponcho wrote:
| Do you use this when running tmux remotely?
|
| (I only run it in my own machines so it never runs as root
| anyway)
| knubie wrote:
| 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).
| orbital-decay wrote:
| There are many separate session persistence daemons: dtach,
| zmx, hauntty, shpool, diss, abduco - take your pick
| 0xbadcafebee wrote:
| screen's another nice one. been using it for 25 years, so far
| so good
| vessenes wrote:
| 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.
| kjs3 wrote:
| _but I do miss the session saving of tmux_
|
| Interesting...I kinda thought that was 90% of the use case for
| using tmux.
| leephillips wrote:
| Recent versions of Kitty have sessions.
| https://sw.kovidgoyal.net/kitty/sessions/
| jpeeler wrote:
| I was going to say, but zellij doesn't connect the session to
| the GUI. However, I did not know about kitty's --use-
| foreground-process, which doesn't solve the problem
| completely but may be good enough.
|
| https://sw.kovidgoyal.net/kitty/sessions/#more-complex-
| sessi...
| seemaze wrote:
| 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...
| jimbokun wrote:
| 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 wrote:
| 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 wrote:
| 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.
| alecsm wrote:
| 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.
| alt219 wrote:
| Why not just `scp ~/.tmux.conf remotehost:`?
| monsieurbanana wrote:
| 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
| al_borland wrote:
| 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 wrote:
| If only we had ways to automate repeating processes... oh
| well
| traderj0e wrote:
| No, wanting to keep things vanilla when you're dealing
| with lots of random servers is a valid concern. Just
| because you can solve this with shell scripting doesn't
| mean you should.
| skydhash wrote:
| You could always copy the config to /tmp and use the -f
| flag.
| alecsm wrote:
| Because I'm not the owner of the remote host.
| dpflan wrote:
| Do you have a "dot files" repo? It would contain things like
| this, config files for tmux, zsh, <other tools>, etc.
| esseph wrote:
| That may work for a server or two but doesn't really pan out
| for fleet management.
| lanstin wrote:
| Volunteer to be the official image maintainer - I had
| emacs-nox and (screen) installed fleet wide for my own
| utility :)
|
| I had a friend that even had his public keys added to the
| /root/.ssh/ but I didin't go that far -I didn't even put my
| own .emacs out - but I at least could use good tools to
| look at the tcpdump output or giant log files if needed.
| "Eight Megs and Constantly Swapping" is not that big of a
| deal anymore.
|
| And if people want to just use some default open source
| image, just point out that in modern cloud environments,
| you don't want each node to customize itself, you want to
| pre-run that process one time per node type in your
| "directed graph of image delta pipelines" which takes the
| input image and publishes the cloud ready app-specific
| images (with your DNS configs, LDAP integration, whatever,
| plus emacs/neovim and screen/tmux :)
| mystifyingpoi wrote:
| This will definitely work, but it's not really even
| necessary. Just have some pre-connect script, that checks
| if the host is already "configured", and if not, then
| one-shot some Ansible playbook (or bash even) that
| installs what's needed. Use /tmp if root is not
| available. Also works for Kubernetes, though there we
| have better options.
| throwa356262 wrote:
| Is it not just easier to accept the default config?
| znpy wrote:
| > 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 had the same issue with gnu emacs... but at some point i lost
| my very custom configuration when the disk broke... i resorted
| to use a mostly-vanilla emacs :)
| carodgers wrote:
| I've hit this problem multiple times. The approach which
| finally eased this pain point for me was to take care to not
| overwrite any tmux defaults with my config, and only add non-
| conflicting configs (new shortcuts, styling changes, etc.) That
| way, if I need to use tmux on a new or unfamiliar machine, the
| core functionality is still present, and I just miss the candy
| that comes with customization.
|
| For example, leave the existing prefix binding (ctrl-b), but
| also add something nicer for day-to-day use (ctrl-space or
| similar).
| NobleLie wrote:
| "Claude, scp my tmux config over to that box"
| bch wrote:
| I think of this as the curse of Emacs. Infinitely configurable,
| thereafter entirely unique in the universe, which can be a
| double edged sword. See too (maybe it's the same thing) The
| Lisp Curse.[0]
|
| [0] https://news.ycombinator.com/item?id=2450973
| yoyohello13 wrote:
| 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 wrote:
| Your out of the box isn't my out of the box. Tmux is in main on
| OpenBSD, where it started.
| Ravitej_Neeli wrote:
| nice update on tmux
| faangguyindia wrote:
| 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.
| post-it wrote:
| 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).
| adamors wrote:
| Select copies, what do you mean?
| post-it wrote:
| Not for me. Some kind of OSC 52 problem.
| ihowlatthemoon wrote:
| Maybe you could try this - https://github.com/tmux-
| plugins/tmux-yank
| post-it wrote:
| I haven't tried it, but it looks like it just calls pbcopy,
| which won't work in a browser. There's no programmatic way to
| do it, because tmux can't access the clipboard.
| szopa wrote:
| Yeah, that really sucks. I couldn't quite believe what was the
| case and spent many hours trying to debug it.
| ramses0 wrote:
| 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!
| post-it wrote:
| Not in browsers, unfortunately. Both my work and Home
| Assistant OS use tmux in a browser tty, and I have to turn
| off mouse mode to copy.
| chasd00 wrote:
| I was wondering about tmux vs screen (+splitvt) but didn't want
| to ask. What are the advantages?
| strogonoff wrote:
| There's many 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 ideal bind is simply
| Cmd + pane number. There's never more than ten tabs that I'd
| often want to switch to within a single session. The highest
| number is probably four tabs. Each tab is typically assigned a
| high-level part of the project.
|
| [0] I always forget what terminology a given multiplexer uses, so
| let's just call them "panes" and "tabs".
| traderj0e wrote:
| 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.
| hugodan wrote:
| I would love to have a way to switch sessions easily, like with
| panes where I just click or have more shortcuts available
| lozf wrote:
| Prefix-w works, or did you want something more?
| gsinclair wrote:
| 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.
| saint_yossarian wrote:
| Check out the `choose-tree` and `display-menu` commands.
| fenazego wrote:
| I use byobu for managing tmux windows and sessions
| https://www.byobu.org/
| capitainenemo wrote:
| 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 ;)
| troupo wrote:
| I ended up AI-slopcoding myself a small shell script for the few
| things I need from tmux:
| https://gist.github.com/dmitriid/523a5229c9a17a1cf4ad9182f4c...
|
| I just couldn't be bothered to remember all the prefixed commands
| :)
| himata4113 wrote:
| 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 wrote:
| Honestly, this is the only configuration I _need_.
|
| Wish they could make this default, not sure why they haven't.
| himata4113 wrote:
| xterm, probably
|
| a lot of servers use tmux which probably has some weird
| broken edge cases
| Lihh27 wrote:
| the most tmux thing in the world is that "make tmux usable" is
| still a genre.
| imankulov wrote:
| 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.
| strogonoff wrote:
| 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 wrote:
| 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.
| strogonoff wrote:
| TIL. I didn't know it's the responsibility of the parent,
| thought OS automatically handles child processes.
| flakes wrote:
| When a child process finishes (that is not actively being
| waited on) it is left in a "defunct" or "zombie" state
| and will stick around in the process table until the
| parent process waits on them to fetch exit code. When you
| kill a parent process with active children, these
| subprocesses will become orphaned and re-parented to the
| OS pid 1 (or another "sub-reaper" process depending on
| your setup).
|
| The OS will typically not kill orphaned/re-parented
| processes for you. It will simply wait/reap them so they
| are not left as zombies once they complete. If your
| parent process spawns something like a daemon server that
| needs an explicit signal to be stopped (e.g.
| SIGINT/SIGTERM), these processes will continue to run in
| the background until they are manually killed or they
| crash.
| a_t48 wrote:
| That depends on how the children were spawned, no?
| prctl(PR_SET_PDEATHSIG, SIGTERM); or similar will fix this.
| verall wrote:
| > 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!
| patabyte wrote:
| Interesting, for me `shift+enter` hasnt worked, but
| `option+enter` does give me new lines in Claude Code's
| promptbox inside tmux on MacOS.
| lmao_ball wrote:
| Interesting. I've just been using '\ + enter'
| AlexCoventry wrote:
| I just use Ctrl-g to open the prompt in emacs.
| ErroneousBosh wrote:
| What does shift-enter do for you?
| skydhash wrote:
| Maybe some keybind in a software. Another mentions Claude
| code, so it may be used to enter new line where enter is
| bound to send the prompt.
|
| Terminal programs don't see key events. It's all text. I just
| checked st (suckless) code and the RETURN key will send "\r"
| aka carriage return. Control+j is "\n" or line feed.
| giwook wrote:
| Or if you want to avoid having to set new bindings, do '\ +
| enter' (which escapes the enter).
| hamasho wrote:
| 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.
| kristopolous wrote:
| Worth mentioning my tmux llm chat helper sidechat:
| https://github.com/day50-dev/sidechat
|
| I use it every day.
| 1vuio0pswjnm7 wrote:
| 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 wrote:
| > _I do almost all interactive work while detached from tmux_
|
| How come?
| pavel_lishin wrote:
| 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.
| monological wrote:
| 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 wrote:
| 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 wrote:
| C-b [ allows you to scroll up/down
| hybirdss wrote:
| feels wrong to scp a dotfile to a server you only touch once
| tombert wrote:
| 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.
| 0xDEFACED wrote:
| 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...)
| imiric wrote:
| 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...
| Morantron wrote:
| 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)
| johnfn wrote:
| 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 :)
| mwpmaybe wrote:
| Holy carp.
| kelsey98765431 wrote:
| 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
| hnlmorg wrote:
| I have in https://github.com/lmorg/ttyphoon
|
| I actually don't like control mode much though. It's a
| terrible protocol. Absolutely abysmal design which leads to a
| plethora of edge case bugs.
|
| At some point I'll replace tmux control mode entirely but for
| the moment it solves the immediate problem.
| MisterTea wrote:
| The control mode feature was implemented by the developer of
| iTerm2 for iTerm2: https://github.com/tmux/tmux/wiki/Control-
| Mode
| tanvach wrote:
| Was about the mention this, -CC has been working perfectly for
| me
| garymiklos wrote:
| Just use smux.dev
| _345 wrote:
| 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.
| christiansafka wrote:
| 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.
| hleszek wrote:
| 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.
| saint_yossarian wrote:
| I think the mouse wheel is mapped by default if you `set mouse
| on`? I also additionally map Shift-PageUp/Down in my config.
| And recently they added a `pane-scrollbars` option for a
| clickable ASCII scrollbar.
| hleszek wrote:
| Thanks! I works. I modified my ~/.tmux.conf file to be like
| this:
|
| # Activate mouse mode
|
| set -g mouse on
|
| # Enter copy mode and scroll up with PageUp
|
| bind-key -n Pageup copy-mode -u
|
| # Scroll down with PageDown; if at the bottom, it will exit
| copy mode automatically
|
| bind-key -T copy-mode-vi Pagedown send-keys -X page-down
|
| bind-key -T copy-mode-vi Pageup send-keys -X page-up
| jzer0cool wrote:
| 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?
| never_inline wrote:
| Try iterm2 which has mouse reporting
| douglee650 wrote:
| This is also why i gave up on it. Don't want to install iTerm
| either, more blaot.
| colton_padden wrote:
| 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...
| rbanffy wrote:
| I like to have an IBM 3270 style status bar on the bottom.
| set-option -gq status-style "fg=brightblue,overline"
| bsdz wrote:
| At some point I switched to "oh my tmux" which seems to cover
| most of the customisations I needed
| https://github.com/gpakosz/.tmux
| OhMeadhbh wrote:
| 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.
| znpy wrote:
| As a long time user of gnu screen (almost fifteen years now) i
| still have on my todo list to come up with a tmux config that
| mimics gnu screen... does somebody know if such a thing exists
| already?
|
| Btw I don't strictly believe in a gnu screen superiority, i'm
| just lazy.
| 5-0 wrote:
| > Published on Aug 17, 2015 > Last updated on Oct 2, 2024
|
| Why now?
|
| At least some of the links in it don't mention plugins (which
| luckily some comments here do). Beside tmux-continuum and tmux-
| sensible, I'd recommend jaclu/tmux-menus.
| pprotas wrote:
| I used tmux for quite some time, and just stopped using it one
| day. I realized that whatever tmux brings can be done better by a
| good terminal.
|
| I also hated dealing with all the wrong colors, escape character
| support, missing chars and messed up terminal buffers
| cassepipe wrote:
| Wezterm for examples has panes in addition of tabs and
| scriptable enough (lua) that you can session management:
|
| https://fredrikaverpil.github.io/blog/2024/10/20/session-man...
| alwillis wrote:
| Most modern terminals have a built-in multiplexing anyway. When
| you use tmux, you're essentially using a terminal emulator on
| top of a terminal emulator.
| nickjj wrote:
| One nice thing about tmux is it also supports include files in
| its config.
|
| This lets you put your theme colors in a different file, such as
| `source-file "~/.config/tmux/theme.conf"` and then your theme
| switching external script or tool can symlink a specific theme's
| tmux file to that path.
|
| That's what I do in my dotfiles: # Main tmux
| config https://github.com/nickjj/dotfiles/blob/master/.co
| nfig/tmux/tmux.conf # One of the theme files
| https://github.com/nickjj/dotfiles/blob/master/themes/tokyonight-
| moon/tmux.conf
|
| It allows for hot-reloading different themes as well.
| podoman wrote:
| Big fan of all of the items mentioned here. I love the "intuitive
| split commands" -- I'll add that.
|
| For the vim/nvim fans out there, I try my best to add "vim-style"
| key bindings for navigating between panes, so that e.g. ctrl-h,
| ctrl-j, ctrl-k, and ctrl-l can be used to move around qukcly. My
| dotfiles are here:
|
| https://github.com/jay-khatri/dotfiles/blob/main/.tmux.conf
| sva_ wrote:
| For me, this is missing bind-key -n M-n new-
| window bind-key -n M-1 select-window -t :1 bind-
| key -n M-2 select-window -t :2 bind-key -n M-3 select-
| window -t :3 bind-key -n M-4 select-window -t :4
| bind-key -n M-5 select-window -t :5 bind-key -n M-6
| select-window -t :6 bind-key -n M-7 select-window -t :7
| bind-key -n M-8 select-window -t :8 bind-key -n M-9
| select-window -t :9
|
| To switch around quick. So on my system I've got Super-{1-9} for
| workspaces, Alt-{1-9} for tmux panes.
|
| Also if you want a vi-like copy mode (where you can select and
| copy stuff) that opens using Alt-/: bind-key -n
| M-/ copy-mode set -g status-keys vi set-window-
| option -g mode-keys vi # v to trigger selection
| bind-key -T copy-mode-vi v send-keys -X begin-selection
| # wl-copy if you use wayland # mouse selection in copy
| mode to copy bind-key -T copy-mode-vi MouseDragEnd1Pane
| send -X copy-pipe-and-cancel "wl-copy" # y to copy
| bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel "wl-
| copy"
|
| And btw, Ctrl-Shift-v to paste system clipboard
|
| You can also put the config into ~/.config/tmux/tmux.conf
|
| edit: And if you want a powerline-style design:
| set -g pane-border-style "fg=colour252" set -g pane-
| active-border-style "fg=colour25" set -g status-style
| "bg=default,fg=default" set -g status-left
| "#[fg=colour231,bg=colour25,bold] #S
| #[fg=colour25,bg=default,nobold]" set -g status-right
| "#[fg=colour67,bg=default]#[fg=colour231,bg=colour67] %Y-%m-%d
| %H:%M #[fg=colour25,bg=colour67]#[fg=colour231,bg=colour25,bold]
| #h " setw -g window-status-format
| "#[fg=colour243,bg=default] #I #W " setw -g window-
| status-current-format "#[fg=colour28,bg=default,reverse]#[fg=colo
| ur231,bg=colour28,bold,noreverse] #I #W
| #[fg=colour28,bg=default,noreverse]"
|
| Requires powerline-fonts
| thcipriani wrote:
| Ctrl-a interferes with readline shortcuts. I've been using
| Ctrl-<Space>: nothing, as far as I know, binds to that.
| unbind C-b set-option -g prefix C-Space bind-key
| C-Space send-prefix
| mhw wrote:
| I've been using Ctrl-s for years. Nothing else uses it because
| it's historically been used for terminal flow control, but that
| doesn't really have much use in a graphical terminal with
| history and scrollbars and so I've never missed it. Has similar
| two-finger ergonomics to the Ctrl-a bind as well.
|
| edit: oh, and I think Ctrl-space is the keystroke to get a nul
| character, and vi uses that character to insert the last
| entered piece of text in insert mode. It looks like Ctrl-@ does
| the same things, but tmux might not be able to tell the
| difference either.
| kombine wrote:
| Same, I used C-a for a while until I found out its default
| mapping is jumping to the beginning of the line so I rebound
| tmux prefix to C-Space. Now my only problem is on a few servers
| where I haven't copied my dotfiles.
| data-ottawa wrote:
| I very recently learned that with most readline apps and
| terminal password inputs, ctrl+u clears the input.
|
| Very handy when you make a typo far into a long password and
| can't keep track of whether you've mashed backspace enough.
| shye wrote:
| What I don't see discussed is why tmux (and screen) are still a
| thing, when we have windowed desktops for 40+ years now.
|
| Disconnecting a session's lifetime from the connection's lifetime
| hardly need such lengthy tutorial.
|
| And displaying and arranging multiple virtual terminals was
| supposed to be the job of the terminal emulator and the windowing
| system.
| jackbravo wrote:
| Another easy to use option is using byobu
| (https://github.com/dustinkirkland/byobu).
| snag wrote:
| I have been using byobu for almost a decade now and it never
| let me down.
| kenforthewin wrote:
| I'm constantly fighting with tmux copying. I want it to perform
| like native copying, but in mouse mode it seems to copy more
| characters than I want, copy newlines when I don't want them, and
| doesn't copy to clipboard in tmux-in-tmux situations.
| maleldil wrote:
| You can use vi copy mode. It makes selection a lot easier.
| zzyzxd wrote:
| > Less awkward prefix keys
|
| > Probably the most common change among tmux users is to change
| the prefix from the rather awkward C-b to something that's a
| little more accessible.
|
| I like the awkwardness of the default prefix key. I have almost
| never activated it by accident.
|
| > Intuitive Split Commands
|
| > Another thing I personally find quite difficult to remember is
| the pane splitting commands." to split vertically and % to split
| horizontally just doesn't work for my brain.
|
| This is super intuitive to me. two ' in parallel means splitting
| horizontally. two deg split by an almost horizontal line means
| splitting vertically.
|
| > Easy Config Reloads
|
| I reloaded config over a few hundreds of times in my first week
| learning tmux a decade ago. I only reloaded config once in the
| last 5 years if I recall correctly. It's not something you should
| memorize.
| ghshephard wrote:
| > I like the awkwardness of the default prefix key.
|
| I am 100% in agreement with you. It takes all of 5 seconds to
| add: unbind-key -T prefix C-b
| set-option -g prefix C-s
|
| To your .tmux.conf on your _local_ laptop (where I use tmux
| 99.99% of the time) - without worrying about conflicting on
| that once-in-one-year event where you start up tmux remotely.
| mmh0000 wrote:
| I love tmux! It's perfectly usable! You only need a 400-line
| custom-built configuration file[1]!
|
| [1] https://doc.xn0.org/.tmux.conf
|
| Disclaimer: I am being silly but serious. tmux is absolutely not
| user-friendly out of the box. It is, however, extremely nice
| after an absurd amount of tweaking, which is either an
| endorsement or a damning, depending on your perspective.
| skydhash wrote:
| Mine is only a few lines copied from jcs's one.
|
| https://github.com/jcs/dotfiles/blob/master/.tmux.conf
|
| I've only reverted the prefix binding back.
| hiAndrewQuinn wrote:
| I include lines at the top of my own https://andrew-
| quinn.me/tmux-conf.txt to make it easy to download no matter
| what kind of box I find myself on. # Mindless
| copy and paste command: # # # Standard Linux
| / GNU tools # wget -O ~/.tmux.conf https://andrew-
| quinn.me/tmux-conf.txt # curl -fsSL https://andrew-
| quinn.me/tmux-conf.txt -o ~/.tmux.conf # busybox wget
| -q -O ~/.tmux.conf https://andrew-quinn.me/tmux-conf.txt
| # [... many, many others]
|
| The Windows PowerShell one is aspirational and manifesting. I
| should add some angel numbers to it to hyperstition more of
| what I want to see into the world.
| amdivia wrote:
| My main gripe with tmux is the nested use case (tmux session on
| my local machine, in which I ssh to another machine, only to tmux
| attach within the remote machine too). Is there a terminal
| multiplexer/session daemon that supports nested sessions out of
| the box with ease?
| she46BiOmUerPVj wrote:
| I wrote quite a bit of configuration to support an "outer" tmux
| process and "inner" tmux processes on all the remote hosts I
| have various and different tasks to accomplish. I am not sure
| how some software would manage these, but in the very least
| configuring my outer session to use Ctrl+a while the inner one
| uses Ctrl+b is working well. I have aliases that specify a
| socket so I can refer to the sessions easily and not get them
| confused.
| nurettin wrote:
| I remember running ssh to connect to a mainframe and starting gnu
| screen remotely right after watching the matrix. And I've used it
| ever since.
|
| All these newage tmux hippie yuppies can get off my lawn.
| toniantunovi wrote:
| One thing that often gets overlooked in the tmux vs. alternatives
| debate is that tmux's staying power is largely about ubiquity on
| remote servers. Zellij is great on your local machine where you
| control the environment, but if you're doing a lot of work via
| ssh on machines you don't own, tmux is almost certainly already
| installed. The muscle memory transfers too.
|
| That said, I'd push back on the idea that the default tmux config
| is just "ugly". The real usability issue is that the keybindings
| are so divorced from how people intuitively think about splits
| and windows that even experienced users can't remember them. The
| visual defaults are just a symptom of the deeper problem that it
| was designed for someone who already had a mental model built
| around screen.
| socalgal2 wrote:
| I don't get it. I don't want a 1970s teletype interface in 2026
| just to have persistent command line sessions.
|
| Where's the 2026 windowed version that feels exactly like a
| native terminal/iTerm/ghostty app but keeps sessions alive and
| lets me reconnect to them, no middle man with Ctrl keys for
| control.
|
| I know this post will get a lot of hate responses. I don't care.
| Respond by fax
| semiinfinitely wrote:
| set-option -g prefix C-x
|
| has been working for me for years
| avadodin wrote:
| I don't see what's awkward about C-b and %.
|
| No mention of replacing the weird-ass emacs thing on [ with
| proper vim bindings?
___________________________________________________________________
(page generated 2026-04-13 23:00 UTC)