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.
ghshephard 40 minutes ago [-]
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.)
snapplebobapple 1 hours ago [-]
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.
fullstop 2 hours ago [-]
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.
hesdeadjim 4 hours ago [-]
100%. Tmux didn’t click for me but Zellij did within 5 minutes. Lifelong Vim user so it felt a lot more familiar.
ori_b 58 minutes ago [-]
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.
ssivark 49 seconds ago [-]
[delayed]
ndr 14 seconds ago [-]
window manager like what though?
Mac WM is horrible, I use aerospace to make it tolerable
setopt 48 minutes ago [-]
> 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 41 minutes ago [-]
Thanks. Dtach is definitely closer to what I want than tmux, I'll be trying it out this week.
senderista 2 hours ago [-]
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.
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.
llagerlof 4 hours ago [-]
I used tmux for a few years, until one day I discovered Zellij. With its significantly better UI and overall user experience, I was instantly convinced.
nDRDY 4 hours ago [-]
This comment would be a lot more convincing if it weren't in response to one expressing the same sentiment :-)
azthecx 4 hours ago [-]
It is actually true though, I only use tmux nowadays when I am SSHed into a server that I need to do some work on.
The only issues I've had with it is that sometimes it's hot keys conflict with vim, but you can easily turn it temporarily off with ctrl+ g.
If you're already used to tmux I'm not sure you would benefit much from changing, but it definitely has a better out of the box with pane hints, names, and more user friendly hot keys.
brewmarche 3 hours ago [-]
Maybe give terminal windows in vim a try? vim is not a terminal multiplexer, but if all you need is multiple terminals windows:
:term to open a terminal in a new vim window (or :vert term)
Standard window movements apply (by default the window prefix is Ctrl-W), most important are: Ctrl-W,{hjkl} to switch between windows, Ctrl-W,{<>+-} to resize windows, Ctrl-W,{HJKL} to move windows to edges, Ctrl-W,{qc} to (force) close windows
Enter normal mode of a terminal buffer with Ctrl-W,N: now you can perform vim motions and scroll the output
Enter insert mode with i and you can type into the terminal again
In insert mode: Ctrl-W "x to paste register x, Ctrl-W . to send a literal Ctrl-W. If too annoying, you can change the window prefix of vim
This goes for vim, neovim also has a terminal mode but it works differently I think
fernandotakai 3 hours ago [-]
i tried both and i honestly... i didn't see anything different.
i want tmux for three things:
1. easy splits
2. easy scrollback
3. being able to restart a session if my terminal dies
given all that, tmux works exactly as expected.
what are all these "significantly better ui and overall ux"?
Groxx 2 hours ago [-]
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.
dummydummy1234 4 hours ago [-]
Can you use zellij over ssh on a remote server?
TheTaytay 4 hours ago [-]
Yes you can!
ndr 4 hours ago [-]
without running zellij on the remote machine? how?
kibwen 3 hours ago [-]
I'm unclear what's being asked. Zellij is just a TUI-based terminal multiplexer like tmux and screen, you either run it locally and SSH within it to a remote machine, or SSH to a remote machine and run Zellij from within the remote connection.
Kim_Bruning 3 hours ago [-]
I guess they mean 'have zellij hold your session when you log off/close controlling terminal'. (that would require zellij on remote)
snthpy 2 hours ago [-]
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.
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
baby 2 hours ago [-]
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
KetoManx64 4 hours ago [-]
Same here. I bounced off it a few times because KDE konsole already had built in tab/pane support but once I picked up neovim the key chords for triggering actions just made so much sense compared to the static key binds of Console that I just started using Zellij for tabs and panes within Console.
christiansafka 3 hours ago [-]
If anyone is looking for a slightly higher level management of persistent sessions, we just launched https://haventerminal.com for Mac
garymiklos 3 hours ago [-]
I prefer smux.dev
imankulov 4 hours ago [-]
I left tmux for zellij after several unsuccessful attempts to get Shift+Enter working.
Was quite impressed initially and invested weeks in building new muscle memory, but somehow Zellij crashed with panic more than once, leaving all my processes orphaned. Decided to go back to tmux, and found a simple fix for my Shift+Enter issue.
> In case anyone is looking for it, the fix is "bind-key -T root S-Enter send-keys C-j"
I was looking, thank you!
strogonoff 4 hours ago [-]
Is it possible for a multiplexer process to die, but in such a bad way that its child processes continue to run?
I’ve been relying on the fact that in the worst-case scenario (if a pane hangs and tmux session becomes unresponsive) I can just kill tmux server and not have to hunt down and kill dozens of individual processes afterwards.
tolciho 3 hours ago [-]
A `kill -9` will cause many a process to die and give no chance to cleanup any child processes. Some percentage of users continue to use `kill -9` by default, which may result in a mess of a process tree. Otherwise if the crash is bad enough that cleanup code cannot run (maybe it's being run on OpenBSD and an incompetent programmer didn't check the return value of a malloc and for some reason the kernel now nukes the process) then there may be orphan children. There may also be sporadic failures to cleanup if the crash, maybe, causes the whole process to exit before the cleanup code in some other thread can run. System load average may also influence how things maybe go sideways.
a_t48 3 hours ago [-]
That depends on how the children were spawned, no? prctl(PR_SET_PDEATHSIG, SIGTERM); or similar will fix this.
strogonoff 3 hours ago [-]
TIL. I didn’t know it’s the responsibility of the parent, thought OS automatically handles child processes.
patabyte 2 hours ago [-]
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 2 hours ago [-]
Interesting. I’ve just been using ‘\ + enter’
ErroneousBosh 54 minutes ago [-]
What does shift-enter do for you?
skydhash 20 minutes ago [-]
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.
johnfn 3 hours ago [-]
Guys, did you know about tmux control mode? It tells the host terminal to treat tmux tabs as actual tabs in the terminal. That means that things like scrollback, tab navigation, copy paste, keyboard shortcuts, etc are all handled natively, and you can visually see all your tmux tabs! It doesn't have great support across all terminals, but it does work great in iTerm 2.
Try `tmux -CC` in iTerm.
For a tmux novice like me, this was a total game changer :)
kelsey98765431 3 hours ago [-]
this is the only reason i use a mac and in a decade no open source linux terminal has ever implemented this to my knowledge
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
mmh0000 1 hours ago [-]
I love tmux! It's perfectly usable! You only need a 400-line custom-built configuration file[1]!
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.
I had my tmux customized to the point I forgot how to use it on a clean install which is a problem when I'm sshing into a server.
I wish it had better defaults but now I run it as is. After a while you get used to it. The only thing I always have to change is the mouse scroll and my brain cannot retain the exact command.
dpflan 4 hours ago [-]
Do you have a "dot files" repo? It would contain things like this, config files for tmux, zsh, <other tools>, etc.
esseph 4 hours ago [-]
That may work for a server or two but doesn't really pan out for fleet management.
lanstin 2 hours ago [-]
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 13 minutes ago [-]
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 3 hours ago [-]
Is it not just easier to accept the default config?
carodgers 2 hours ago [-]
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).
znpy 3 hours ago [-]
> I had my tmux customized to the point I forgot how to use it on a clean install which is a problem when I'm sshing into a server.
I 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 :)
NobleLie 2 hours ago [-]
"Claude, scp my tmux config over to that box"
alt219 4 hours ago [-]
Why not just `scp ~/.tmux.conf remotehost:`?
al_borland 4 hours ago [-]
I can't speak for the parent, but I rarely login to the same remote server twice and don't want to need to set things up and clean them up anytime I do. This is why I try to keep my stuff as close to vanilla as possible. If anything goes wrong on a server and someone sees I have a whole bunch of dot files to customize my config, it becomes a red herring that I have to spend time explaining away.
cr125rider 3 hours ago [-]
If only we had ways to automate repeating processes… oh well
traderj0e 1 hours ago [-]
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 9 minutes ago [-]
You could always copy the config to /tmp and use the -f flag.
monsieurbanana 4 hours ago [-]
Sometimes I ssh into a server as a specific user (e.g. as the "app" user that is used to run a web app), sometimes only root is available (probably not best practice, but it's not like I can or want to fix it myself).
In any case it's not practical to carry your dotfiles everywhere you go. Changes are also a hassle to propagate
toniantunovi 24 minutes ago [-]
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.
seemaze 4 hours ago [-]
I've been thoroughly impressed with tmux control mode[0] in iTerm2. This lets you manage remote terminal windows with your local window management provider. It is currently in the process of being implemented in ghostty[1] as well, can't wait!
> 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 4 hours ago [-]
I read "tmux 2: mouse-free productivity" in a weekend years ago and it may be, pound-for-pound, one of the more impactful books on my productivity.
The book doesn't mention the author of tmux or its origins even once :(
racl101 3 hours ago [-]
I believe that book would be called: "History of Tmux"
racl101 3 hours ago [-]
Thanks for the reference.
yoyohello13 4 hours ago [-]
If you're interested in an out of the box multiplexer. https://zellij.dev/ is great. I've been using it for about a year now and loving it.
tosti 4 hours ago [-]
Your out of the box isn't my out of the box. Tmux is in main on OpenBSD, where it started.
amdivia 38 minutes ago [-]
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 28 minutes ago [-]
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.
tosti 4 hours ago [-]
I like having a red bar for tmux running as root and a blue one for running it as a normal user, e.g. for root:
set -g status-style "bg=red"
I also like to have the bar on top and the status centered:
set -g status-justify absolute-centre
set -g status-position top
stonecharioteer 4 hours ago [-]
I change the color of the bar in every server I've set it up so I know absolutely where I am.
tosti 4 hours ago [-]
Aren't you going to run out of colors to pick?
himata4113 4 hours ago [-]
I highly recommend just turning the mouse on, it's amazing for resizing panels and the rightclick menu is nice.
set -g mouse on
for multi-monitor setups
setw -g aggressive-resize on
is also really nice.
throwa356262 3 hours ago [-]
Honestly, this is the only configuration I need.
Wish they could make this default, not sure why they haven't.
himata4113 3 hours ago [-]
xterm, probably
a lot of servers use tmux which probably has some weird broken edge cases
jzer0cool 3 hours ago [-]
Could never get mouse copy to work well (using mac at moment). When I make text selection, selects yellow and upon release goes to terminal prompt. I had one config work at one point and it kept selecting from all panes, not just one the one I'm in. Any ideas?
douglee650 1 hours ago [-]
This is also why i gave up on it. Don't want to install iTerm either, more blaot.
never_inline 2 hours ago [-]
Try iterm2 which has mouse reporting
strogonoff 4 hours ago [-]
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”.
thcipriani 2 hours ago [-]
Ctrl-a interferes with readline shortcuts. I've been using Ctrl-<Space>: nothing, as far as I know, binds to that.
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.
mhw 56 minutes ago [-]
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.
kenforthewin 1 hours ago [-]
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.
colton_padden 3 hours ago [-]
I prefer to hide the status bar entirely, and use an fzf-powered named window switcher to navigate between windows.
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/.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.
halfwhey 4 hours ago [-]
My two favorite tmux QoL improvements are enabling seamless navigation between neovim and tmux (there are many plugins but i use this one https://github.com/aserowy/tmux.nvim) and extrakto which lets you fuzzy select anything in the tmux buffer and insert into the cursor or copy it to the clipboard. (https://github.com/laktak/extrakto)
1vuio0pswjnm7 4 hours ago [-]
I prefer to use tmux non-interactively. For example, I use it for running daemons in the foreground, (textmode) screen scraping and scripting text-only browser
I do almost all interactive work while detached from tmux (personal preference)
I also rely on tmux buffers for a textmode "clipboard". I do not use x11
I've been using tmux since 2011 well before it became popular. I only use a fraction of its features
pavel_lishin 4 hours ago [-]
> I do almost all interactive work while detached from tmux
How come?
shye 2 hours ago [-]
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.
podoman 2 hours ago [-]
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:
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.
pavel_lishin 3 hours ago [-]
Hard agree on intuitive splits, I do this as well.
My hotkey is the backtick, `, rather than a chord.
The one thing I still struggle with - because it happens rarely - is easily copying the contents, full or partial, of a particular pane.
post-it 4 hours ago [-]
I appreciate that tmux has theoretical advantages over screen, but man does the implementation suck. On Mac it still seems like there's no way to copy text if you have mouse mode on (at least in code-server).
adamors 4 hours ago [-]
Select copies, what do you mean?
post-it 3 hours ago [-]
Not for me. Some kind of OSC 52 problem.
ramses0 3 hours ago [-]
Often, holding down "Shift" while making mouse selections will "break through" and let you get at the O.S. copy/paste/selection mechanism. Highly terminal dependent, though!
post-it 10 minutes ago [-]
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.
szopa 4 hours ago [-]
Yeah, that really sucks. I couldn’t quite believe what was the case and spent many hours trying to debug it.
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.
chasd00 3 hours ago [-]
I was wondering about tmux vs screen (+splitvt) but didn’t want to ask. What are the advantages?
rbanffy 3 hours ago [-]
I like to have an IBM 3270 style status bar on the bottom.
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.
bsdz 3 hours ago [-]
At some point I switched to "oh my tmux" which seems to cover most of the customisations I needed https://github.com/gpakosz/.tmux
5-0 3 hours 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.
christiansafka 3 hours ago [-]
I would also describe haventerminal.com as making tmux pretty and usable! but without any setup steps, first class support for agents, and management of multiple machines. Disclaimer: It's a macOS app we just launched and it ships its own open source session persistence.
jimbokun 4 hours ago [-]
Any guides for tmux configuration that works well with Emacs? The use of Ctrl and Meta for basic operations conflicts with a lot of Emacs commands.
stebalien 4 hours ago [-]
My experience is that Emacs wants to be your everything, and works best if you let it. Have you tried putting your terminals inside of Emacs instead of the other way around?
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.
monological 3 hours ago [-]
The only reason I don't use tmux is because of how annoying it is to look at scrollback. Am I using it wrong?
lancebeet 3 hours ago [-]
I would "just" do C-B PgUp and then use vi-like movement keys like hj, gg/G etc., and q to escape the pager, but I realize now that I say it that it doesn't sound very convenient or discoverable.
client4 3 hours ago [-]
C-b [ allows you to scroll up/down
Morantron 3 hours ago [-]
One way to make tmux way more usable is to use tmux-fingers, which provides hint-based mouse-free copypaste capabilities
I would love to have a way to switch sessions easily, like with panes where I just click or have more shortcuts available
saint_yossarian 18 minutes ago [-]
Check out the `choose-tree` and `display-menu` commands.
gsinclair 3 hours ago [-]
People have developed plugins for this. Check out “sesh” for instance.
Switching between sessions with fuzzy finding, and creating new ones when needed, is a wonderful feature.
lozf 4 hours ago [-]
Prefix-w works, or did you want something more?
OhMeadhbh 3 hours ago [-]
I'm perfectly happy with tmux the way it is, but upvoting this one because it's a decent overview of what to modify to make tmux more better if you don't like its defaults.
0xDEFACED 3 hours ago [-]
my favorite thing to do with tmux is using a sessionizer script[0] (credit for the idea/original implementation goes to ThePrimeagen). allows for fzf-ing my projects and creating a separate session for each one. especially handy for bouncing around when working on features/fixes that span multiple repos
for (neo)vim users, flattening vim splits and tmux panes into the same level for switching with ctrl+hjkl is handy too
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.
knubie 4 hours ago [-]
I stopped using tmux when I started using kitty terminal with native split windows. I prefer the native window management of kitty, but I do miss the session saving of tmux (e.g. if I accidentally close a tab).
kjs3 4 hours ago [-]
but I do miss the session saving of tmux
Interesting...I kinda thought that was 90% of the use case for using tmux.
orbital-decay 4 hours ago [-]
There are many separate session persistence daemons: dtach, zmx, hauntty, shpool, diss, abduco - take your pick
0xbadcafebee 4 hours ago [-]
screen's another nice one. been using it for 25 years, so far so good
vessenes 4 hours ago [-]
I used screen until like 2010 or so -- but you triggered me to look back at it again today. One nicety there now is that you can easily get a dump of what's showing in the pty with screen -S <session_name> -X hardcopy. This is actually somewhat hard to do in tmux, but it's a thing you want your AI agents to do all the time. I'm curious if claude / codex are comfortable with screen, I'll check it out.
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.
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.
tombert 3 hours ago [-]
I almost never bother theming things on my computer; I usually don't really care about how things look and I can't be bothered with it.
I have two exceptions to this: NeoVim and tmux.
tmux in particular looks very ugly out of the box; I'm not sure why they decided to have a bright green bar on the bottom (presumably to be high-contrast in a low color terminal), but I really hate staring at it all day (since I kind of live in tmux most of the day on both my work and personal computer). I have it set as close as I can to the Wombat color scheme that's built into emacs (and which can be easily added to Vim), because I personally have always felt that that was the most pleasant theme to stare at for long periods of time.
Another thing I do is set the prefix key to backtick. I have no idea why I started doing this, but at this point I'm too geriatric to change, and I still greatly prefer this over ctrl-b. The only issue I've had is when I need to do code blocks in markdown, but I've just gotten used to hitting backtick twice when I need to actually use a backtick.
hybirdss 3 hours ago [-]
feels wrong to scp a dotfile to a server you only touch once
hleszek 3 hours ago [-]
I love tmux but one thing which really annoys me is the fact that I cannot use the mouse wheel or the scroll back to see the previous content. I know there are shortcuts to go forward and back but I always forget them and they are not easily accessible on my keyboard and cumbersome.
saint_yossarian 12 minutes ago [-]
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.
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 ;)
Lihh27 4 hours ago [-]
the most tmux thing in the world is that "make tmux usable" is still a genre.
imiric 3 hours ago [-]
I've used ` as prefix for years now. Considering how often you switch windows/panes, I reckon using a single character has saved me hours per year. :D
It rarely conflicts with whatever I'm doing, but I have a binding to temporarily switch it to `C-a` and back, which I almost never use.
Oh, and I've used this themepack[1] for years as well.
Actually, here's my config[2] if someone finds it useful. I can't claim ownership of it, and probably stole it from somewhere I don't remember anymore.
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.
I just couldn't be bothered to remember all the prefixed commands :)
2 hours ago [-]
0dayman 5 hours ago [-]
that's pretty nice, but did you try cmux.com
wffurr 4 hours ago [-]
That's a totally different thing. Native macOS app vs portable terminal multiplexer. My main use case for tmux is detaching and re-attaching to a session on a remote server, for which it's extremely useful.
jarredkenny 4 hours ago [-]
I've been building a tmux wrapper that is similar you might be interested in. https://jmux.build
faangguyindia 4 hours ago [-]
what does it add over screen which i don't even need to install?
wffurr 2 hours ago [-]
cmux? I don't know and it's not even a good comparison.
If screen crashes you lose the sessions, Tmux maintains state.
Screen does not have UTF8 support, tmux does.
Otherwise just a bunch of more sane original defaults in tmux to make things much familiar.
In 2026 if given a choice between screen and tmux to use/learn, most are going to go with tmux.
stonecharioteer 4 hours ago [-]
That's what I tell people who keep telling me to try cmux. It's false advertising to say it's like tmux. No, Zellij, sure. But not this. I will hold onto tmux forever and you'll have to pry it from my cold dead hands.
phito 4 hours ago [-]
OP doesn't seem to be on Mac
TheRealPomax 4 hours ago [-]
Even if they are, cmux isn't an alternative to tmux, as it can't attach to/detach from sessions, which is usually the whole reason to use tmux.
traderj0e 59 minutes ago [-]
iTerm2 gives you that then. I use it every day at work. Idk why there's no equivalent for Linux.
_345 3 hours ago [-]
I actually asked chatgpt to recommend me a great starter tmux conf, and it gave me 80% of this blog post. Not an insult btw.
Rendered at 19:29:13 GMT+0000 (Coordinated Universal Time) with Vercel.
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.
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.)
Zellij is close to 50 megabytes, but tmux and all dependent libraries (minus libc, it's always there) is about 2 megabytes.
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.
Mac WM is horrible, I use aerospace to make it tolerable
Like `dtach`?
https://github.com/neurosnap/zmx
Then, if you're like me and read this years ago, 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
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.
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.
: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
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"?
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.
I tried zellij a couple of years ago when it first got popular and it didn't click for me.
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
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.
I was looking, thank you!
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.
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.
Try `tmux -CC` in iTerm.
For a tmux novice like me, this was a total game changer :)
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.
Also 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 clipboardYou can also put the config into ~/.config/tmux/tmux.conf
edit: And if you want a powerline-style design:
Requires powerline-fonts[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.
https://github.com/jcs/dotfiles/blob/master/.tmux.conf
I’ve only reverted the prefix binding back.
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.
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 :)
For example, leave the existing prefix binding (ctrl-b), but also add something nicer for day-to-day use (ctrl-space or similar).
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 :)
In any case it's not practical to carry your dotfiles everywhere you go. Changes are also a hassle to propagate
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.
[0] https://github.com/tmux/tmux/wiki/Control-Mode
[1] https://github.com/ghostty-org/ghostty/issues/1935#issuecomm...
> 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.
Seems like they are keeping up-to-date too: https://bookshop.org/p/books/tmux-3-productive-mouse-free-de...
Wish they could make this default, not sure why they haven't.
a lot of servers use tmux which probably has some weird broken edge cases
— 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”.
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.
https://github.com/cmpadden/dotfiles/blob/6e767691a6b1295260...
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.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
How come?
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.
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
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.
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.
I also hated dealing with all the wrong colors, escape character support, missing chars and messed up terminal buffers
https://fredrikaverpil.github.io/blog/2024/10/20/session-man...
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.
* 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/).
https://github.com/morantron/tmux-fingers
(disclaimer: I'm the developer of the plugin)
Switching between sessions with fuzzy finding, and creating new ones when needed, is a wonderful feature.
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...)
Interesting...I kinda thought that was 90% of the use case for using tmux.
https://sw.kovidgoyal.net/kitty/sessions/#more-complex-sessi...
All these newage tmux hippie yuppies can get off my lawn.
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.
I use it every day.
tbh i even forgot what it used to buy me.
I don't use capslock for ctrl though. It's much too useful as the Compose key ;)
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...
Btw I don’t strictly believe in a gnu screen superiority, i’m just lazy.
I just couldn't be bothered to remember all the prefixed commands :)
tmux? https://www.google.com/search?q=tmux+vs+screen
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.