8 ms·
Make tmux pretty and usable (2024)
- 0dayman 7mo agothat's pretty nice, but did you try cmux.com
- phito 7mo agoOP doesn't seem to be on Mac
- TheRealPomax 7mo agoEven 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 7mo agoiTerm2 gives you that then. I use it every day at work. Idk why there's no equivalent for Linux.
- wffurr 7mo agoThat'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 7mo agoI've been building a tmux wrapper that is similar you might be interested in. https://jmux.build https://jmux.build
- stonecharioteer 7mo agoThat'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 7mo agowhat does it add over screen which i don't even need to install?
- esseph 7mo agoIf 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 7mo ago> 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.html#Invoking-Screen https://www.gnu.org/software/screen/manual/screen.html#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.html#Character-Processing https://www.gnu.org/software/screen/manual/screen.html#Chara...>
- esseph 7mo agoWhich 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 7mo agocmux? I don't know and it's not even a good comparison. tmux? https://www.google.com/search?q=tmux+vs+screen https://www.google.com/search?q=tmux+vs+screen
- 0dayman 7mo agohm, seems i misunderstood something
- ndr 7mo agoI gave up on it once I discovered https://zellij.dev/ 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 7mo agoI 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 7mo agoThis comment would be a lot more convincing if it weren't in response to one expressing the same sentiment :-)
- azthecx 7mo agoIt 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 7mo agoMaybe 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
- halfwhey 7mo agoMy 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 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 https://github.com/laktak/extrakto)
- heatmiser 7mo agoI 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-development-brian-p-hogan/f43b539c057dfa4d?ean=9798888651315&next=t https://bookshop.org/p/books/tmux-3-productive-mouse-free-de...
- tosti 7mo agoThe book doesn't mention the author of tmux or its origins even once :(
- racl101 7mo agoI believe that book would be called: "History of Tmux"
- racl101 7mo agoThanks for the reference.
- welcome_dragon 7mo agoThis book is fantastic! But ... Why not link to the Pragmatic Programmer page for it? https://pragprog.com/titles/bhtmux3/tmux-3-productive-mouse-free-development/ https://pragprog.com/titles/bhtmux3/tmux-3-productive-mouse-...
- knubie 7mo agoI 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 7mo agoThere are many separate session persistence daemons: dtach, zmx, hauntty, shpool, diss, abduco - take your pick
- 0xbadcafebee 7mo agoscreen's another nice one. been using it for 25 years, so far so good
- vessenes 7mo agoI 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 7mo agobut I do miss the session saving of tmux Interesting...I kinda thought that was 90% of the use case for using tmux.
- leephillips 7mo agoRecent versions of Kitty have sessions. https://sw.kovidgoyal.net/kitty/sessions/ https://sw.kovidgoyal.net/kitty/sessions/
- jpeeler 7mo agoI 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-sessions https://sw.kovidgoyal.net/kitty/sessions/#more-complex-sessi...
- seemaze 7mo agoI'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 https://github.com/tmux/tmux/wiki/Control-Mode [1] https://github.com/ghostty-org/ghostty/issues/1935#issuecomment-3984405896 https://github.com/ghostty-org/ghostty/issues/1935#issuecomm...
- tosti 7mo agoI 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 7mo agoI change the color of the bar in every server I've set it up so I know absolutely where I am.
- backwardsponcho 7mo agoDo you use this when running tmux remotely? (I only run it in my own machines so it never runs as root anyway)
- faangguyindia 7mo agoi 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.
- jimbokun 7mo agoAny 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 7mo agoMy 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/ 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/ https://www.brain-dump.org/projects/abduco/).
- alexhans 7mo agoTmux 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 7mo agoI 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 7mo agoWhy not just `scp ~/.tmux.conf remotehost:`?
- monsieurbanana 7mo agoSometimes 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 7mo agoI 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 7mo agoIf only we had ways to automate repeating processes… oh well
- traderj0e 7mo agoNo, 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.
- yoyohello13 7mo agoIf you're interested in an out of the box multiplexer. https://zellij.dev/ https://zellij.dev/ is great. I've been using it for about a year now and loving it.
- tosti 7mo agoYour out of the box isn't my out of the box. Tmux is in main on OpenBSD, where it started.
- rgoulter 7mo agoI read "out of box" as meaning "has sensible defaults, can be used 'out of the box' without configuration". I've never seen it used to mean "preinstalled on most systems". Although e.g. people like vi keybindings because vi is preinstalled on most systems. Either way, I think you can argue for workstations, it's worth configuring software to your liking, and worth installing software that helps you be productive. Though, the only software I've seen people excuse for having 'bad defaults' have been things like vim, emacs, tmux.
- Ravitej_Neeli 7mo agonice update on tmux
- post-it 7mo agoI 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 7mo agoSelect copies, what do you mean?
- post-it 7mo agoNot for me. Some kind of OSC 52 problem.
- ihowlatthemoon 7mo agoMaybe you could try this - https://github.com/tmux-plugins/tmux-yank https://github.com/tmux-plugins/tmux-yank
- post-it 7mo agoI 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 7mo agoYeah, that really sucks. I couldn’t quite believe what was the case and spent many hours trying to debug it.
- ramses0 7mo agoOften, 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 7mo agoNot 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.
- strogonoff 7mo agoThere’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 7mo agoI'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 7mo agoI would love to have a way to switch sessions easily, like with panes where I just click or have more shortcuts available
- lozf 7mo agoPrefix-w works, or did you want something more?
- gsinclair 7mo agoPeople 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 7mo agoCheck out the `choose-tree` and `display-menu` commands.
- fenazego 7mo agoI use byobu for managing tmux windows and sessions https://www.byobu.org/ https://www.byobu.org/
- nagaiaida 7mo agoi just have a little script called session (invoked as session namespace name and mapping to a tmux session called namespace/name and searching all namespaces if the namespace is elided) that just does the right tmux invocation for the various intersecting cases of [in or not in a tmux session already, target session does or does not exist] which also has the side benefit of leaving shell history breadcrumbs i can follow between sessions later if needed
- maniacalrobot 7mo agoHere’s a simple session switcher: `bind C-a display-popup -E "tmux list-sessions -F '#{session_name}' | fzf --reverse | xargs tmux switch-client -t"`. No plugins, nothing fancy, just works.
- capitainenemo 7mo agoI'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 7mo agoI ended up AI-slopcoding myself a small shell script for the few things I need from tmux: https://gist.github.com/dmitriid/523a5229c9a17a1cf4ad9182f4c58cf5 https://gist.github.com/dmitriid/523a5229c9a17a1cf4ad9182f4c... I just couldn't be bothered to remember all the prefixed commands :)
- himata4113 7mo agoI 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 7mo agoHonestly, this is the only configuration I need. Wish they could make this default, not sure why they haven't.
- himata4113 7mo agoxterm, probably a lot of servers use tmux which probably has some weird broken edge cases
- Lihh27 7mo agothe most tmux thing in the world is that "make tmux usable" is still a genre.
- imankulov 7mo agoI 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 https://github.com/anthropics/claude-code/issues/6072.
- strogonoff 7mo agoIs 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 7mo agoA `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 7mo agoTIL. I didn’t know it’s the responsibility of the parent, thought OS automatically handles child processes.
- flakes 7mo ago
- hamasho 7mo agoI 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 7mo agoWorth mentioning my tmux llm chat helper sidechat: https://github.com/day50-dev/sidechat https://github.com/day50-dev/sidechat I use it every day.
- 1vuio0pswjnm7 7mo agoI 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 7mo ago> I do almost all interactive work while detached from tmux How come?
- deleted 7mo ago[deleted]
- pavel_lishin 7mo agoHard 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 7mo agoThe only reason I don't use tmux is because of how annoying it is to look at scrollback. Am I using it wrong?
- hybirdss 7mo agofeels wrong to scp a dotfile to a server you only touch once
- tombert 7mo agoI 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 7mo agomy 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%2Ftmux_sessionizer https://github.com/tolly-xyz/dotfiles/blob/main/.local%2Fbin...)
- imiric 7mo agoI'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/ https://rootloops.sh/ is certainly... something. :) [1]: https://github.com/jimeh/tmux-themepack https://github.com/jimeh/tmux-themepack [2]: https://gist.github.com/imiric/9bd3e5b7fc5e1468d05abc674f42ed6e https://gist.github.com/imiric/9bd3e5b7fc5e1468d05abc674f42e...
- Morantron 7mo agoOne 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 https://github.com/morantron/tmux-fingers (disclaimer: I'm the developer of the plugin)
- johnfn 7mo agoGuys, 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 7mo agoHoly carp.
- kelsey98765431 7mo agothis 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 7mo agoI have in https://github.com/lmorg/ttyphoon 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.
- em-bee 7mo agointeresting, i am trying to install it to give it a try. the features in ttyphoon look very promising. unfortunately the build now fails with "frontend.go:39:12: pattern all:frontend/dist: no matching files found" i am also a bit taken aback by the many dependencies. with heightened risk of supplychain attacks and dependency failures that feels a bit scary.
- hnlmorg 7mo ago> unfortunately the build now fails with "frontend.go:39:12: pattern all:frontend/dist: no matching files found" How are you trying to build it? Are you calling make? Also what OS are you on? make build > i am also a bit taken aback by the many dependencies. with heightened risk of supplychain attacks and dependency failures that feels a bit scary. Yeah, I agree with you there. Most of my projects are very conservative with their dependencies; as was this one too, originally. But this project was just too large for one person to realistically manage on their own and without reusing the hard work of other libraries. Unfortunately, the two libraries I need to lean on the most are exactly the kind of libraries that will have big dependency trees: - GUI (Wails): just because there is a huge amount of code required to draw anything to screen - AI (langchaingo/mcp-go): though mostly for tool use here but they’re optional Both of these libraries were chosen because they are well maintained and have a high number of contributors/eyeballs On the code. But, as you said, the risk is still there.
- garymiklos 7mo agoJust use smux.dev
- _345 7mo agoI 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 7mo agoI 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 7mo agoI 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 7mo agoI 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 7mo agoThanks! 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 7mo agoCould 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?
- douglee650 7mo agoThis is also why i gave up on it. Don't want to install iTerm either, more blaot.
- never_inline 7mo agoTry iterm2 which has mouse reporting
- colton_padden 7mo agoI 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/6e767691a6b129526051cd2e36268f618ccad8e8/tmux/.config/tmux/tmux.conf#L94-L99 https://github.com/cmpadden/dotfiles/blob/6e767691a6b1295260...
- rbanffy 7mo agoI like to have an IBM 3270 style status bar on the bottom. set-option -gq status-style "fg=brightblue,overline"
- deleted 7mo ago[deleted]
- bsdz 7mo agoAt some point I switched to "oh my tmux" which seems to cover most of the customisations I needed https://github.com/gpakosz/.tmux https://github.com/gpakosz/.tmux
- moontear 7mo ago+1 for gpakosz/.tmux which I also wanted to mention here. I have it synced across all machines and a personal .tmux.conf.local that modifies some settings to my liking.
- OhMeadhbh 7mo agoI'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 7mo agoAs 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.
- atsaloli 7mo agoTry https://github.com/ddollar/tmux/blob/master/examples/screen-keys.conf https://github.com/ddollar/tmux/blob/master/examples/screen-...
- 5-0 7mo ago> 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 7mo agoI 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 7mo agoWezterm 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-management-in-wezterm-without-tmux/ https://fredrikaverpil.github.io/blog/2024/10/20/session-man...
- alwillis 7mo agoMost 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 7mo agoOne 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/.config/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 7mo agoBig 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 https://github.com/jay-khatri/dotfiles/blob/main/.tmux.conf
- sva_ 7mo agoFor 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=colour231,bg=colour28,bold,noreverse] #I #W #[fg=colour28,bg=default,noreverse]" Requires powerline-fonts
- thcipriani 7mo agoCtrl-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 7mo agoI’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.
- orthecreedence 7mo agoCtrl+s is evil. I can't count how many times I froze my terminal by accident before realizing that Ctrl+q "unfreezes" it. I absolutely support rebinding it.
- kombine 7mo agoSame, 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 7mo agoI 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 7mo agoWhat 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.
- em-bee 7mo agowindowed terminals and tabs don't keep their state without something like tmux. and they don't let me have multiple terminals on a remote machine. only now we are seeing gui terminals to integrate such features: wezterm, ghostty, ttypoon, ... so we are discussing tmux because it took more than 40 years for those features to make it to the gui layer.
- jackbravo 7mo agoAnother easy to use option is using byobu (https://github.com/dustinkirkland/byobu https://github.com/dustinkirkland/byobu).
- snag 7mo agoI have been using byobu for almost a decade now and it never let me down.
- kenforthewin 7mo agoI'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 7mo agoYou can use vi copy mode. It makes selection a lot easier.
- zzyzxd 7mo ago> 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.
- ghshephard 7mo ago> 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 7mo agoI love tmux! It's perfectly usable! You only need a 400-line custom-built configuration file[1]! [1] https://doc.xn0.org/.tmux.conf 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 7mo agoMine is only a few lines copied from jcs’s one. https://github.com/jcs/dotfiles/blob/master/.tmux.conf https://github.com/jcs/dotfiles/blob/master/.tmux.conf I’ve only reverted the prefix binding back.
- hiAndrewQuinn 7mo agoI include lines at the top of my own https://andrew-quinn.me/tmux-conf.txt 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.
- optionalsquid 7mo agoI dunno. I have yet to change any tmux settings, but I find it perfectly usable. I guess it depends on what you want out of it. I’ve memorized about nine shortcuts, and that’ll all I’ve ever needed: ctrl+b and c, n, p, s, d, $, ‘,’, or PageUp/PageDown
- amdivia 7mo agoMy 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 7mo agoI 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 7mo agoI 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 7mo agoOne 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 7mo agoI 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
- timka 7mo agoThere's still no such standard. You either provide a terminal API or build a custom client-server app (GUI + backend). The later means there's no place in your setup for terminal apps which expect a TTY interface (emulated by your terminal app). What are you gonna do about that? Take a look at headless project management in Zed or JetBrains. They do exactly that -- bring clear separation of concerns in a high-level API so that you don't have to mux/demux everything into/from byte stream like terminal applications do.
- timka 7mo agoA good read on the subject https://jyn.dev/the-terminal-of-the-future https://jyn.dev/the-terminal-of-the-future
- semiinfinitely 7mo agoset-option -g prefix C-x has been working for me for years
- avadodin 7mo agoI don't see what's awkward about C-b and %. No mention of replacing the weird-ass emacs thing on [ with proper vim bindings?
- robertwt7 7mo agoI 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
- wormius 7mo agoI 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.
- linzhangrun 7mo ago[flagged]
- sbinnee 7mo agoThough I also customize my tmux setup, the best way to use tmux is just to learn and remember the basics. Once you change the prefix bind or any other basic binds, you will have hard time on a new machine. Btw, you can place tmux config at ~/.config/tmux/tmux.cong. No reason to clutter home dir.
- halyconWays 7mo agoDid they fix being able to select text without a ton of empty spaces across multiple lines, and being able to use the mousewheel as effectively as a non-multiplexed terminal?
- ggm 7mo agoMake tmux cut/paste work on mac terminal.app so I don't have to install iterm2 bloatware.
- theshrike79 7mo agoI select with mouse and paste to wherever, works every time? How can it not work? I think the only even loosely relevant setting on my .tmux.conf is: set -g mouse on
- ggm 7mo agoIt's the non mouse stuff i want. It's a known problem with a lot of "try this" approaches to fixing but no categorical answer. Nothing wrong with mice but keyboards have a role too.
- towb 7mo agoGave up on making it pretty... But my tip is to read the manual so you know what you put in your config instead of just copy paste. I love tmux, does exactly what I need it to do and doesn't try too hard to make the terminal a place with unicorns and fancy GUI magic.
- ramon156 7mo agoI love that most tmux features are programmatic and unix-oriented. > # reload config file (change file location to your the tmux.conf you want to use) > bind r source-file ~/.tmux.conf Just seems fun. That said, I still use zellij. I like the scroll info, the default bindings, and the fact it plays nicely with my setup of fish+alac. I might swap alacritty with ghostty at some point, but this works for me.
- wowczarek 7mo agoFor the "pretty" argument - sure, why not, but as to changing keybinds... Well, it's like this: ^a is for screen, ^b is for tmux. You can remap everything to your taste, but you're not going to build tmux muscle memory. You're going to remember your own, erm, thing. Why does this matter? For a localhost admin it doesn't, but if you work on many systems, often either fresh or not your own, you need to be agile and you're not going to have the time or opportunity to drop your own dotfiles, plus the systems will be locked down, offline or both, and so it pays off to learn the tool at its defaults. Why nicm went for %/" I will never understand, but he did, and that's that. After screen I had X and Xpra and and Terminator at hand for nearly two decades straight and couldn't be bothered moving to tmux, and when I did, I was considering remapping it to Terminator, but I resisted, and I don't regret it. My personal config has some colours, notably different background for the active pane, a UNIX timestamp clock and mouse on and some buffer and title tweaks, but no keybind changes. But to each their own.
- yason 7mo agoWhy make C-a your prefix key? Just because it's the default in 'screen'? I use C-a a lot to go to BOL, just like C-e to go to EOL. I also use C-b a lot with C-f. The obvious choice is C-z. You rarely suspend processes and when you do, C-zC-z is pretty quick. For other combos, it pays to have control and z close to each other so that when your little finger and ring finger operate C-z then your other fingers can freely type whatever follows the prefix without having to unwind your fingers back from the keyboard first.
- Biganon 7mo ago> it pays to have control and z close to each other Well there you have it, control and z are not close to each other on my keyboard, yet control and a are. What's your layout?
- em-bee 7mo agoz near control is standard qwerty layout. you probably have qwertz which is actually less common globally. but you are right, in your case z is not the right key. choose another. i use o as my main key now, not very close but close enough. alternatives i use and have used are q, s, d, x, and a few others. even ] can work if you have a US keyboard at least. i avoided a and e since they are used on the commandline often. (although elvish doesn't support them by default so that's training me to not need them there)
- mrexcess 7mo agoRebinding C-b to C-a is a necessity for those of us whose muscle memory formed on GNU screen, been doing this for years. I like to set status-right to include host load average, with something akin to: set -g status-right '#[fg=colour39, bg=colour234]#[fg=colour160] #h #[fg=colour088]avg: #(cat /proc/loadavg|cut -d" " -f1-3) '
- kristianpaul 7mo agoTry byobu
- Witty0Gore 7mo agoI run tmux inside Termux on my phone to manage a couple of long-running Node projects. It's one of those setups that sounds cursed until you realize it just works. Session persistence is the killer feature when your terminal lives on a device that might close the app at any time.
- Havoc 7mo agoThe tricky part for me is getting it to behave with other fancy TUI stuff. eg both tmux and neovim stuff want to use the bottom row in terminal and neither seem to have the intelligence built in to compensate
- pythonbase 7mo agoI have used tmux, tmuxup, fzf and direnv to automate my workflow. It's pointed to the work folder, contains a project picker, invokes shell with defaults (npm run dev, python manage.py runserver etc), and fires up cursor - saving a lot of keystrokes for project initialization. I have written about the process here: https://kashifaziz.me/blog/tmux-dev-workflow/ https://kashifaziz.me/blog/tmux-dev-workflow/
- MarchApril 7mo agoThrough many phases of using tmux, from bare bone to rocking 200-line config not counting 40 packages installed by a package manager, then back to 20 lines .tmux.conf, I'm tired. Tmux is great. Outside of control codes, I don't have any problems since tmux makes it easy to fix them. Except that I'm stuck with it while I watch a super star programmer dude switch to his 4th Konsole window to create his 21st tab and wonder how can I shave off this dependency.