Make tmux pretty and usable (2024)
- ndr - 166264 sekunder sedanI 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.
- imankulov - 163639 sekunder sedanI 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.
- johnfn - 162428 sekunder sedanGuys, 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 :)
- sva_ - 156976 sekunder sedanFor me, this is missing
To switch around quick. So on my system I've got Super-{1-9} for workspaces, Alt-{1-9} for tmux panes.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 :9Also if you want a vi-like copy mode (where you can select and copy stuff) that opens using Alt-/:
And btw, Ctrl-Shift-v to paste system clipboardbind-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"You can also put the config into ~/.config/tmux/tmux.conf
edit: And if you want a powerline-style design:
Requires powerline-fontsset -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=colour231,bg=colour28,bold,noreverse] #I #W #[fg=colour28,bg=default,noreverse]" - alecsm - 165133 sekunder sedanI 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.
- seemaze - 165413 sekunder sedanI'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...
- mmh0000 - 153987 sekunder sedanI 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.
- zzyzxd - 154185 sekunder sedan> 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 ° 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.
- heatmiser - 165580 sekunder sedanI 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...
- linzhangrun - 128525 sekunder sedanThe scrolling behavior in tmux has always annoyed me. Every time I have to press a shortcut to enter copy/scroll mode, and then exit it again. At the same time, using Ctrl+A to select all is always cumbersome.
In modern TUI editors, scrolling and select-all don’t seem to be issues at all. I can use them almost unconsciously in a way similar to GUI applications—for example, Micro or TUIs from OpenCode. Does anyone know how to solve these problems?
- yoyohello13 - 165125 sekunder sedanIf 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 - 165433 sekunder sedanI 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:
I also like to have the bar on top and the status centered:set -g status-style "bg=red"set -g status-justify absolute-centre set -g status-position top - himata4113 - 163809 sekunder sedanI highly recommend just turning the mouse on, it's amazing for resizing panels and the rightclick menu is nice.
for multi-monitor setupsset -g mouse on
is also really nice.setw -g aggressive-resize on - halfwhey - 165703 sekunder sedanMy 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)
- wormius - 133847 sekunder sedanI gave up on Tmux due to issues w/reboot & session storage not working after.
I used the resurrect and continuum (one to save/restore, the other to save between sessions). Everytime I would reboot, the sessions no longer worked, and I'd have to delete the saved sessions.
Just trying to use Wezterms tabs panels like windows/panels. I don't do the SSH Session save/restore from remote so don't need that feature, and thus not too worried.
- jzer0cool - 161487 sekunder sedanCould 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?
- strogonoff - 164390 sekunder sedanThere’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”.
- robertwt7 - 135017 sekunder sedanI really really like tmux, probably i'll try Zellij at some point but its always my default on a new server to install tmux, copy oh my tmux and vimrc configs. then voila I have everything. I have to say I feel magical most of the time i'm using it
- toniantunovi - 151697 sekunder sedanOne 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.
- amdivia - 152558 sekunder sedanMy 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?
- colton_padden - 161055 sekunder sedanI 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...
- 1vuio0pswjnm7 - 163027 sekunder sedanI 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
- socalgal2 - 144801 sekunder sedanI 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
- monological - 162786 sekunder sedanThe only reason I don't use tmux is because of how annoying it is to look at scrollback. Am I using it wrong?
- nickjj - 158869 sekunder sedanOne 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:
It allows for hot-reloading different themes as well.# Main tmux config https://github.com/nickjj/dotfiles/blob/master/.config/tmux/tmux.conf # One of the theme files https://github.com/nickjj/dotfiles/blob/master/themes/tokyonight-moon/tmux.conf - hamasho - 163614 sekunder sedanI 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.
- thcipriani - 156860 sekunder sedanCtrl-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 - podoman - 158694 sekunder sedanBig 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:
- pavel_lishin - 162841 sekunder sedanHard 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.
- post-it - 164392 sekunder sedanI 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).
- knubie - 165420 sekunder sedanI 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).
- shye - 156228 sekunder sedanWhat 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.
- avadodin - 139893 sekunder sedanI don't see what's awkward about C-b and %.
No mention of replacing the weird-ass emacs thing on [ with proper vim bindings?
- rbanffy - 160726 sekunder sedanI like to have an IBM 3270 style status bar on the bottom.
set-option -gq status-style "fg=brightblue,overline" - kenforthewin - 154292 sekunder sedanI'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.
- jimbokun - 165220 sekunder sedanAny 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.
- hugodan - 164154 sekunder sedanI would love to have a way to switch sessions easily, like with panes where I just click or have more shortcuts available
- Morantron - 162431 sekunder sedanOne 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)
- christiansafka - 161695 sekunder sedanI 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.
- pprotas - 159196 sekunder sedanI 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
- bsdz - 159923 sekunder sedanAt some point I switched to "oh my tmux" which seems to cover most of the customisations I needed https://github.com/gpakosz/.tmux
- traderj0e - 164361 sekunder sedanI'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.
- 5-0 - 159271 sekunder sedan> 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.
- 0xDEFACED - 162543 sekunder sedanmy 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...)
- OhMeadhbh - 159821 sekunder sedanI'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.
- hleszek - 161511 sekunder sedanI 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.
- jackbravo - 156031 sekunder sedanAnother easy to use option is using byobu (https://github.com/dustinkirkland/byobu).
- tombert - 162663 sekunder sedanI 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 - 162760 sekunder sedanfeels wrong to scp a dotfile to a server you only touch once
- kristopolous - 163584 sekunder sedanWorth mentioning my tmux llm chat helper sidechat: https://github.com/day50-dev/sidechat
I use it every day.
- semiinfinitely - 141143 sekunder sedanset-option -g prefix C-x
has been working for me for years
- faangguyindia - 165036 sekunder sedani 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 - 164038 sekunder sedanI'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 ;)
- Lihh27 - 163778 sekunder sedanthe most tmux thing in the world is that "make tmux usable" is still a genre.
- imiric - 162541 sekunder sedanI'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...
- garymiklos - 161874 sekunder sedanJust use smux.dev
- nurettin - 152508 sekunder sedanI 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.
- znpy - 159489 sekunder sedanAs 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.
- Ravitej_Neeli - 165108 sekunder sedannice update on tmux
- troupo - 163918 sekunder sedanI 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 :)
- - 158896 sekunder sedan
- 0dayman - 167006 sekunder sedanthat's pretty nice, but did you try cmux.com
- _345 - 161740 sekunder sedanI actually asked chatgpt to recommend me a great starter tmux conf, and it gave me 80% of this blog post. Not an insult btw.
Nördnytt! 🤓