Skip to content

Instantly share code, notes, and snippets.

@andersevenrud
Last active June 2, 2026 21:16
Show Gist options
  • Select an option

  • Save andersevenrud/015e61af2fd264371032763d4ed965b6 to your computer and use it in GitHub Desktop.

Select an option

Save andersevenrud/015e61af2fd264371032763d4ed965b6 to your computer and use it in GitHub Desktop.
True Color (24-bit) and italics with alacritty + tmux + vim (neovim)

True Color (24-bit) and italics with alacritty + tmux + vim (neovim)

This should make True Color (24-bit) and italics work in your tmux session and vim/neovim when using Alacritty (and should be compatible with any other terminal emulator, including Kitty).

Testing colors

Running this script should look the same in tmux as without.

curl -s https://gist.githubusercontent.com/lifepillar/09a44b8cf0f9397465614e622979107f/raw/24-bit-color.sh >24-bit-color.sh
bash 24-bit-color.sh

colors

Configuration files

โš ๏ธ IMPORTANT โš ๏ธ Don't set $TERM in your shell (zshrc, bashrc, etc.), but your terminal (alacritty).

Alacritty

In ~/.config/alacritty/alacritty.yml:

env:
  TERM: xterm-256color

tmux

In ~/.tmux.conf (or ~/.config/tmux/tmux.conf):

set -g default-terminal "tmux-256color"
set -ag terminal-overrides ",xterm-256color:RGB"

# Or use a wildcard instead of forcing a default mode.
# Some users in the comments of this gist have reported that this work better.
#set -sg terminal-overrides ",*:RGB"

# You can also use the env variable set from the terminal.
# Useful if you share your configuration betweeen systems with a varying value.
#set -ag terminal-overrides ",$TERM:RGB"

vim

In ~/.vimrc:

" You might have to force true color when using regular vim inside tmux as the
" colorscheme can appear to be grayscale with "termguicolors" option enabled.
if !has('gui_running') && &term =~ '^\%(screen\|tmux\)'
  let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum"
  let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum"
endif

syntax on
set termguicolors
colorscheme yourfavcolorscheme

neovim

If you use ~/.vimrc for your nvim configuration, use the above vim example because it's fully compatible.

๐Ÿ’ก neovim recently (Dec 6th 2023) merged some changes that detects termguicolors automatically, so there's no need to set this in an upcoming release. I'll update this notice with a version once released as a public version. This came with the 0.10 release (May 16th 2024).

In ~/.config/nvim/init.vim

set termguicolors
colorscheme yourfavcolorscheme

Or ~/.config/nvim/init.lua:

vim.o.termguicolors = true
vim.cmd'colorscheme yourfavcolorscheme'

Not working correctly ?

Check out the comments below for possible solutions.

And if you found another solution I would really appreciate if you left a comment with instructions and the following information:

  • OS/Distro + version
  • Vim or Neovim + version
  • Terminal name + version

Mentions

Shout-out to the nice folks that provided insightful feedback:

@gcarlos64

Copy link
Copy Markdown

Tried all the things but nothing works

OS: Voidlinux
Alacritty: 0.10.1
Tmux: 3.3a

@wonbinbk

wonbinbk commented Aug 27, 2022

Copy link
Copy Markdown

I followed all your instructions but still in tmux it couldn't display 24-bit color.
However, just by luck I found another guide and the only difference is in this:

set -ag terminal-overrides ",xterm-256color:RGB" -> set -sg terminal-overrides ",*:RGB"

And there we go, I have 24-bit color in tmux.

@fiskhest

fiskhest commented Sep 1, 2022

Copy link
Copy Markdown

I followed all your instructions but still in tmux it couldn't display 24-bit color. However, just by luck I found another guide and the only difference is in this:

set -ag terminal-overrides ",xterm-256color:RGB" -> set -sg terminal-overrides ",*:RGB"

And there we go, I have 24-bit color in tmux.

Same here on arch linux with latest tmux and alacritty. I tried every suggestion in this thread but only after setting set -sg terminal-overrides ",*:RGB" and restarting the tmux server I had true 24b support.

@EriKWDev

Copy link
Copy Markdown

If you have nvim installed, you can open it and type the command :checkhealth and it will give some debugging tips for tmux colors as well

@wangyandongnx

Copy link
Copy Markdown

Thanks so much!

I use iTerm2 and Alacritty at the same time, and the following settings work fine on my machine.

Versions

  • macOS 13.0 Beta
  • iTerm2 3.4.16
  • alacritty 0.10.1
  • tmux 3.3a
  • NVIM 0.8.0-dev

Configurations

  • iTerm2
    Preferences -> Profiles -> Terminal
    
    Terminal Emulation
      Report terminal type: xterm-256color
    
  • Alacritty
    # ~/.config/alacritty/alacritty.yml
    env:
      TERM: xterm-256color
  • Tmux
    # .tmux.conf
    set -g default-terminal "xterm-256color"
    set -ag terminal-overrides ",xterm-256color:RGB"

Thanks! It works for me.

@Mohamed-Ibrahim-01

Copy link
Copy Markdown

Thank you so much, finally it worked ๐ŸŽ‰

This line from the comments helped also set -sg terminal-overrides ",*:RGB"

@andersevenrud

andersevenrud commented Oct 7, 2022

Copy link
Copy Markdown
Author

@wonbinbk I've added your solution to this document as it seems other users have success in using this as well.

Haven't been able to reproduce the issues with original instructions even on the same systems as reported, but it seems like this area is filled with dragons ๐Ÿ˜…

Thanks!

@tobias-edwards

tobias-edwards commented Nov 23, 2022

Copy link
Copy Markdown

This is what worked for me:

alacritty.yml

env:
  TERM: xterm-256color

.tmux.conf

set -g default-terminal 'xterm-256color'
set -as terminal-overrides ',xterm*:Tc:sitm=\E[3m'

Thank you!

  • OS: macOS@12.6.1 (Monterey, M1)

Almost worked perfectly but the terminal override inappropriately rendered \E[3m characters in Neovim, so I ended up fiddling and tweaking using these guides until colours, symbols, bold, italics all worked for me:

@p1xelHer0

p1xelHer0 commented Nov 23, 2022

Copy link
Copy Markdown

This is what worked for me:

alacritty.yml

env:
  TERM: xterm-256color

.tmux.conf

set -g default-terminal 'xterm-256color'
set -as terminal-overrides ',xterm*:Tc:sitm=\E[3m'

Thank you!

This worked for me as well, thanks!

- macOS Monterey @ 12.6.1
- Alacritty      @ 0.11.0
- tmux           @ 3.3a

@matheustanaka

Copy link
Copy Markdown

I followed all your instructions but still in tmux it couldn't display 24-bit color. However, just by luck I found another guide and the only difference is in this:

set -ag terminal-overrides ",xterm-256color:RGB" -> set -sg terminal-overrides ",*:RGB"

And there we go, I have 24-bit color in tmux.

Thanks for that solution!
I'm using pop os with alacritty neovim and tmux, but when I installed tmux, my colors on neovim broken. After put set -sg terminal-overrides ",*:RGB" everything works again.

@mikeslattery

Copy link
Copy Markdown

ssh does not work correctly for one of my other desktops, probably because tmux-256color is unknown to it. I had to SetEnv to my ~/.ssh/config. There might be a better way, but this works well.

Host otherdesktop
  Hostname otherdesktop
  SetEnv TERM=xterm

Ad-hoc alternate: TERM=xterm ssh otherdesktop

@anaetrezve

Copy link
Copy Markdown

Works like charm. Thank you so much

@i6iesma

i6iesma commented Dec 30, 2022

Copy link
Copy Markdown

Thank you!!!

@chalop

chalop commented Jan 10, 2023

Copy link
Copy Markdown

Hi guys, I was following the instruction and I hit another problem. When I change

set -g default-terminal "screen-256color"

to

set -g default-terminal "tmux-256color"

The problem is exactly like this: https://stackoverflow.com/questions/45931164/duplicated-characters-and-non-updating-input-using-tmux-in-zsh I don't know why :(

I am also having this issue, any solutions yet?

@snakejke

snakejke commented Jan 16, 2023

Copy link
Copy Markdown

Not everyone have terminfo "tmux-256color" in /usr/share/terminfo/t/tmux-256color (system-wide) or ~/.terminfo/t/tmux-256color (user only)
So...There is good Guide how to get tmux-256color ------ >>>> https://gist.github.com/bbqtd/a4ac060d6f6b9ea6fe3aabe735aa9d95 ( work for any distro )

@rgurov

rgurov commented Jan 19, 2023

Copy link
Copy Markdown

Thank you!

@dsypasit

Copy link
Copy Markdown

good for me. Love you!

@mndscp

mndscp commented Feb 14, 2023

Copy link
Copy Markdown

set -ag terminal-overrides ",$TERM:RGB"

Thank you!

I only needed to set this one line in my tmux.conf.
Nothing else changed in neither environment variables nor Alacritty config.

Arch Linux, tmux in Alacritty.

Note: When I tried to do this a few times before I might have gotten the solution but I must have missed it because colors didn't update before typing this once and opening a new terminal afterwards: tmux kill-server

@ishanSharma07

Copy link
Copy Markdown

Thank you!!!

OSX, Alacritty, ssh'ed to a remote desktop, neovim inside tmux on the remote desktop.

@sokinpui

sokinpui commented Apr 8, 2023

Copy link
Copy Markdown

I find that when I press backspace inside tmux, it convert to white space. also the color is also inconsisent outside and inside tmux
image

MacOS : 12.6
Vim : 9.0
Alacritty : 0.11.0

inside alacritty.yml:

font:
  normal:
    family: Menlo 

  size: 14.0

Inside .vimrc:

set background=dark
if !has('gui_running') && &term =~ '^\%(screen\|tmux\)'
  let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum"
  let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum"
endif
syntax on
set termguicolors
colorscheme onedark

Inside .tmux.conf:

set -g default-terminal "tmux-256color"
set -ag terminal-overrides ",xterm-256color:RGB"

@napisani

Copy link
Copy Markdown

here is what worked for me
osx 12.1
alacritty 0.11.0
tmux 3.3a

#alacritty.yml 
env:
  TERM: screen-256color
#.tmux.conf
set -g default-terminal "screen-256color"
set -sg terminal-overrides ",*:RGB"
#.vimrc
set termguicolors

@LeFede

LeFede commented May 1, 2023

Copy link
Copy Markdown

I tried every config in this article and still cannot get it to work.

I'm using Arch and Alacritty

image

however, using the default console works

image

any ideas?

EDIT: setting enable_rgb: true in alacritty.yml did the trick

@erenard

erenard commented May 25, 2023

Copy link
Copy Markdown

@LeFede This worked for me with Arch/Alacritty/tmux

alacritty.yaml

env:
  TERM: alacritty-direct

tmux.conf

set-option -a terminal-overrides ",alacritty:RGB"

default-terminal was not needed in the tmux.conf

@huatao76

huatao76 commented Jul 1, 2023

Copy link
Copy Markdown

@LeFede This worked for me with Arch/Alacritty/tmux

alacritty.yaml

env:
  TERM: alacritty-direct

tmux.conf

set-option -a terminal-overrides ",alacritty:RGB"

default-terminal was not needed in the tmux.conf

thank you

@jeremyjjbrown

Copy link
Copy Markdown

None of these work for me on alacritty..

Same stuff every time I try to adopt tmux. Spend an hour trying everything on the internet.

Clipboard is a PITA, OSC52 support doesn't work.
Colors don't work.
Mouse scrolling doesn't work.

It's absurd this tool is so evangelized.

@BhawickJain

BhawickJain commented Jul 17, 2023

Copy link
Copy Markdown

When following these instructions and changing the tmux config, I found that my backspace key created space characters.

this was resolved after restarting tmux server

tmux kill-server

hope this help anyone, thank you for this awesome gist!

--
macOS (11.7.8)
NVIM (0.9.1)
alacritty (0.11.0)
tmux (3.3a)

@djha-skin

Copy link
Copy Markdown

Fedora 38, Konsole + TMux 3.3a + neovim 0.9.1 .
The following worked for me:

set -sa default-terminal "screen-256color"
set -sa terminal-features ",xterm-256color:RGB"

Notably, I could NOT have tmux-256color as my default terminal even though I downloaded it off the internet and so I know I had it on hand. It had to be screen.

@zach-is-my-name

Copy link
Copy Markdown

Not everyone have terminfo "tmux-256color" in /usr/share/terminfo/t/tmux-256color (system-wide) or ~/.terminfo/t/tmux-256color (user only) So...There is good Guide how to get tmux-256color ------ >>>> https://gist.github.com/bbqtd/a4ac060d6f6b9ea6fe3aabe735aa9d95 ( work for any distro )

A little Ai model told me you can use infocmp xterm-256color to check if you have this (the paths quoted above were blank, but infocmp found the terminfo here /lib/terminfo/t/tmux-256color (ubuntu 22.04)

@pavan-kumarv

Copy link
Copy Markdown

This solved my issue as well thanks ๐Ÿ˜Š

@ericragsdale

Copy link
Copy Markdown

OSX Ventura
Alacritty 0.12.2
tmux 3.3a
nvim 0.9.2

Problem

When using neovim within tmux, my colors were off and it would not display italics or undercurls.

Solution

I had trouble with the provided solution, but it pointed me in the right direction. This is what works for me.

alacritty

I left the env: section commented out

tmux.conf

set-option -sa terminal-features ',alacritty:RGB'
set-option -ga terminal-features ",alacritty:usstyle"
set-option -ga terminal-overrides ',alacritty:Tc'
set -g default-terminal "alacritty"

nvim

termguicolors = true

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment