- macOS 10.15.5
- tmux 3.1b
macOS has ncurses version 5.7 which does not ship the terminfo description for tmux. There are two ways to address this.
Instead of tmux-256color, use screen-256color. Place into ~/.tmux.conf or ~/.config/tmux/tmux.conf(for version 3.1 and later) the following:
set-option default-terminal "screen-256color"
The screen-256color in most cases is enough and the more portable solution. But it does not support any italic font style.
This should put a terminfo.src file in your ~/.terminfo directory where ~ is your $HOME directory.
Unfortunately, The latest (6.2) ncurses version does not work properly. Make sure to use ncurses which comes with macOS:
$ which tic
/usr/bin/tic
If you see another path to terminal info compiler, you must fix the $PATH for a shell, or uninstall a local ncurses by using a package manager.
Let's download and unpack the latest nucurses terminal descriptions:
$ curl -LO https://invisible-island.net/datafiles/current/terminfo.src.gz && gunzip terminfo.src.gz
And compile tmux-256color terminal info. The result is placed into ~/.terminfo:
$ /usr/bin/tic -xe tmux-256color terminfo.src
If you want to use tmux-256color for all users, use sudo. The result is placed into /usr/share/terminfo:
$ sudo /usr/bin/tic -xe tmux-256color terminfo.src
You may also to compile few more infos, it is up to you:
$ /usr/bin/tic -xe alacritty-direct,tmux-256color terminfo.src
If you see something like:
"terminfo.src", line 1650, terminal 'pccon+base': enter_bold_mode but no exit_attribute_mode
"terminfo.src", line 1650, terminal 'pccon+base': enter_reverse_mode but no exit_attribute_mode
do not worry, all should be fine. Make sure that you can use the compiled description:
$ infocmp -x tmux-256color
And finally, set default terminal in tmux configuration file:
set-option default-terminal "tmux-256color"
Also, do not forget to enable RGB colors (24 bit colors, or true colors, as you like). The $TERM outside tmux must support 256 colors. Also, it must contains Tc or RGB flag in terminfo description:
$ tmux info | grep -e RGB -e Tc
If both are missing, then you need to override terminal description in tmux configuration file:
set-option -a terminal-overrides ",XXX:RGB"
where XXX is a terminal outside tmux, like xterm-256color. And finally, terminal-overrides suports a pattern matching:
set-option -a terminal-overrides ",*256col*:RGB"
If you use Alacritty terminal, make sure the $TERM outside tmux is alacritty-direct. The alacritty terminal description does not have RGB flag. Otherwise, override description:
set-option -a terminal-overrides ",alacritty:RGB"