Make tmux pretty and usable (2024)
hamvocke.com
hamvocke.com
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.
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 see everyone complaining about this but as a new tmux user as of a few months ago, I had an LLM assist me with configuring it how I wished and it did a bang-up job. Stuff like using “-“ to split horizontal and “|” to split vertical so you don’t even have to remember it…
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 know I'd get used to them, but the key combos used by tmux seem very odd choices, even to someone who used to code on a real glass tty!
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
Zellij is close to 50 megabytes, but tmux and all dependent libraries (minus libc, it's always there) is about 2 megabytes.
That's a Rust thing. It's what happens when you statically link because you monomorphise everything.
When I first started learning Rust, my "hello wold" binary was HUGE.
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
I think part of my resistance initially was that it took up much screen space with borders and such. I learned now that that can be switched off or modified. Didn't go deep yet, just tried the different options from `zellij -l welcome`. I think that should actually be the default startup and then maybe disable or prompt to disable in future.
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.
First thing I did was customize all the input commands and configuration with LLM assistance. Smooth as butter.
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.
Like `dtach`?
Mac WM is horrible, I use aerospace to make it tolerable
I do that roughly every 60-90 seconds with tmux - so, until the zellij developers relent (they suggest the "proper way" of copy paste is to pipe the data into a text editor and use that - but has the downside of not supporting system copy-paste buffers.) - no options other than to stick with tmux (or fork zellij - but that seems a bit much....)
The general response is that this user behavior, selecting/copying/saving-in-named-buffer is a very "tmux" like usage pattern the Zellij authors don't want to encourage in Zellij. Instead -they suggesting bringing your preferred Text Editor (emacs, vim, etc...) and doing the select / copy /paste in that.
The problems for me are - (A) I know how to select/copy/paste very well in tmux. Don't have the faintest clue how it's done in a text editor, (B) No (easy) ability to have multiple named buffers if you use a text editor, etc...
I summarized them here: https://github.com/zellij-org/zellij/issues/947#issuecomment...
But I guess Zellij people don't use the keyboard so much for copy pasting. A lot of people just use the mouse.
Screaming into the void, I guess, but PSA. Don't use buttons for links. In my case, I couldn't right-click and copy the URL, but there are a lot of other reasons not to do this.
I personally suggest web devs to install axe devtools [0] in their dev browser profile. Also, LLMs have gotten to the point that even the small local models can help a lot [1].
[0]: https://addons.mozilla.org/en-US/firefox/addon/axe-devtools/
[1]: Gemma 4: https://pastebin.com/Mjm1Vx4C
There's an argument that links are "portals" that take you somewhere, while buttons cause some action to happen, Whether you treat a file as a resource (which your browser just chooses to save on disk instead of rendering on screen), or whether you treat it as an explicit "download" action, is a matter of semantics I guess.
but traditionally, references to files are links, and it is up to the browser what to do with them (whether to just download them or to download and then display them). that's what all links are. that's the whole point of hypertext. every link causes the browser to make a request to a server and fetch something. buttons are for activating things, not for downloading.
Didn't seem worth it, considering the giant footprint in comparison to tmux.
Also, can’t really stand the name.
upfront breaking the basic expectation of having a clickable link is enough for me to know that this piece of software is badly designed and is not worth my time.
I like tmux, but I no longer spend time customizing it for every server I run it on, only to be tripped up on some new server I haven't set-up yet.
Sadly, these issues are low priority for the main dev. Instead they are focusing on things like serving terminal sessions over the web, which is useless to me if I can't use Neovim in it.
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’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.
The OS will typically not kill orphaned/re-parented processes for you. It will simply wait/reap them so they are not left as zombies once they complete. If your parent process spawns something like a daemon server that needs an explicit signal to be stopped (e.g. SIGINT/SIGTERM), these processes will continue to run in the background until they are manually killed or they crash.
However a different process management model is that each parent must in turn signal its child processes to exit, in which case if the parent dies before that can happen you easily get orphan processes. There are use cases for both the process group model and individual signal models, and pros and cons to each.
$ man prctl
man: No entry for prctl in the manual.
Maybe more linux will slop into POSIX and thence into OpenBSD in the fullness of time?I was looking, thank you!
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.
pi.dev keeps complaining that "set -s extended-keys on" is missing, but it still works :D
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.
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.
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.
why did you choose wails btw? did you look at fyne? it's go-native and it seems to have a lot less dependencies.
can the AI integration be turned off? i am not going to use it myself.
is there a chatroom where we can talk through debugging my build problem? github issues? you didn't turn in the discussion forum for ttyphoon like you did for murex. or is there another place where you hang out? hn is not exactly the ideal place to talk through dev issues.
I then switched to Wails because I wanted to add Markdown, Jupyter support. And other things too. Quickly I realised it was too much for me to attempt SDL (even just the markdown parser proved an annoying time sink) on my own. I think the terminal itself is worse for change so there might be a point when I revisit this switch and change my mind again.
There was a brief period when both Wails and SDL were supported front ends. The idea being you could chose one based on a Go compiler tag. But that proved hard to maintain.
There was also a time when the terminal was SDL and Wails just did the markdown stuff. They were different applications that passed messages via a rudimentary IPC. But that resulted in a multi-window hacky mess.
So the current design is the compromise I’ve settled on but will likely change my mind at some point again.
As for the AI, there isn’t any compiler flags to disable it. But it doesn’t work without you supplying an API key anyway. And the integration is just a few menu items so, hopefully, not intrusive. Which would also make it pretty easy to hide those options behind a compiler flag.
I’m happy to chat as a GitHub issue if you’d prefer. I don’t hang out in may other places these days (time constraints)
on AI, i am not concerned about a few menu items, but if we want to consider supply chain attacks as a risk, the less that gets downloaded and built, the better.
i'll open an issue then, i figure this is more for the benefit of other users of ttyphoon, and since this post is originally about tmux we are already off topic anyways.
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 clipboardYou 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-fontsI 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.
In any case it's not practical to carry your dotfiles everywhere you go. Changes are also a hassle to propagate
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 :)
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 :)
For example, leave the existing prefix binding (ctrl-b), but also add something nicer for day-to-day use (ctrl-space or similar).
[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.
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.Seems like they are keeping up-to-date too: https://bookshop.org/p/books/tmux-3-productive-mouse-free-de...
But ... Why not link to the Pragmatic Programmer page for it? https://pragprog.com/titles/bhtmux3/tmux-3-productive-mouse-...
[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.
# 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.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
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(I only run it in my own machines so it never runs as root anyway)
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.
set -g mouse on
for multi-monitor setups setw -g aggressive-resize on
is also really nice.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
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.https://github.com/cmpadden/dotfiles/blob/6e767691a6b1295260...
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...
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.
— 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”.
https://github.com/morantron/tmux-fingers
(disclaimer: I'm the developer of the plugin)
unbind C-b
set-option -g prefix C-Space
bind-key C-Space send-prefixedit: 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.
Very handy when you make a typo far into a long password and can't keep track of whether you've mashed backspace enough.
Interesting...I kinda thought that was 90% of the use case for using tmux.
https://sw.kovidgoyal.net/kitty/sessions/#more-complex-sessi...
It uses libghostty to restore scrollback history and terminal state.
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.
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?
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)
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.
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:
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
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.
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?
set-option -gq status-style "fg=brightblue,overline"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.
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.
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.
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.
I have written about the process here: https://kashifaziz.me/blog/tmux-dev-workflow/
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.
* 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/).
> # 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.
set -g status-right '#[fg=colour39, bg=colour234]#[fg=colour160] #h #[fg=colour088]avg: #(cat /proc/loadavg|cut -d" " -f1-3) '
Switching between sessions with fuzzy finding, and creating new ones when needed, is a wonderful feature.
Btw, you can place tmux config at ~/.config/tmux/tmux.cong. No reason to clutter home dir.
Btw I don’t strictly believe in a gnu screen superiority, i’m just lazy.
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...
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...)
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.
All these newage tmux hippie yuppies can get off my lawn.
# 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
No mention of replacing the weird-ass emacs thing on [ with proper vim bindings?
I just couldn't be bothered to remember all the prefixed commands :)
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 ;)
How can it not work? I think the only even loosely relevant setting on my .tmux.conf is: set -g mouse on
has been working for me for years
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.
“‘-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#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#Chara...>
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.