Skip to content

Instantly share code, notes, and snippets.

@khu-md
Forked from bbqtd/macos-tmux-256color.md
Last active September 28, 2020 01:04
Show Gist options
  • Select an option

  • Save khu-md/ee4e1a59e62938ef34e0f43d041f7505 to your computer and use it in GitHub Desktop.

Select an option

Save khu-md/ee4e1a59e62938ef34e0f43d041f7505 to your computer and use it in GitHub Desktop.
Installing tmux-256color for macOS

Installing tmux-256color for macOS

  • 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.

The Fast Blazing Solution

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.

The Right Way

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"

RGB Colors

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"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment