I'm trying to set something to gray, but can't figure out how. The only bit of info in the man page about colors I can find is:

message-bg colour
  Set status line message background colour, where colour is one of:
  black, red, green, yellow, blue, magenta, cyan, white, colour0 to
  colour255 from the 256-colour palette, or default.

I also found a blog post which iterates through colors, but I can't quite grok it, and don't want to sit at the terminal all day guessing color numbers until one works.

7 Answers 7


You can get a list with this bash snippet:

for i in {0..255}; do
    printf "\x1b[38;5;${i}mcolour${i}\x1b[0m\n"

Then use colourxxx with tmux.

  • perhaps you need three digit colours? This script outputs like color12 but that is not accepted by tmux as a valid colour. Jan 11, 2013 at 11:49
  • 8
    My tmux (1.6) accepts even colors like colour12 (mind the "u").
    – cYrus
    Jan 11, 2013 at 12:28
  • 1
    @cYrus starting with 3.2, tmux also supports color12 (without the "u")
    – user383438
    Apr 15, 2021 at 18:53

I found this image to be enlightening.

enter image description here

  • 41
    You can create it with for i in {0..255}; do printf "\x1b[38;5;${i}mcolor%-5i\x1b[0m" $i ; if ! (( ($i + 1 ) % 8 )); then echo ; fi ; done Oct 4, 2017 at 11:10
  • 2
    An alternative output that groups the colors after colour15 is generated with for i in {0..255}; do printf "\x1b[38;5;${i}mcolor%-5i\x1b[0m" $i ; if ! (( ($i - 3) % 6 )); then echo ; fi ; done.
    – G-Wiz
    Feb 8, 2023 at 22:48

In Subversion (what will be tmux 1.5) you can also use #abcdef hex-style colours which are mapped to the nearest 256 colour palette entry. You need quotes as it's treated as a string, whereas regular color names are treated as named constants. Also note that 3-letter shorthand (#f00) is invalid.


set pane-active-border-bg red # no quotes for name
set pane-active-border-bg "#ff0000" # quotes for rgb
  • 1
    Can you? I can't see how to...
    – Eric
    Apr 23, 2012 at 18:18
  • 6
    set-option message-bg "#abcdef"; the quotes are necessary.
    – chepner
    May 1, 2012 at 20:05
  • You also seem to have to use the full 6 hex chars, no 3 char shortcuts i.e. #fff will not work, you have to use #ffffff
    – Schlueter
    Dec 9, 2015 at 21:44

Before tmux 3.2 (released in April 2021), tmux only supported the international (British) spelling for the 256 colour palette, e.g.


as opposed to the American spelling that drops the u


If you're using tmux 3.2 or later, you can spell it either way.


Building up on @cYrus' answer, I wrote a script to break the output of the colors into N number of columns, where N is the first argument

# colors.sh

if [ -z $1 ]; then
for i in {0..255} ; do
    printf "\x1b[38;5;${i}mcolour${i} \t"
    if [ $(( i % $BREAK )) -eq $(($BREAK-1)) ] ; then
        printf "\n"

Try it by saving it into a file called colors.sh, then ./colors.sh 4

Don't forget to chmod +x colors.sh first.

  • 4
    Script show-256-colors.sh can be useful to show background colors as well. Aug 2, 2018 at 1:47
  • 1
    You ought to default it to say, at least 4 columns, to distinguish it from the origin script.
    – dbkeys
    Aug 26, 2019 at 13:28

I've been using the xterm-color-table.vim script. Any 256 color terminal color table will work.


I find this function producing the most concise and clear output (it's not mine):

colors () {
    for i in {0..255}
        print -Pn "%K{$i}  %k%F{$i}${(l:3::0:)i}%f " ${${(M)$((i%6)):#3}:+$'\n'}

function output screenshot

Then you use colourXXX where XXX is the three digits code printed above as the value for fg=, bg= etc...

  • 1
    Suggestion: note this script requires zsh.
    – kkahl
    Dec 28, 2021 at 0:38

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .