I have 256 colors working just fine in konsole,. I thought I'd give tmux a try because, unlike screen, it seems to support vi mode. However I find that the colors of my prompt show up and this is most likely because I have a 256 color mode prompt. What do I need to do to get tmux to recognize all 256 colors?

  • 2
    tmux -2 I had to do this in terminator and I was somewhat surprised. The -2 flag tells tmux to force the usage of 256 colors ... whether your terminal likes it or not ... dun dun dunnn :P – Dylan Oct 31 '15 at 14:27
up vote 222 down vote accepted

The Tmux FAQ explicitly advises against setting TERM to anything other than screen or screen-256color in your shell init file, so don't do it!

Here's what I use:

~$ which tmux
tmux: aliased to TERM=xterm-256color tmux

and in in my .tmux.conf:

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

Aliasing tmux to "tmux -2" should also do the trick.

  • 4
    I like the way to set it in the .tmux.conf best... using the shell to set it just doesn't seem right – xenoterracide Aug 24 '10 at 5:38
  • 6
    Weird. You don't need tmux -2 on OSX but you need it with Gnome Terminal. Thanks for the info, added to my aliases! – F.X. Dec 8 '12 at 16:53
  • 1
    In Kubuntu 13.10 the .tmux.conf setting alone did not get me my 256 colors back (which took out highlighting in vim visual mode) but the alias worked. Would certainly prefer a .tmux.conf file only solution. – Jacob Dalton Dec 7 '13 at 21:53
  • 1
    ssh'd into an Ubuntu machine (from OS X Terminal), the .tmux.conf default-terminal was all I needed. – duelin markers Mar 13 '14 at 16:19
  • 2
    for me it seems like all I need to do is TERM=screen-256color tmux without creating a .tmux.conf file. Am I missing something? – Joel Ostblom Apr 26 '15 at 12:41

Try setting 256 colors explicitly in your bashrc or zshrc:

export TERM=xterm-256color

or

export TERM=screen-256color

If you have problems with tmux not clearing the background colors correctly when using the screen term setting, you can try:

export TERM=screen-256color-bce
  • 1
    the first one is my default TERM setting... I just tried the other 2 and my prompt still doesn't show colors once I enter tmux. (I would like to note that tmux does show colors at the bottom)... it seems that when I enter tmux that it resets the TERM to TERM=screen... perhaps theres a way to override this in a config? – xenoterracide Aug 23 '10 at 9:17
  • nvm... I guess putting it in a my shell's rc does work... how annoying that it ignores the TERM env variable that's set when I execute tmux... I guess I'll have to put a conditional in my rc. – xenoterracide Aug 23 '10 at 9:21
  • 1
    -bce is not compatible with tmux. Tmux does not support background color erase: – Dustin Kirkland Jan 15 '12 at 14:32
  • 1
    I had this problem with roxterm. Hopefully adding roxterm to this will help people find the same solution that I had. I would end up in vim and selecting lines would make them dissappear. Extremely difficult to search for. roxterm by default sets up with just $TERM=xterm, which is no good. – BeepDog Jul 8 '14 at 1:54
  • 5
    -1, you shouldn't set either unconditionally in your shell initialization file. Setting it to xterm-256color will override it inside tmux as well, and setting it to screen-256color outside of tmux could lead to display bugs. – nyuszika7h Nov 5 '14 at 14:23

As per the tmux FAQ, add this to your ~/.tmux.conf:

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

Then add this alias for tmux:

alias tmux='tmux -2'

No need to override the TERM variable in your profile or when starting tmux.

More information: http://vim.wikia.com/wiki/256_colors_setup_for_console_Vim

  • 2
    Configuring tmux was enough for me; I did not need to set alias (though it probably wouldn't hurt). – anishpatel May 10 '17 at 6:33
  • Configuring tmux alone works for me. The alias was not sufficient. – Harry Moreno Jun 23 at 5:39

The newest version of ncurses ships with a tmux-256color terminfo entry (the FAQ does mention this). As an example, a benefit of using tmux-256color over screen-256color is that italics is properly rendered (screen doesn't support italics).

So if you have the latest ncurses package, the following will work as well:

set -g default-terminal "tmux-256color"
  • I would note that this solution seems to require tmux 2.6 or better – zzxyz Jul 27 at 19:16

This is my solution.... I edit my .bashrc file and adding this

if [ "$TERM" != "xterm-256color" ]; then
      export TERM=xterm-256color
    fi

Hopefully it works in yours

  • 6
    Why bother with the if? You could just set the variable. – joeytwiddle Oct 11 '17 at 5:28

Really important note here if you're running an Ubuntu older than Bionic (18.04). If you're running tmux 2.1 or older, and you probably are, basically no advice you read online about tmux will work..for anything.

tmux -V is an easy test for this. If you see 2.1 or older, you can build tmux from source, or you can add an unofficial repository. I updated my tmux with:

sudo add-apt-repository ppa:/hnakamur/tmux
sudo apt update
sudo apt upgrade

Personally, after upgrading to 2.6, 1) my keys are working better, 2) online advice actually works, 3) my colors are not insane. Big improvement.

(Here's a link to the repository page, btw): https://launchpad.net/~hnakamur

Your Answer

 

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.